From 5fda2d6d8c6ffc40bfe5b5f31ba25a8fb7f403a8 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Mon, 9 Mar 2026 11:38:43 +0330 Subject: [PATCH] init --- .github/workflows/deploy.yaml | 49 + .gitignore | 58 + .prettierrc | 16 + .vscode/settings.json | 15 + Dockerfile | 79 + README.md | 98 + database/migrations/.snapshot-postgres.json | 5645 ++ .../migrations/Migration20260105085439.ts | 27 + .../migrations/Migration20260106054151.ts | 23 + .../migrations/Migration20260106192946.ts | 14 + .../migrations/Migration20260226063544.ts | 19 + dump/README_icons.md | 41 + dump/dmenu_db.foodcategories.json | 7992 ++ dump/dmenu_db.foods.json | 82062 ++++++++++++++++ dump/dmenu_db.storeinfos.json | 1892 + dump/dump-icons.sh | 80 + dump/icon_viewer.html | 312 + dump/icons.csv | 138 + dump/icons_dump_20251224_233800.sql | 205 + dump/named_icons.csv | 138 + dump/populate_icon_names.js | 58 + dump/restore-icons.sh | 95 + eslint.config.mjs | 36 + nest-cli.json | 8 + package-lock.json | 17122 ++++ package.json | 124 + pnpm-lock.yaml | 14002 +++ readme.md | 1 + src/app.module.ts | 67 + src/common/constants/index.ts | 20 + src/common/decorators/admin-id.decorator.ts | 18 + src/common/decorators/index.ts | 3 + .../decorators/permissions.decorator.ts | 5 + src/common/decorators/rate-limit.decorator.ts | 18 + src/common/decorators/rest-id.decorator.ts | 18 + src/common/decorators/rest-slug.decorator.ts | 7 + src/common/decorators/user-id.decorator.ts | 18 + src/common/entities/base.entity.ts | 25 + src/common/enums/message.enum.ts | 781 + src/common/enums/permission.enum.ts | 63 + src/common/interfaces/pagination.interface.ts | 9 + .../providers/mikro-orm-logger.provider.ts | 9 + src/config/cache.config.ts | 27 + src/config/http.config.ts | 16 + src/config/mikro-orm.config.dev.ts | 101 + src/config/mikro-orm.config.ts | 109 + src/config/swagger.config.ts | 27 + src/core/exceptions/http.exceptions.ts | 48 + .../interceptors/pagination.interceptor.ts | 61 + src/core/interceptors/response.interceptor.ts | 68 + src/core/middlewares/logger.middleware.ts | 26 + src/main.ts | 61 + src/modules/admin/admin.module.ts | 27 + .../admin/controllers/admin.controller.ts | 104 + src/modules/admin/dto/create-admin.dto.ts | 24 + .../dto/create-my-restaurant-admin.dto.ts | 24 + src/modules/admin/dto/update-admin.dto.ts | 4 + src/modules/admin/entities/admin.entity.ts | 31 + .../admin/entities/adminRole.entity.ts | 21 + src/modules/admin/providers/admin.service.ts | 203 + .../repositories/admin-role.repository.ts | 13 + .../admin/repositories/admin.repository.ts | 58 + .../transformers/admin-detail.transformer.ts | 22 + src/modules/auth/auth.module.ts | 45 + .../auth/controllers/auth.controller.ts | 71 + src/modules/auth/dto/direct-login.dto.ts | 15 + src/modules/auth/dto/refresh-token.dto.ts | 9 + src/modules/auth/dto/request-otp.dto.ts | 15 + src/modules/auth/dto/verify-otp.dto.ts | 21 + .../auth/entities/refresh-token.entity.ts | 29 + src/modules/auth/guards/adminAuth.guard.ts | 120 + src/modules/auth/guards/auth.guard.ts | 72 + src/modules/auth/guards/optinalAuth.guard.ts | 94 + .../auth/guards/superAdminAuth.guard.ts | 66 + src/modules/auth/interfaces/IToken-payload.ts | 10 + src/modules/auth/services/auth.service.ts | 144 + src/modules/auth/services/tokens.service.ts | 145 + .../transformers/admin-login.transformer.ts | 93 + .../transformers/user-login.transformer.ts | 33 + src/modules/cart/cart.module.ts | 53 + .../cart/controllers/cart.controller.ts | 92 + src/modules/cart/dto/apply-coupon.dto.ts | 9 + src/modules/cart/dto/bulk-add-items.dto.ts | 34 + src/modules/cart/dto/create-cart.dto.ts | 29 + .../cart/dto/set-all-cart-params.dto.ts | 40 + src/modules/cart/dto/set-car-delivery.dto.ts | 19 + src/modules/cart/dto/update-cart.dto.ts | 9 + src/modules/cart/interfaces/cart.interface.ts | 38 + .../providers/cart-calculation.service.ts | 244 + .../cart/providers/cart-item.service.ts | 113 + .../cart/providers/cart-validation.service.ts | 422 + src/modules/cart/providers/cart.service.ts | 487 + .../cart/repositories/cart.repository.ts | 81 + src/modules/cart/utils/geographic.utils.ts | 68 + src/modules/contact/contact.module.ts | 15 + .../contact/controllers/contact.controller.ts | 108 + src/modules/contact/dto/create-contact.dto.ts | 26 + src/modules/contact/dto/find-contacts.dto.ts | 42 + .../contact/dto/update-contact-status.dto.ts | 10 + src/modules/contact/dto/update-contact.dto.ts | 4 + .../contact/entities/contact.entity.ts | 26 + src/modules/contact/interface/interface.ts | 9 + .../contact/providers/contact.service.ts | 108 + .../repositories/contact.repository.ts | 69 + .../coupons/controllers/coupon.controller.ts | 112 + src/modules/coupons/coupon.module.ts | 17 + src/modules/coupons/dto/create-coupon.dto.ts | 115 + src/modules/coupons/dto/find-coupons.dto.ts | 44 + src/modules/coupons/dto/update-coupon.dto.ts | 4 + .../coupons/dto/validate-coupon.dto.ts | 21 + src/modules/coupons/entities/coupon.entity.ts | 71 + src/modules/coupons/interface/coupon.ts | 4 + .../coupons/providers/coupon.service.ts | 271 + .../coupons/repositories/coupon.repository.ts | 66 + .../controllers/delivery.controller.ts | 88 + src/modules/delivery/delivery.module.ts | 16 + .../delivery/dto/create-delivery.dto.ts | 60 + .../delivery/dto/update-delivery.dto.ts | 4 + .../delivery/entities/delivery.entity.ts | 37 + src/modules/delivery/interface/delivery.ts | 11 + .../delivery/providers/delivery.service.ts | 115 + .../repositories/delivery.repository.ts | 10 + .../foods/controllers/category.controller.ts | 89 + .../foods/controllers/food.controller.ts | 123 + src/modules/foods/crone/food.crone.ts | 45 + src/modules/foods/dto/create-category.dto.ts | 27 + src/modules/foods/dto/create-food.dto.ts | 122 + src/modules/foods/dto/find-foods.dto.ts | 43 + src/modules/foods/dto/update-category.dto.ts | 4 + src/modules/foods/dto/update-food.dto.ts | 4 + src/modules/foods/entities/category.entity.ts | 27 + src/modules/foods/entities/favorite.entity.ts | 14 + src/modules/foods/entities/food.entity.ts | 77 + src/modules/foods/food.module.ts | 30 + src/modules/foods/interface/food.interface.ts | 6 + .../foods/providers/category.service.ts | 81 + src/modules/foods/providers/food.service.ts | 273 + .../foods/repositories/category.repository.ts | 10 + .../foods/repositories/food.repository.ts | 68 + .../icons/controllers/icons.controller.ts | 114 + src/modules/icons/dto/create-group.dto.ts | 9 + src/modules/icons/dto/create-icon.dto.ts | 12 + src/modules/icons/dto/update-group.dto.ts | 5 + src/modules/icons/dto/update-icon.dto.ts | 4 + src/modules/icons/entities/group.entity.ts | 15 + src/modules/icons/entities/icon.entity.ts | 13 + src/modules/icons/icons.module.ts | 18 + src/modules/icons/providers/group.service.ts | 56 + src/modules/icons/providers/icon.service.ts | 76 + .../icons/repositories/group.repository.ts | 10 + .../icons/repositories/icon.repository.ts | 10 + .../inventory/dto/bulk-reserve-food.dto.ts | 34 + .../inventory/dto/bulk-set-stock.dto.ts | 27 + .../inventory/dto/create-inventory.dto.ts | 1 + src/modules/inventory/dto/set-stock.dto.ts | 17 + .../inventory/entities/inventory.entity.ts | 18 + src/modules/inventory/inteface/reservation.ts | 6 + src/modules/inventory/inventory.controller.ts | 38 + src/modules/inventory/inventory.module.ts | 15 + src/modules/inventory/inventory.service.ts | 227 + src/modules/notifications/constants/queue.ts | 5 + .../controllers/notifications.controller.ts | 196 + .../notifications/crone/notification.crone.ts | 46 + .../decorators/ws-rest-id.decorator.ts | 26 + .../dto/create-notification.dto.ts | 40 + .../dto/create-preference.dto.ts | 24 + .../dto/send-notification.dto.ts | 38 + .../dto/update-preference.dto.ts | 15 + .../notification-preference.entity.ts | 18 + .../entities/notification.entity.ts | 27 + .../notifications/entities/smsLogs.entity.ts | 17 + .../notifications/events/sms.events.ts | 7 + .../guards/ws-admin-auth.guard.ts | 125 + .../interfaces/jobs-queue.interface.ts | 32 + .../interfaces/notification.interface.ts | 76 + src/modules/notifications/interfaces/sms.ts | 16 + .../notifications/listeners/sms.listeners.ts | 55 + .../notifications/notifications.gateway.ts | 115 + .../notifications/notifications.module.ts | 76 + .../processors/in-app.processor.ts | 50 + .../processors/push.processor.ts | 96 + .../notifications/processors/sms.processor.ts | 81 + .../repositories/sms-log.repository.ts | 76 + .../notification-preference.service.ts | 85 + .../services/notification-queue.service.ts | 145 + .../services/notification.service.ts | 282 + .../services/push-notification.service.ts | 148 + .../notifications/services/sms.service.ts | 80 + .../orders/controllers/orders.controller.ts | 120 + src/modules/orders/crone/order.crone.ts | 187 + src/modules/orders/dto/find-orders.dto.ts | 83 + .../orders/dto/update-order-status.dto.ts | 10 + src/modules/orders/dto/update-order.dto.ts | 5 + .../orders/entities/order-item.entity.ts | 27 + src/modules/orders/entities/order.entity.ts | 130 + src/modules/orders/events/order.events.ts | 22 + .../orders/interface/order.interface.ts | 42 + .../orders/listeners/order.listeners.ts | 184 + src/modules/orders/orders.module.ts | 42 + .../orders/providers/orders.service.ts | 601 + .../orders/repositories/order.repository.ts | 184 + .../pager/controllers/pager.controller.ts | 101 + .../pager/decorators/ws-admin-id.decorator.ts | 26 + .../pager/decorators/ws-rest-id.decorator.ts | 26 + src/modules/pager/dto/create-pager.dto.ts | 15 + .../pager/dto/pager-socket-connection.dto.ts | 208 + src/modules/pager/dto/update-pager.dto.ts | 10 + src/modules/pager/entities/pager.entity.ts | 30 + src/modules/pager/events/pager.events.ts | 6 + .../pager/guards/ws-admin-auth.guard.ts | 104 + src/modules/pager/interface/pager.ts | 6 + .../pager/listeners/notification.listeners.ts | 64 + src/modules/pager/pager.module.ts | 17 + src/modules/pager/providers/pager.service.ts | 115 + .../controllers/payments.controller.ts | 143 + .../payments/dto/create-payment-method.dto.ts | 35 + src/modules/payments/dto/payment-chart.dto.ts | 41 + .../payments/dto/update-payment-method.dto.ts | 4 + .../payments/dto/update-payment.dto.ts | 8 + .../payments/dto/verify-payment.dto.ts | 12 + .../entities/payment-method.entity.ts | 30 + .../payments/entities/payment.entity.ts | 44 + src/modules/payments/events/payment.events.ts | 23 + .../payments/gateways/gateway.manager.ts | 20 + .../payments/gateways/zarinpal.gateway.ts | 158 + src/modules/payments/interface/gateway.ts | 70 + src/modules/payments/interface/payment.ts | 33 + .../payments/listeners/payment.listeners.ts | 170 + src/modules/payments/payments.module.ts | 36 + .../repositories/payment-method.repository.ts | 10 + .../repositories/payment.repository.ts | 10 + .../services/payment-method.service.ts | 63 + .../payments/services/payments.service.ts | 442 + .../controllers/restaurants.controller.ts | 134 + .../controllers/schedule.controller.ts | 107 + .../restaurants/crone/restaurant.crone.ts | 50 + .../restaurants/dto/create-restaurant.dto.ts | 54 + .../restaurants/dto/create-schedule.dto.ts | 32 + .../restaurants/dto/find-restaurants.dto.ts | 73 + .../restaurants/dto/find-schedules.dto.ts | 16 + .../dto/restaurant-specification.dto.ts | 92 + .../restaurants/dto/update-restaurant.dto.ts | 4 + .../restaurants/dto/update-schedule.dto.ts | 4 + .../dto/upgrade-subscription.dto.ts | 15 + .../restaurants/entities/restaurant.entity.ts | 112 + .../restaurants/entities/schedule.entity.ts | 20 + .../restaurants/interface/plan.interface.ts | 4 + .../providers/restaurants.service.ts | 281 + .../restaurants/providers/schedule.service.ts | 122 + .../repositories/rest.repository.ts | 79 + .../repositories/schedule.repository.ts | 10 + src/modules/restaurants/restaurants.module.ts | 21 + .../review/controllers/review.controller.ts | 165 + src/modules/review/dto/change-status.dto.ts | 13 + src/modules/review/dto/create-review.dto.ts | 51 + src/modules/review/dto/find-reviews.dto.ts | 55 + src/modules/review/dto/update-review.dto.ts | 45 + src/modules/review/entities/review.entity.ts | 39 + src/modules/review/enums/review-point.enum.ts | 15 + .../review/enums/review-status.enum.ts | 5 + src/modules/review/events/review.events.ts | 13 + .../review/listeners/review.listeners.ts | 77 + .../providers/food-rating-cron.service.ts | 77 + .../review/providers/review.service.ts | 219 + .../review/repositories/review.repository.ts | 71 + src/modules/review/review.module.ts | 22 + .../roles/controllers/roles.controller.ts | 93 + src/modules/roles/dto/create-role.dto.ts | 14 + src/modules/roles/dto/update-role.dto.ts | 14 + .../roles/entities/permission.entity.ts | 17 + src/modules/roles/entities/role.entity.ts | 25 + .../roles/entities/rolePermission.entity.ts | 16 + .../roles/providers/permissions.service.ts | 105 + src/modules/roles/providers/roles.service.ts | 134 + src/modules/roles/roles.module.ts | 20 + src/modules/uploader/DTO/upload-file.dto.ts | 19 + .../controllers/uploader.controller.ts | 57 + .../uploader/interfaces/file.interface.ts | 41 + .../uploader/interfaces/s3.interface.ts | 37 + src/modules/uploader/providers/s3.service.ts | 173 + .../uploader/providers/uploader.service.ts | 133 + src/modules/uploader/uploader.module.ts | 14 + .../users/controllers/users.controller.ts | 183 + .../users/dto/create-user-address.dto.ts | 51 + .../dto/create-wallet-transaction.dto.ts | 34 + src/modules/users/dto/find-user.dto.ts | 80 + .../users/dto/find-wallet-transactions.dto.ts | 136 + .../users/dto/update-user-address.dto.ts | 56 + src/modules/users/dto/update-user.dto.ts | 35 + .../entities/point-transaction.entity.ts | 30 + .../users/entities/user-address.entity.ts | 36 + src/modules/users/entities/user.entity.ts | 53 + .../entities/wallet-transaction.entity.ts | 29 + src/modules/users/interface/point.ts | 10 + src/modules/users/interface/wallet.ts | 13 + src/modules/users/providers/user.service.ts | 388 + src/modules/users/providers/wallet.service.ts | 183 + .../point-transaction.repository.ts | 17 + .../users/repositories/user.repository.ts | 10 + .../wallet-transaction.repository.ts | 21 + src/modules/users/user.module.ts | 26 + src/modules/utils/cache.service.ts | 52 + src/modules/utils/phone.util.ts | 30 + src/modules/utils/sanitize.util.ts | 20 + src/modules/utils/utils.module.ts | 11 + src/seeders/DatabaseSeeder.ts | 117 + src/seeders/admins.seeder.ts | 42 + src/seeders/categories.seeder.ts | 395 + src/seeders/coupons.seeder.ts | 42 + src/seeders/data/admins.data.ts | 38 + src/seeders/data/categories.data.ts | 430 + src/seeders/data/coupons.data.ts | 94 + src/seeders/data/delivery-methods.data.ts | 45 + src/seeders/data/foods.data.ts | 34147 +++++++ .../data/notification-preferences.data.ts | 29 + src/seeders/data/payment-methods.data.ts | 35 + src/seeders/data/permissions.data.ts | 10 + src/seeders/data/restaurants.data.ts | 919 + src/seeders/data/roles.data.ts | 37 + src/seeders/data/schedules.data.ts | 10 + src/seeders/data/user-addresses.data.ts | 63 + src/seeders/data/users.data.ts | 63 + src/seeders/delivery-methods.seeder.ts | 52 + src/seeders/foods.seeder.ts | 73 + src/seeders/index.ts | 4 + src/seeders/inventory.seeder.ts | 29 + .../notification-preferences.seeder.ts | 36 + src/seeders/notifications.seeder.ts | 68 + src/seeders/payment-methods.seeder.ts | 52 + src/seeders/permissions.seeder.ts | 28 + src/seeders/restaurants.seeder.ts | 26 + src/seeders/roles.seeder.ts | 35 + src/seeders/schedules.seeder.ts | 38 + src/seeders/user-wallets.seeder.ts | 36 + src/seeders/users.seeder.ts | 78 + test-notifications-socket.html | 561 + test-pager-socket.html | 494 + tsconfig.build.json | 4 + tsconfig.json | 28 + 339 files changed, 186841 insertions(+) create mode 100644 .github/workflows/deploy.yaml create mode 100644 .gitignore create mode 100644 .prettierrc create mode 100644 .vscode/settings.json create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 database/migrations/.snapshot-postgres.json create mode 100644 database/migrations/Migration20260105085439.ts create mode 100644 database/migrations/Migration20260106054151.ts create mode 100644 database/migrations/Migration20260106192946.ts create mode 100644 database/migrations/Migration20260226063544.ts create mode 100644 dump/README_icons.md create mode 100644 dump/dmenu_db.foodcategories.json create mode 100644 dump/dmenu_db.foods.json create mode 100644 dump/dmenu_db.storeinfos.json create mode 100755 dump/dump-icons.sh create mode 100644 dump/icon_viewer.html create mode 100644 dump/icons.csv create mode 100644 dump/icons_dump_20251224_233800.sql create mode 100644 dump/named_icons.csv create mode 100644 dump/populate_icon_names.js create mode 100755 dump/restore-icons.sh create mode 100644 eslint.config.mjs create mode 100644 nest-cli.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 readme.md create mode 100644 src/app.module.ts create mode 100755 src/common/constants/index.ts create mode 100644 src/common/decorators/admin-id.decorator.ts create mode 100644 src/common/decorators/index.ts create mode 100644 src/common/decorators/permissions.decorator.ts create mode 100644 src/common/decorators/rate-limit.decorator.ts create mode 100644 src/common/decorators/rest-id.decorator.ts create mode 100644 src/common/decorators/rest-slug.decorator.ts create mode 100644 src/common/decorators/user-id.decorator.ts create mode 100755 src/common/entities/base.entity.ts create mode 100755 src/common/enums/message.enum.ts create mode 100644 src/common/enums/permission.enum.ts create mode 100644 src/common/interfaces/pagination.interface.ts create mode 100644 src/common/providers/mikro-orm-logger.provider.ts create mode 100755 src/config/cache.config.ts create mode 100755 src/config/http.config.ts create mode 100644 src/config/mikro-orm.config.dev.ts create mode 100644 src/config/mikro-orm.config.ts create mode 100644 src/config/swagger.config.ts create mode 100755 src/core/exceptions/http.exceptions.ts create mode 100755 src/core/interceptors/pagination.interceptor.ts create mode 100755 src/core/interceptors/response.interceptor.ts create mode 100755 src/core/middlewares/logger.middleware.ts create mode 100644 src/main.ts create mode 100644 src/modules/admin/admin.module.ts create mode 100644 src/modules/admin/controllers/admin.controller.ts create mode 100644 src/modules/admin/dto/create-admin.dto.ts create mode 100644 src/modules/admin/dto/create-my-restaurant-admin.dto.ts create mode 100644 src/modules/admin/dto/update-admin.dto.ts create mode 100644 src/modules/admin/entities/admin.entity.ts create mode 100644 src/modules/admin/entities/adminRole.entity.ts create mode 100644 src/modules/admin/providers/admin.service.ts create mode 100644 src/modules/admin/repositories/admin-role.repository.ts create mode 100644 src/modules/admin/repositories/admin.repository.ts create mode 100644 src/modules/admin/transformers/admin-detail.transformer.ts create mode 100644 src/modules/auth/auth.module.ts create mode 100644 src/modules/auth/controllers/auth.controller.ts create mode 100644 src/modules/auth/dto/direct-login.dto.ts create mode 100755 src/modules/auth/dto/refresh-token.dto.ts create mode 100644 src/modules/auth/dto/request-otp.dto.ts create mode 100644 src/modules/auth/dto/verify-otp.dto.ts create mode 100644 src/modules/auth/entities/refresh-token.entity.ts create mode 100644 src/modules/auth/guards/adminAuth.guard.ts create mode 100644 src/modules/auth/guards/auth.guard.ts create mode 100644 src/modules/auth/guards/optinalAuth.guard.ts create mode 100644 src/modules/auth/guards/superAdminAuth.guard.ts create mode 100755 src/modules/auth/interfaces/IToken-payload.ts create mode 100644 src/modules/auth/services/auth.service.ts create mode 100755 src/modules/auth/services/tokens.service.ts create mode 100644 src/modules/auth/transformers/admin-login.transformer.ts create mode 100644 src/modules/auth/transformers/user-login.transformer.ts create mode 100644 src/modules/cart/cart.module.ts create mode 100644 src/modules/cart/controllers/cart.controller.ts create mode 100644 src/modules/cart/dto/apply-coupon.dto.ts create mode 100644 src/modules/cart/dto/bulk-add-items.dto.ts create mode 100644 src/modules/cart/dto/create-cart.dto.ts create mode 100644 src/modules/cart/dto/set-all-cart-params.dto.ts create mode 100644 src/modules/cart/dto/set-car-delivery.dto.ts create mode 100644 src/modules/cart/dto/update-cart.dto.ts create mode 100644 src/modules/cart/interfaces/cart.interface.ts create mode 100644 src/modules/cart/providers/cart-calculation.service.ts create mode 100644 src/modules/cart/providers/cart-item.service.ts create mode 100644 src/modules/cart/providers/cart-validation.service.ts create mode 100644 src/modules/cart/providers/cart.service.ts create mode 100644 src/modules/cart/repositories/cart.repository.ts create mode 100644 src/modules/cart/utils/geographic.utils.ts create mode 100644 src/modules/contact/contact.module.ts create mode 100644 src/modules/contact/controllers/contact.controller.ts create mode 100644 src/modules/contact/dto/create-contact.dto.ts create mode 100644 src/modules/contact/dto/find-contacts.dto.ts create mode 100644 src/modules/contact/dto/update-contact-status.dto.ts create mode 100644 src/modules/contact/dto/update-contact.dto.ts create mode 100644 src/modules/contact/entities/contact.entity.ts create mode 100644 src/modules/contact/interface/interface.ts create mode 100644 src/modules/contact/providers/contact.service.ts create mode 100644 src/modules/contact/repositories/contact.repository.ts create mode 100644 src/modules/coupons/controllers/coupon.controller.ts create mode 100644 src/modules/coupons/coupon.module.ts create mode 100644 src/modules/coupons/dto/create-coupon.dto.ts create mode 100644 src/modules/coupons/dto/find-coupons.dto.ts create mode 100644 src/modules/coupons/dto/update-coupon.dto.ts create mode 100644 src/modules/coupons/dto/validate-coupon.dto.ts create mode 100644 src/modules/coupons/entities/coupon.entity.ts create mode 100644 src/modules/coupons/interface/coupon.ts create mode 100644 src/modules/coupons/providers/coupon.service.ts create mode 100644 src/modules/coupons/repositories/coupon.repository.ts create mode 100644 src/modules/delivery/controllers/delivery.controller.ts create mode 100644 src/modules/delivery/delivery.module.ts create mode 100644 src/modules/delivery/dto/create-delivery.dto.ts create mode 100644 src/modules/delivery/dto/update-delivery.dto.ts create mode 100644 src/modules/delivery/entities/delivery.entity.ts create mode 100644 src/modules/delivery/interface/delivery.ts create mode 100644 src/modules/delivery/providers/delivery.service.ts create mode 100644 src/modules/delivery/repositories/delivery.repository.ts create mode 100644 src/modules/foods/controllers/category.controller.ts create mode 100644 src/modules/foods/controllers/food.controller.ts create mode 100644 src/modules/foods/crone/food.crone.ts create mode 100644 src/modules/foods/dto/create-category.dto.ts create mode 100644 src/modules/foods/dto/create-food.dto.ts create mode 100644 src/modules/foods/dto/find-foods.dto.ts create mode 100644 src/modules/foods/dto/update-category.dto.ts create mode 100644 src/modules/foods/dto/update-food.dto.ts create mode 100644 src/modules/foods/entities/category.entity.ts create mode 100644 src/modules/foods/entities/favorite.entity.ts create mode 100644 src/modules/foods/entities/food.entity.ts create mode 100644 src/modules/foods/food.module.ts create mode 100644 src/modules/foods/interface/food.interface.ts create mode 100644 src/modules/foods/providers/category.service.ts create mode 100644 src/modules/foods/providers/food.service.ts create mode 100644 src/modules/foods/repositories/category.repository.ts create mode 100644 src/modules/foods/repositories/food.repository.ts create mode 100644 src/modules/icons/controllers/icons.controller.ts create mode 100644 src/modules/icons/dto/create-group.dto.ts create mode 100644 src/modules/icons/dto/create-icon.dto.ts create mode 100644 src/modules/icons/dto/update-group.dto.ts create mode 100644 src/modules/icons/dto/update-icon.dto.ts create mode 100644 src/modules/icons/entities/group.entity.ts create mode 100644 src/modules/icons/entities/icon.entity.ts create mode 100644 src/modules/icons/icons.module.ts create mode 100644 src/modules/icons/providers/group.service.ts create mode 100644 src/modules/icons/providers/icon.service.ts create mode 100644 src/modules/icons/repositories/group.repository.ts create mode 100644 src/modules/icons/repositories/icon.repository.ts create mode 100644 src/modules/inventory/dto/bulk-reserve-food.dto.ts create mode 100644 src/modules/inventory/dto/bulk-set-stock.dto.ts create mode 100644 src/modules/inventory/dto/create-inventory.dto.ts create mode 100644 src/modules/inventory/dto/set-stock.dto.ts create mode 100644 src/modules/inventory/entities/inventory.entity.ts create mode 100644 src/modules/inventory/inteface/reservation.ts create mode 100644 src/modules/inventory/inventory.controller.ts create mode 100644 src/modules/inventory/inventory.module.ts create mode 100644 src/modules/inventory/inventory.service.ts create mode 100644 src/modules/notifications/constants/queue.ts create mode 100644 src/modules/notifications/controllers/notifications.controller.ts create mode 100644 src/modules/notifications/crone/notification.crone.ts create mode 100644 src/modules/notifications/decorators/ws-rest-id.decorator.ts create mode 100644 src/modules/notifications/dto/create-notification.dto.ts create mode 100644 src/modules/notifications/dto/create-preference.dto.ts create mode 100644 src/modules/notifications/dto/send-notification.dto.ts create mode 100644 src/modules/notifications/dto/update-preference.dto.ts create mode 100644 src/modules/notifications/entities/notification-preference.entity.ts create mode 100644 src/modules/notifications/entities/notification.entity.ts create mode 100644 src/modules/notifications/entities/smsLogs.entity.ts create mode 100644 src/modules/notifications/events/sms.events.ts create mode 100644 src/modules/notifications/guards/ws-admin-auth.guard.ts create mode 100644 src/modules/notifications/interfaces/jobs-queue.interface.ts create mode 100644 src/modules/notifications/interfaces/notification.interface.ts create mode 100644 src/modules/notifications/interfaces/sms.ts create mode 100644 src/modules/notifications/listeners/sms.listeners.ts create mode 100644 src/modules/notifications/notifications.gateway.ts create mode 100644 src/modules/notifications/notifications.module.ts create mode 100644 src/modules/notifications/processors/in-app.processor.ts create mode 100644 src/modules/notifications/processors/push.processor.ts create mode 100644 src/modules/notifications/processors/sms.processor.ts create mode 100644 src/modules/notifications/repositories/sms-log.repository.ts create mode 100644 src/modules/notifications/services/notification-preference.service.ts create mode 100644 src/modules/notifications/services/notification-queue.service.ts create mode 100644 src/modules/notifications/services/notification.service.ts create mode 100644 src/modules/notifications/services/push-notification.service.ts create mode 100644 src/modules/notifications/services/sms.service.ts create mode 100644 src/modules/orders/controllers/orders.controller.ts create mode 100644 src/modules/orders/crone/order.crone.ts create mode 100644 src/modules/orders/dto/find-orders.dto.ts create mode 100644 src/modules/orders/dto/update-order-status.dto.ts create mode 100644 src/modules/orders/dto/update-order.dto.ts create mode 100644 src/modules/orders/entities/order-item.entity.ts create mode 100644 src/modules/orders/entities/order.entity.ts create mode 100644 src/modules/orders/events/order.events.ts create mode 100644 src/modules/orders/interface/order.interface.ts create mode 100644 src/modules/orders/listeners/order.listeners.ts create mode 100644 src/modules/orders/orders.module.ts create mode 100644 src/modules/orders/providers/orders.service.ts create mode 100644 src/modules/orders/repositories/order.repository.ts create mode 100644 src/modules/pager/controllers/pager.controller.ts create mode 100644 src/modules/pager/decorators/ws-admin-id.decorator.ts create mode 100644 src/modules/pager/decorators/ws-rest-id.decorator.ts create mode 100644 src/modules/pager/dto/create-pager.dto.ts create mode 100644 src/modules/pager/dto/pager-socket-connection.dto.ts create mode 100644 src/modules/pager/dto/update-pager.dto.ts create mode 100644 src/modules/pager/entities/pager.entity.ts create mode 100644 src/modules/pager/events/pager.events.ts create mode 100644 src/modules/pager/guards/ws-admin-auth.guard.ts create mode 100644 src/modules/pager/interface/pager.ts create mode 100644 src/modules/pager/listeners/notification.listeners.ts create mode 100644 src/modules/pager/pager.module.ts create mode 100644 src/modules/pager/providers/pager.service.ts create mode 100644 src/modules/payments/controllers/payments.controller.ts create mode 100644 src/modules/payments/dto/create-payment-method.dto.ts create mode 100644 src/modules/payments/dto/payment-chart.dto.ts create mode 100644 src/modules/payments/dto/update-payment-method.dto.ts create mode 100644 src/modules/payments/dto/update-payment.dto.ts create mode 100644 src/modules/payments/dto/verify-payment.dto.ts create mode 100644 src/modules/payments/entities/payment-method.entity.ts create mode 100644 src/modules/payments/entities/payment.entity.ts create mode 100644 src/modules/payments/events/payment.events.ts create mode 100644 src/modules/payments/gateways/gateway.manager.ts create mode 100755 src/modules/payments/gateways/zarinpal.gateway.ts create mode 100644 src/modules/payments/interface/gateway.ts create mode 100644 src/modules/payments/interface/payment.ts create mode 100644 src/modules/payments/listeners/payment.listeners.ts create mode 100644 src/modules/payments/payments.module.ts create mode 100644 src/modules/payments/repositories/payment-method.repository.ts create mode 100644 src/modules/payments/repositories/payment.repository.ts create mode 100644 src/modules/payments/services/payment-method.service.ts create mode 100644 src/modules/payments/services/payments.service.ts create mode 100644 src/modules/restaurants/controllers/restaurants.controller.ts create mode 100644 src/modules/restaurants/controllers/schedule.controller.ts create mode 100644 src/modules/restaurants/crone/restaurant.crone.ts create mode 100644 src/modules/restaurants/dto/create-restaurant.dto.ts create mode 100644 src/modules/restaurants/dto/create-schedule.dto.ts create mode 100644 src/modules/restaurants/dto/find-restaurants.dto.ts create mode 100644 src/modules/restaurants/dto/find-schedules.dto.ts create mode 100644 src/modules/restaurants/dto/restaurant-specification.dto.ts create mode 100644 src/modules/restaurants/dto/update-restaurant.dto.ts create mode 100644 src/modules/restaurants/dto/update-schedule.dto.ts create mode 100644 src/modules/restaurants/dto/upgrade-subscription.dto.ts create mode 100644 src/modules/restaurants/entities/restaurant.entity.ts create mode 100644 src/modules/restaurants/entities/schedule.entity.ts create mode 100644 src/modules/restaurants/interface/plan.interface.ts create mode 100644 src/modules/restaurants/providers/restaurants.service.ts create mode 100644 src/modules/restaurants/providers/schedule.service.ts create mode 100644 src/modules/restaurants/repositories/rest.repository.ts create mode 100644 src/modules/restaurants/repositories/schedule.repository.ts create mode 100644 src/modules/restaurants/restaurants.module.ts create mode 100644 src/modules/review/controllers/review.controller.ts create mode 100644 src/modules/review/dto/change-status.dto.ts create mode 100644 src/modules/review/dto/create-review.dto.ts create mode 100644 src/modules/review/dto/find-reviews.dto.ts create mode 100644 src/modules/review/dto/update-review.dto.ts create mode 100644 src/modules/review/entities/review.entity.ts create mode 100644 src/modules/review/enums/review-point.enum.ts create mode 100644 src/modules/review/enums/review-status.enum.ts create mode 100644 src/modules/review/events/review.events.ts create mode 100644 src/modules/review/listeners/review.listeners.ts create mode 100644 src/modules/review/providers/food-rating-cron.service.ts create mode 100644 src/modules/review/providers/review.service.ts create mode 100644 src/modules/review/repositories/review.repository.ts create mode 100644 src/modules/review/review.module.ts create mode 100644 src/modules/roles/controllers/roles.controller.ts create mode 100644 src/modules/roles/dto/create-role.dto.ts create mode 100644 src/modules/roles/dto/update-role.dto.ts create mode 100755 src/modules/roles/entities/permission.entity.ts create mode 100755 src/modules/roles/entities/role.entity.ts create mode 100644 src/modules/roles/entities/rolePermission.entity.ts create mode 100644 src/modules/roles/providers/permissions.service.ts create mode 100644 src/modules/roles/providers/roles.service.ts create mode 100644 src/modules/roles/roles.module.ts create mode 100755 src/modules/uploader/DTO/upload-file.dto.ts create mode 100644 src/modules/uploader/controllers/uploader.controller.ts create mode 100644 src/modules/uploader/interfaces/file.interface.ts create mode 100644 src/modules/uploader/interfaces/s3.interface.ts create mode 100644 src/modules/uploader/providers/s3.service.ts create mode 100644 src/modules/uploader/providers/uploader.service.ts create mode 100644 src/modules/uploader/uploader.module.ts create mode 100644 src/modules/users/controllers/users.controller.ts create mode 100644 src/modules/users/dto/create-user-address.dto.ts create mode 100644 src/modules/users/dto/create-wallet-transaction.dto.ts create mode 100644 src/modules/users/dto/find-user.dto.ts create mode 100644 src/modules/users/dto/find-wallet-transactions.dto.ts create mode 100644 src/modules/users/dto/update-user-address.dto.ts create mode 100644 src/modules/users/dto/update-user.dto.ts create mode 100644 src/modules/users/entities/point-transaction.entity.ts create mode 100644 src/modules/users/entities/user-address.entity.ts create mode 100644 src/modules/users/entities/user.entity.ts create mode 100644 src/modules/users/entities/wallet-transaction.entity.ts create mode 100644 src/modules/users/interface/point.ts create mode 100644 src/modules/users/interface/wallet.ts create mode 100644 src/modules/users/providers/user.service.ts create mode 100644 src/modules/users/providers/wallet.service.ts create mode 100644 src/modules/users/repositories/point-transaction.repository.ts create mode 100644 src/modules/users/repositories/user.repository.ts create mode 100644 src/modules/users/repositories/wallet-transaction.repository.ts create mode 100644 src/modules/users/user.module.ts create mode 100755 src/modules/utils/cache.service.ts create mode 100644 src/modules/utils/phone.util.ts create mode 100644 src/modules/utils/sanitize.util.ts create mode 100644 src/modules/utils/utils.module.ts create mode 100644 src/seeders/DatabaseSeeder.ts create mode 100644 src/seeders/admins.seeder.ts create mode 100644 src/seeders/categories.seeder.ts create mode 100644 src/seeders/coupons.seeder.ts create mode 100644 src/seeders/data/admins.data.ts create mode 100644 src/seeders/data/categories.data.ts create mode 100644 src/seeders/data/coupons.data.ts create mode 100644 src/seeders/data/delivery-methods.data.ts create mode 100644 src/seeders/data/foods.data.ts create mode 100644 src/seeders/data/notification-preferences.data.ts create mode 100644 src/seeders/data/payment-methods.data.ts create mode 100644 src/seeders/data/permissions.data.ts create mode 100644 src/seeders/data/restaurants.data.ts create mode 100644 src/seeders/data/roles.data.ts create mode 100644 src/seeders/data/schedules.data.ts create mode 100644 src/seeders/data/user-addresses.data.ts create mode 100644 src/seeders/data/users.data.ts create mode 100644 src/seeders/delivery-methods.seeder.ts create mode 100644 src/seeders/foods.seeder.ts create mode 100644 src/seeders/index.ts create mode 100644 src/seeders/inventory.seeder.ts create mode 100644 src/seeders/notification-preferences.seeder.ts create mode 100644 src/seeders/notifications.seeder.ts create mode 100644 src/seeders/payment-methods.seeder.ts create mode 100644 src/seeders/permissions.seeder.ts create mode 100644 src/seeders/restaurants.seeder.ts create mode 100644 src/seeders/roles.seeder.ts create mode 100644 src/seeders/schedules.seeder.ts create mode 100644 src/seeders/user-wallets.seeder.ts create mode 100644 src/seeders/users.seeder.ts create mode 100644 test-notifications-socket.html create mode 100644 test-pager-socket.html create mode 100644 tsconfig.build.json create mode 100644 tsconfig.json diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml new file mode 100644 index 0000000..02466a5 --- /dev/null +++ b/.github/workflows/deploy.yaml @@ -0,0 +1,49 @@ +name: deploy to danak + + +on: + push: + branches: + - production + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + + env: + DANAK_SERVER: "https://captain.dev.danakcorp.com" + APP_TOKEN: e7d4e8ae6b8164d3c1669c161f7cab295549b6fdfaea90eaf833f24122380841 + APP_NAME: dmenuplus-api-production + GITHUB_TOKEN: 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 + + steps: + - name: Check out repositorys + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: zmihamid + password: ${{ env.GITHUB_TOKEN }} + + - name: Preset Image Name + run: echo "IMAGE_URL=$(echo ghcr.io/zmihamid/${{ github.event.repository.name }}:$(echo ${{ github.sha }} | cut -c1-7) | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV + + - name: Build and push Docker Image + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: true + tags: ${{ env.IMAGE_URL }} + + - name: Install CapRover CLI + run: npm install -g caprover + + - name: deploy to server + run: | + caprover deploy -a $APP_NAME -u $DANAK_SERVER --appToken $APP_TOKEN -i "$IMAGE_URL" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ca28fe8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,58 @@ +# compiled output +/dist +/node_modules +/build + +# Logs +logs +*.log +npm-debug.log* +pnpm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# OS +.DS_Store + +# Tests +/coverage +/.nyc_output + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# temp directory +.temp +.tmp + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +/react/* \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..9416179 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,16 @@ +{ + "arrowParens": "avoid", + "bracketSpacing": true, + "insertPragma": false, + "bracketSameLine": false, + "jsxSingleQuote": true, + "printWidth": 120, + "proseWrap": "preserve", + "quoteProps": "as-needed", + "requirePragma": false, + "semi": true, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "all", + "useTabs": false +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b336fb1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,15 @@ +{ + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "eslint.format.enable": true, + "editor.codeActionsOnSave": { + "source.fixAll": "explicit", + "source.fixAll.eslint": "explicit" + }, + "[typescript]": { + "editor.defaultFormatter": "vscode.typescript-language-features" + }, + "[json]": { + "editor.defaultFormatter": "vscode.json-language-features" + } +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9ee9880 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,79 @@ +# Stage 1: Base +FROM node:22-alpine AS base + +# Install timezone support +RUN apk add --no-cache tzdata +RUN cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime && echo "Asia/Tehran" > /etc/timezone + +# Set workdir for clarity +WORKDIR /app + +# Stage 2: Dependencies +FROM base AS deps +WORKDIR /temp-deps +COPY package*.json ./ +RUN npm ci --ignore-scripts + +# Stage 3: Build +FROM base AS builder +WORKDIR /build +COPY . ./ +COPY --from=deps /temp-deps/node_modules ./node_modules +RUN if [ -f package.json ] && grep -q '"build":' package.json; then npm run build; fi + +# Stage 4: Runner +FROM base AS runner +RUN addgroup -S appgroup && adduser -S appuser -G appgroup +WORKDIR /app + +COPY . ./ +COPY --from=builder --chown=appuser:appgroup /build/ ./ +RUN chown -R appuser:appgroup /app + +USER appuser +ENV NODE_ENV=production +EXPOSE 4000 + +CMD ["npm", "start"] + +# # Stage 1: Build Stage +# FROM node:22-alpine AS base + +# RUN npm install -g corepack@latest +# RUN corepack enable && corepack prepare pnpm@9 --activate + +# # Install tzdata to support timezone settings +# RUN apk add --no-cache tzdata + +# # Set the timezone to Asia/Tehran +# RUN cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime && echo "Asia/Tehran" > /etc/timezone + + +# FROM base AS deps +# WORKDIR /temp-deps +# COPY package*.json pnpm-lock.yaml ./ +# RUN pnpm install --frozen-lockfile --loglevel info + + +# FROM base AS builder +# WORKDIR /build +# COPY . ./ +# COPY --from=deps /temp-deps/node_modules ./node_modules +# RUN if [ -f package.json ] && grep -q '"build":' package.json; then pnpm run build; fi +# RUN pnpm install --prod --frozen-lockfile --loglevel info + +# FROM base AS runner +# RUN addgroup -S appgroup && adduser -S appuser -G appgroup +# WORKDIR /app + +# COPY . ./ +# COPY --from=builder --chown=appuser:appgroup /build/ ./ + +# RUN chown -R appuser:appgroup /app + +# USER appuser + +# ENV NODE_ENV=production +# EXPOSE 3000 + +# CMD ["npm", "start"] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..8f0f65f --- /dev/null +++ b/README.md @@ -0,0 +1,98 @@ +

+ Nest Logo +

+ +[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456 +[circleci-url]: https://circleci.com/gh/nestjs/nest + +

A progressive Node.js framework for building efficient and scalable server-side applications.

+

+NPM Version +Package License +NPM Downloads +CircleCI +Discord +Backers on Open Collective +Sponsors on Open Collective + Donate us + Support us + Follow us on Twitter +

+ + +## Description + +[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository. + +## Project setup + +```bash +$ npm install +``` + +## Compile and run the project + +```bash +# development +$ npm run start + +# watch mode +$ npm run start:dev + +# production mode +$ npm run start:prod +``` + +## Run tests + +```bash +# unit tests +$ npm run test + +# e2e tests +$ npm run test:e2e + +# test coverage +$ npm run test:cov +``` + +## Deployment + +When you're ready to deploy your NestJS application to production, there are some key steps you can take to ensure it runs as efficiently as possible. Check out the [deployment documentation](https://docs.nestjs.com/deployment) for more information. + +If you are looking for a cloud-based platform to deploy your NestJS application, check out [Mau](https://mau.nestjs.com), our official platform for deploying NestJS applications on AWS. Mau makes deployment straightforward and fast, requiring just a few simple steps: + +```bash +$ npm install -g @nestjs/mau +$ mau deploy +``` + +With Mau, you can deploy your application in just a few clicks, allowing you to focus on building features rather than managing infrastructure. + +## Resources + +Check out a few resources that may come in handy when working with NestJS: + +- Visit the [NestJS Documentation](https://docs.nestjs.com) to learn more about the framework. +- For questions and support, please visit our [Discord channel](https://discord.gg/G7Qnnhy). +- To dive deeper and get more hands-on experience, check out our official video [courses](https://courses.nestjs.com/). +- Deploy your application to AWS with the help of [NestJS Mau](https://mau.nestjs.com) in just a few clicks. +- Visualize your application graph and interact with the NestJS application in real-time using [NestJS Devtools](https://devtools.nestjs.com). +- Need help with your project (part-time to full-time)? Check out our official [enterprise support](https://enterprise.nestjs.com). +- To stay in the loop and get updates, follow us on [X](https://x.com/nestframework) and [LinkedIn](https://linkedin.com/company/nestjs). +- Looking for a job, or have a job to offer? Check out our official [Jobs board](https://jobs.nestjs.com). + +## Support + +Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support). + +## Stay in touch + +- Author - [Kamil Myśliwiec](https://twitter.com/kammysliwiec) +- Website - [https://nestjs.com](https://nestjs.com/) +- Twitter - [@nestframework](https://twitter.com/nestframework) + +## License + +Nest is [MIT licensed](https://github.com/nestjs/nest/blob/master/LICENSE). diff --git a/database/migrations/.snapshot-postgres.json b/database/migrations/.snapshot-postgres.json new file mode 100644 index 0000000..1bd60f9 --- /dev/null +++ b/database/migrations/.snapshot-postgres.json @@ -0,0 +1,5645 @@ +{ + "namespaces": [ + "public" + ], + "name": "public", + "tables": [ + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "first_name": { + "name": "first_name", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "last_name": { + "name": "last_name", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "phone": { + "name": "phone", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + } + }, + "name": "admins", + "schema": "public", + "indexes": [ + { + "columnNames": [ + "phone" + ], + "composite": false, + "keyName": "admins_phone_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "admins_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "admins_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "admins_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": {}, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "name": { + "name": "name", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + } + }, + "name": "icon_groups", + "schema": "public", + "indexes": [ + { + "keyName": "icon_groups_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "icon_groups_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "icon_groups_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": {}, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "url": { + "name": "url", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "group_id": { + "name": "group_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + } + }, + "name": "icons", + "schema": "public", + "indexes": [ + { + "keyName": "icons_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "icons_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "icons_group_id_index", + "columnNames": [ + "group_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "icons_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "icons_group_id_foreign": { + "constraintName": "icons_group_id_foreign", + "columnNames": [ + "group_id" + ], + "localTableName": "public.icons", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.icon_groups", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "name": { + "name": "name", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "title": { + "name": "title", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + } + }, + "name": "permissions", + "schema": "public", + "indexes": [ + { + "columnNames": [ + "name" + ], + "composite": false, + "keyName": "permissions_name_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "permissions_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "permissions_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "permissions_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": {}, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "hashed_token": { + "name": "hashed_token", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "owner_id": { + "name": "owner_id", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "rest_id": { + "name": "rest_id", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "type": { + "name": "type", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "user", + "admin" + ], + "mappedType": "enum" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "mappedType": "datetime" + } + }, + "name": "refreshtokens", + "schema": "public", + "indexes": [ + { + "keyName": "refreshtokens_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "refreshtokens_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "refreshtokens_expires_at_index", + "columnNames": [ + "expires_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "refreshtokens_hashed_token_index", + "columnNames": [ + "hashed_token" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "refreshtokens_owner_id_rest_id_type_index", + "columnNames": [ + "owner_id", + "rest_id", + "type" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "refreshtokens_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": {}, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "name": { + "name": "name", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "logo": { + "name": "logo", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "address": { + "name": "address", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "menu_color": { + "name": "menu_color", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "latitude": { + "name": "latitude", + "type": "numeric(10,7)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "precision": 10, + "scale": 7, + "mappedType": "decimal" + }, + "longitude": { + "name": "longitude", + "type": "numeric(10,7)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "precision": 10, + "scale": 7, + "mappedType": "decimal" + }, + "service_area": { + "name": "service_area", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "true", + "mappedType": "boolean" + }, + "established_year": { + "name": "established_year", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "integer" + }, + "phone": { + "name": "phone", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "instagram": { + "name": "instagram", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "telegram": { + "name": "telegram", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "whatsapp": { + "name": "whatsapp", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "description": { + "name": "description", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "text" + }, + "seo_title": { + "name": "seo_title", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "seo_description": { + "name": "seo_description", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "text" + }, + "tag_names": { + "name": "tag_names", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "images": { + "name": "images", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "vat": { + "name": "vat", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "default": "0", + "mappedType": "decimal" + }, + "domain": { + "name": "domain", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "score": { + "name": "score", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "plan": { + "name": "plan", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "'base'", + "enumItems": [ + "base", + "premium" + ], + "mappedType": "enum" + }, + "subscription_id": { + "name": "subscription_id", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "subscription_end_date": { + "name": "subscription_end_date", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "subscription_start_date": { + "name": "subscription_start_date", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + } + }, + "name": "restaurants", + "schema": "public", + "indexes": [ + { + "columnNames": [ + "slug" + ], + "composite": false, + "keyName": "restaurants_slug_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "columnNames": [ + "subscription_id" + ], + "composite": false, + "keyName": "restaurants_subscription_id_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "restaurants_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "restaurants_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "restaurants_slug_is_active_index", + "columnNames": [ + "slug", + "is_active" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "restaurants_is_active_index", + "columnNames": [ + "is_active" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "restaurants_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": {}, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "method": { + "name": "method", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "Online", + "Cash", + "Wallet" + ], + "mappedType": "enum" + }, + "gateway": { + "name": "gateway", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "enumItems": [ + "zarinpal" + ], + "mappedType": "enum" + }, + "description": { + "name": "description", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "true", + "mappedType": "boolean" + }, + "order": { + "name": "order", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "0", + "mappedType": "integer" + }, + "merchant_id": { + "name": "merchant_id", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + } + }, + "name": "payment_methods", + "schema": "public", + "indexes": [ + { + "keyName": "payment_methods_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "payment_methods_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "payment_methods_restaurant_id_enabled_index", + "columnNames": [ + "restaurant_id", + "enabled" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "payment_methods_restaurant_id_method_unique", + "columnNames": [ + "restaurant_id", + "method" + ], + "composite": true, + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "payment_methods_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "payment_methods_restaurant_id_foreign": { + "constraintName": "payment_methods_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.payment_methods", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "title": { + "name": "title", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "channels": { + "name": "channels", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "mappedType": "json" + } + }, + "name": "notification_preferences", + "schema": "public", + "indexes": [ + { + "keyName": "notification_preferences_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "notification_preferences_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "notification_preferences_restaurant_id_title_unique", + "columnNames": [ + "restaurant_id", + "title" + ], + "composite": true, + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "notification_preferences_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "notification_preferences_restaurant_id_foreign": { + "constraintName": "notification_preferences_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.notification_preferences", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "method": { + "name": "method", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "dineIn", + "customerPickup", + "deliveryCar", + "deliveryCourier" + ], + "mappedType": "enum" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "delivery_fee": { + "name": "delivery_fee", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "0", + "mappedType": "integer" + }, + "delivery_fee_type": { + "name": "delivery_fee_type", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "'fixed'", + "enumItems": [ + "fixed", + "distanceBased" + ], + "mappedType": "enum" + }, + "per_kilometer_fee": { + "name": "per_kilometer_fee", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "default": "0", + "mappedType": "integer" + }, + "distance_based_min_cost": { + "name": "distance_based_min_cost", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "default": "0", + "mappedType": "integer" + }, + "min_order_price": { + "name": "min_order_price", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "0", + "mappedType": "integer" + }, + "description": { + "name": "description", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "true", + "mappedType": "boolean" + }, + "order": { + "name": "order", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "0", + "mappedType": "integer" + } + }, + "name": "deliveries", + "schema": "public", + "indexes": [ + { + "keyName": "deliveries_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "deliveries_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "deliveries_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "deliveries_restaurant_id_foreign": { + "constraintName": "deliveries_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.deliveries", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "code": { + "name": "code", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "name": { + "name": "name", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "description": { + "name": "description", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "text" + }, + "type": { + "name": "type", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "PERCENTAGE", + "FIXED" + ], + "mappedType": "enum" + }, + "value": { + "name": "value", + "type": "numeric(10,2)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 2, + "mappedType": "decimal" + }, + "max_discount": { + "name": "max_discount", + "type": "numeric(10,2)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "precision": 10, + "scale": 2, + "mappedType": "decimal" + }, + "min_order_amount": { + "name": "min_order_amount", + "type": "numeric(10,2)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "precision": 10, + "scale": 2, + "mappedType": "decimal" + }, + "max_uses": { + "name": "max_uses", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "integer" + }, + "used_count": { + "name": "used_count", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "0", + "mappedType": "integer" + }, + "max_uses_per_user": { + "name": "max_uses_per_user", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "integer" + }, + "start_date": { + "name": "start_date", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "end_date": { + "name": "end_date", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "true", + "mappedType": "boolean" + }, + "food_categories": { + "name": "food_categories", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "foods": { + "name": "foods", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "user_phone": { + "name": "user_phone", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + } + }, + "name": "coupons", + "schema": "public", + "indexes": [ + { + "keyName": "coupons_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "coupons_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "coupons_code_index", + "columnNames": [ + "code" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "coupons_restaurant_id_is_active_index", + "columnNames": [ + "restaurant_id", + "is_active" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "coupons_restaurant_id_code_is_active_index", + "columnNames": [ + "restaurant_id", + "code", + "is_active" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "coupons_code_restaurant_id_unique", + "columnNames": [ + "code", + "restaurant_id" + ], + "composite": true, + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "coupons_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "coupons_restaurant_id_foreign": { + "constraintName": "coupons_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.coupons", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "subject": { + "name": "subject", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "content": { + "name": "content", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "phone": { + "name": "phone", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "scope": { + "name": "scope", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "application", + "restaurant" + ], + "mappedType": "enum" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 26, + "mappedType": "character" + }, + "status": { + "name": "status", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "default": "'new'", + "mappedType": "string" + } + }, + "name": "contacts", + "schema": "public", + "indexes": [ + { + "keyName": "contacts_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "contacts_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "contacts_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "contacts_restaurant_id_foreign": { + "constraintName": "contacts_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.contacts", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "deleteRule": "set null", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "title": { + "name": "title", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "true", + "mappedType": "boolean" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "avatar_url": { + "name": "avatar_url", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "order": { + "name": "order", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "integer" + } + }, + "name": "categories", + "schema": "public", + "indexes": [ + { + "keyName": "categories_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "categories_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "categories_is_active_index", + "columnNames": [ + "is_active" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "categories_restaurant_id_is_active_index", + "columnNames": [ + "restaurant_id", + "is_active" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "categories_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "categories_restaurant_id_foreign": { + "constraintName": "categories_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.categories", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "category_id": { + "name": "category_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "title": { + "name": "title", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "desc": { + "name": "desc", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "text" + }, + "content": { + "name": "content", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "price": { + "name": "price", + "type": "numeric(10,2)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "precision": 10, + "scale": 2, + "mappedType": "decimal" + }, + "order": { + "name": "order", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "integer" + }, + "prepare_time": { + "name": "prepare_time", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "integer" + }, + "week_days": { + "name": "week_days", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "'[]'", + "mappedType": "json" + }, + "meal_types": { + "name": "meal_types", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "'[]'", + "mappedType": "json" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "true", + "mappedType": "boolean" + }, + "images": { + "name": "images", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "in_place_serve": { + "name": "in_place_serve", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "false", + "mappedType": "boolean" + }, + "pickup_serve": { + "name": "pickup_serve", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "false", + "mappedType": "boolean" + }, + "score": { + "name": "score", + "type": "real", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "default": "null", + "mappedType": "float" + }, + "discount": { + "name": "discount", + "type": "real", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "0", + "mappedType": "float" + }, + "is_special_offer": { + "name": "is_special_offer", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "false", + "mappedType": "boolean" + } + }, + "name": "foods", + "schema": "public", + "indexes": [ + { + "keyName": "foods_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "foods_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "foods_is_active_index", + "columnNames": [ + "is_active" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "foods_category_id_is_active_index", + "columnNames": [ + "category_id", + "is_active" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "foods_restaurant_id_is_active_index", + "columnNames": [ + "restaurant_id", + "is_active" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "foods_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "foods_restaurant_id_foreign": { + "constraintName": "foods_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.foods", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "updateRule": "cascade" + }, + "foods_category_id_foreign": { + "constraintName": "foods_category_id_foreign", + "columnNames": [ + "category_id" + ], + "localTableName": "public.foods", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.categories", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "food_id": { + "name": "food_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 26, + "mappedType": "character" + }, + "total_stock": { + "name": "total_stock", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "mappedType": "integer" + }, + "available_stock": { + "name": "available_stock", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "mappedType": "integer" + } + }, + "name": "inventory", + "schema": "public", + "indexes": [ + { + "columnNames": [ + "food_id" + ], + "composite": false, + "keyName": "inventory_food_id_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "inventory_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "inventory_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "inventory_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "inventory_food_id_foreign": { + "constraintName": "inventory_food_id_foreign", + "columnNames": [ + "food_id" + ], + "localTableName": "public.inventory", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.foods", + "deleteRule": "cascade", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "name": { + "name": "name", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "is_system": { + "name": "is_system", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "false", + "mappedType": "boolean" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 26, + "mappedType": "character" + } + }, + "name": "roles", + "schema": "public", + "indexes": [ + { + "keyName": "roles_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "roles_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "roles_restaurant_id_index", + "columnNames": [ + "restaurant_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "roles_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "roles_restaurant_id_foreign": { + "constraintName": "roles_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.roles", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "deleteRule": "set null", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "admin_id": { + "name": "admin_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "role_id": { + "name": "role_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 26, + "mappedType": "character" + } + }, + "name": "admin_roles", + "schema": "public", + "indexes": [ + { + "keyName": "admin_roles_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "admin_roles_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "admin_roles_restaurant_id_index", + "columnNames": [ + "restaurant_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "admin_roles_admin_id_index", + "columnNames": [ + "admin_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "admin_roles_admin_id_restaurant_id_index", + "columnNames": [ + "admin_id", + "restaurant_id" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "admin_roles_admin_id_restaurant_id_unique", + "columnNames": [ + "admin_id", + "restaurant_id" + ], + "composite": true, + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "admin_roles_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "admin_roles_admin_id_foreign": { + "constraintName": "admin_roles_admin_id_foreign", + "columnNames": [ + "admin_id" + ], + "localTableName": "public.admin_roles", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.admins", + "updateRule": "cascade" + }, + "admin_roles_role_id_foreign": { + "constraintName": "admin_roles_role_id_foreign", + "columnNames": [ + "role_id" + ], + "localTableName": "public.admin_roles", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.roles", + "updateRule": "cascade" + }, + "admin_roles_restaurant_id_foreign": { + "constraintName": "admin_roles_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.admin_roles", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "deleteRule": "set null", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "role_id": { + "name": "role_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "permission_id": { + "name": "permission_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + } + }, + "name": "role_permissions", + "schema": "public", + "indexes": [ + { + "keyName": "role_permissions_pkey", + "columnNames": [ + "role_id", + "permission_id" + ], + "composite": true, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "role_permissions_role_id_foreign": { + "constraintName": "role_permissions_role_id_foreign", + "columnNames": [ + "role_id" + ], + "localTableName": "public.role_permissions", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.roles", + "updateRule": "cascade" + }, + "role_permissions_permission_id_foreign": { + "constraintName": "role_permissions_permission_id_foreign", + "columnNames": [ + "permission_id" + ], + "localTableName": "public.role_permissions", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.permissions", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "week_day": { + "name": "week_day", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "mappedType": "integer" + }, + "open_time": { + "name": "open_time", + "type": "time(0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 0, + "mappedType": "time" + }, + "close_time": { + "name": "close_time", + "type": "time(0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 0, + "mappedType": "time" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "true", + "mappedType": "boolean" + }, + "rest_id": { + "name": "rest_id", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + } + }, + "name": "schedules", + "schema": "public", + "indexes": [ + { + "keyName": "schedules_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "schedules_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "schedules_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": {}, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "serial", + "unsigned": false, + "autoincrement": true, + "primary": true, + "nullable": false, + "mappedType": "integer" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "phone": { + "name": "phone", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "mappedType": "datetime" + } + }, + "name": "sms_logs", + "schema": "public", + "indexes": [ + { + "keyName": "sms_logs_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "sms_logs_restaurant_id_foreign": { + "constraintName": "sms_logs_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.sms_logs", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "first_name": { + "name": "first_name", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "last_name": { + "name": "last_name", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "phone": { + "name": "phone", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "birth_date": { + "name": "birth_date", + "type": "date", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 0, + "default": "null", + "mappedType": "date" + }, + "marriage_date": { + "name": "marriage_date", + "type": "date", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 0, + "default": "null", + "mappedType": "date" + }, + "referrer": { + "name": "referrer", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "true", + "mappedType": "boolean" + }, + "gender": { + "name": "gender", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "default": "true", + "mappedType": "boolean" + }, + "avatar_url": { + "name": "avatar_url", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + } + }, + "name": "users", + "schema": "public", + "indexes": [ + { + "columnNames": [ + "phone" + ], + "composite": false, + "keyName": "users_phone_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "users_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "users_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "users_is_active_index", + "columnNames": [ + "is_active" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "users_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": {}, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "user_id": { + "name": "user_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "amount": { + "name": "amount", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "mappedType": "decimal" + }, + "balance": { + "name": "balance", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "mappedType": "decimal" + }, + "type": { + "name": "type", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [], + "mappedType": "enum" + }, + "reason": { + "name": "reason", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "order_completed_deposit", + "convert_score_to_point" + ], + "mappedType": "enum" + } + }, + "name": "point_transactions", + "schema": "public", + "indexes": [ + { + "keyName": "point_transactions_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "point_transactions_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "point_transactions_restaurant_id_index", + "columnNames": [ + "restaurant_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "point_transactions_user_id_index", + "columnNames": [ + "user_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "point_transactions_user_id_restaurant_id_index", + "columnNames": [ + "user_id", + "restaurant_id" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "point_transactions_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "point_transactions_user_id_foreign": { + "constraintName": "point_transactions_user_id_foreign", + "columnNames": [ + "user_id" + ], + "localTableName": "public.point_transactions", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.users", + "updateRule": "cascade" + }, + "point_transactions_restaurant_id_foreign": { + "constraintName": "point_transactions_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.point_transactions", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.users", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "cookie_id": { + "name": "cookie_id", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "table_number": { + "name": "table_number", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "user_id": { + "name": "user_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 26, + "mappedType": "character" + }, + "staff_id": { + "name": "staff_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 26, + "mappedType": "character" + }, + "message": { + "name": "message", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "status": { + "name": "status", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "'pending'", + "enumItems": [ + "pending", + "acknowledged", + "rejected", + "completed" + ], + "mappedType": "enum" + } + }, + "name": "pagers", + "schema": "public", + "indexes": [ + { + "keyName": "pagers_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "pagers_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "pagers_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "pagers_restaurant_id_foreign": { + "constraintName": "pagers_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.pagers", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "updateRule": "cascade" + }, + "pagers_user_id_foreign": { + "constraintName": "pagers_user_id_foreign", + "columnNames": [ + "user_id" + ], + "localTableName": "public.pagers", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.users", + "deleteRule": "set null", + "updateRule": "cascade" + }, + "pagers_staff_id_foreign": { + "constraintName": "pagers_staff_id_foreign", + "columnNames": [ + "staff_id" + ], + "localTableName": "public.pagers", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.admins", + "deleteRule": "set null", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "user_id": { + "name": "user_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "delivery_method_id": { + "name": "delivery_method_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "user_address": { + "name": "user_address", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "car_address": { + "name": "car_address", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "payment_method_id": { + "name": "payment_method_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "order_number": { + "name": "order_number", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "integer" + }, + "coupon_discount": { + "name": "coupon_discount", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "default": "0", + "mappedType": "decimal" + }, + "coupon_detail": { + "name": "coupon_detail", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "items_discount": { + "name": "items_discount", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "default": "0", + "mappedType": "decimal" + }, + "total_discount": { + "name": "total_discount", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "default": "0", + "mappedType": "decimal" + }, + "sub_total": { + "name": "sub_total", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "mappedType": "decimal" + }, + "tax": { + "name": "tax", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "default": "0", + "mappedType": "decimal" + }, + "delivery_fee": { + "name": "delivery_fee", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "default": "0", + "mappedType": "decimal" + }, + "total": { + "name": "total", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "mappedType": "decimal" + }, + "total_items": { + "name": "total_items", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "0", + "mappedType": "integer" + }, + "description": { + "name": "description", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "text" + }, + "table_number": { + "name": "table_number", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "status": { + "name": "status", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "pendingPayment", + "paid", + "preparing", + "deliveredToWaiter", + "deliveredToReceptionist", + "shipped", + "completed", + "canceled" + ], + "mappedType": "enum" + }, + "history": { + "name": "history", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + } + }, + "name": "orders", + "schema": "public", + "indexes": [ + { + "keyName": "orders_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "orders_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "orders_status_index", + "columnNames": [ + "status" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "orders_restaurant_id_order_number_index", + "columnNames": [ + "restaurant_id", + "order_number" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "orders_user_id_status_index", + "columnNames": [ + "user_id", + "status" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "orders_restaurant_id_status_index", + "columnNames": [ + "restaurant_id", + "status" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "orders_restaurant_id_order_number_unique", + "columnNames": [ + "restaurant_id", + "order_number" + ], + "composite": true, + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "orders_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "orders_user_id_foreign": { + "constraintName": "orders_user_id_foreign", + "columnNames": [ + "user_id" + ], + "localTableName": "public.orders", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.users", + "updateRule": "cascade" + }, + "orders_restaurant_id_foreign": { + "constraintName": "orders_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.orders", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "updateRule": "cascade" + }, + "orders_delivery_method_id_foreign": { + "constraintName": "orders_delivery_method_id_foreign", + "columnNames": [ + "delivery_method_id" + ], + "localTableName": "public.orders", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.deliveries", + "updateRule": "cascade" + }, + "orders_payment_method_id_foreign": { + "constraintName": "orders_payment_method_id_foreign", + "columnNames": [ + "payment_method_id" + ], + "localTableName": "public.orders", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.payment_methods", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "order_id": { + "name": "order_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "food_id": { + "name": "food_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "user_id": { + "name": "user_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "comment": { + "name": "comment", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "text" + }, + "rating": { + "name": "rating", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "0", + "mappedType": "integer" + }, + "positive_points": { + "name": "positive_points", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "negative_points": { + "name": "negative_points", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "status": { + "name": "status", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "'pending'", + "enumItems": [ + "pending", + "rejected", + "approved" + ], + "mappedType": "enum" + } + }, + "name": "reviews", + "schema": "public", + "indexes": [ + { + "keyName": "reviews_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "reviews_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "reviews_order_id_index", + "columnNames": [ + "order_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "reviews_user_id_index", + "columnNames": [ + "user_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "reviews_food_id_status_index", + "columnNames": [ + "food_id", + "status" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "reviews_order_id_food_id_user_id_unique", + "columnNames": [ + "order_id", + "food_id", + "user_id" + ], + "composite": true, + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "reviews_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "reviews_order_id_foreign": { + "constraintName": "reviews_order_id_foreign", + "columnNames": [ + "order_id" + ], + "localTableName": "public.reviews", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.orders", + "updateRule": "cascade" + }, + "reviews_food_id_foreign": { + "constraintName": "reviews_food_id_foreign", + "columnNames": [ + "food_id" + ], + "localTableName": "public.reviews", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.foods", + "updateRule": "cascade" + }, + "reviews_user_id_foreign": { + "constraintName": "reviews_user_id_foreign", + "columnNames": [ + "user_id" + ], + "localTableName": "public.reviews", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.users", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "order_id": { + "name": "order_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "amount": { + "name": "amount", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "mappedType": "decimal" + }, + "reference_id": { + "name": "reference_id", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "method": { + "name": "method", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "Online", + "Cash", + "Wallet" + ], + "mappedType": "enum" + }, + "gateway": { + "name": "gateway", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "enumItems": [ + "zarinpal" + ], + "mappedType": "enum" + }, + "transaction_id": { + "name": "transaction_id", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "status": { + "name": "status", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "pending", + "paid", + "failed", + "refunded" + ], + "mappedType": "enum" + }, + "card_pan": { + "name": "card_pan", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "verify_response": { + "name": "verify_response", + "type": "jsonb", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "mappedType": "json" + }, + "paid_at": { + "name": "paid_at", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "failed_at": { + "name": "failed_at", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "description": { + "name": "description", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + } + }, + "name": "payments", + "schema": "public", + "indexes": [ + { + "columnNames": [ + "order_id" + ], + "composite": false, + "keyName": "payments_order_id_index", + "constraint": false, + "primary": false, + "unique": false + }, + { + "columnNames": [ + "reference_id" + ], + "composite": false, + "keyName": "payments_reference_id_unique", + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "payments_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "payments_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "payments_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "payments_order_id_foreign": { + "constraintName": "payments_order_id_foreign", + "columnNames": [ + "order_id" + ], + "localTableName": "public.payments", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.orders", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "order_id": { + "name": "order_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "food_id": { + "name": "food_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "quantity": { + "name": "quantity", + "type": "int", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "mappedType": "integer" + }, + "unit_price": { + "name": "unit_price", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "mappedType": "decimal" + }, + "discount": { + "name": "discount", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "default": "0", + "mappedType": "decimal" + }, + "total_price": { + "name": "total_price", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "mappedType": "decimal" + } + }, + "name": "order_items", + "schema": "public", + "indexes": [ + { + "keyName": "order_items_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "order_items_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "order_items_food_id_index", + "columnNames": [ + "food_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "order_items_order_id_index", + "columnNames": [ + "order_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "order_items_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "order_items_order_id_foreign": { + "constraintName": "order_items_order_id_foreign", + "columnNames": [ + "order_id" + ], + "localTableName": "public.order_items", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.orders", + "updateRule": "cascade" + }, + "order_items_food_id_foreign": { + "constraintName": "order_items_food_id_foreign", + "columnNames": [ + "food_id" + ], + "localTableName": "public.order_items", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.foods", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "user_id": { + "name": "user_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 26, + "mappedType": "character" + }, + "admin_id": { + "name": "admin_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 26, + "mappedType": "character" + }, + "title": { + "name": "title", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "pager.created", + "order.created", + "payment.success", + "review.created", + "order.status.changed" + ], + "mappedType": "enum" + }, + "content": { + "name": "content", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "seen_at": { + "name": "seen_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + } + }, + "name": "notifications", + "schema": "public", + "indexes": [ + { + "keyName": "notifications_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "notifications_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "notifications_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "notifications_restaurant_id_foreign": { + "constraintName": "notifications_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.notifications", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "updateRule": "cascade" + }, + "notifications_user_id_foreign": { + "constraintName": "notifications_user_id_foreign", + "columnNames": [ + "user_id" + ], + "localTableName": "public.notifications", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.users", + "deleteRule": "set null", + "updateRule": "cascade" + }, + "notifications_admin_id_foreign": { + "constraintName": "notifications_admin_id_foreign", + "columnNames": [ + "admin_id" + ], + "localTableName": "public.notifications", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.admins", + "deleteRule": "set null", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "user_id": { + "name": "user_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "food_id": { + "name": "food_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + } + }, + "name": "favorites", + "schema": "public", + "indexes": [ + { + "keyName": "favorites_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "favorites_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "favorites_user_id_food_id_unique", + "columnNames": [ + "user_id", + "food_id" + ], + "composite": true, + "constraint": true, + "primary": false, + "unique": true + }, + { + "keyName": "favorites_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "favorites_user_id_foreign": { + "constraintName": "favorites_user_id_foreign", + "columnNames": [ + "user_id" + ], + "localTableName": "public.favorites", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.users", + "updateRule": "cascade" + }, + "favorites_food_id_foreign": { + "constraintName": "favorites_food_id_foreign", + "columnNames": [ + "food_id" + ], + "localTableName": "public.favorites", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.foods", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "user_id": { + "name": "user_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "title": { + "name": "title", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "address": { + "name": "address", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "city": { + "name": "city", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 255, + "mappedType": "string" + }, + "province": { + "name": "province", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "postal_code": { + "name": "postal_code", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "latitude": { + "name": "latitude", + "type": "real", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "mappedType": "float" + }, + "longitude": { + "name": "longitude", + "type": "real", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "mappedType": "float" + }, + "phone": { + "name": "phone", + "type": "varchar(255)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 255, + "mappedType": "string" + }, + "is_default": { + "name": "is_default", + "type": "boolean", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "default": "false", + "mappedType": "boolean" + } + }, + "name": "user_addresses", + "schema": "public", + "indexes": [ + { + "keyName": "user_addresses_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "user_addresses_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "user_addresses_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "user_addresses_user_id_foreign": { + "constraintName": "user_addresses_user_id_foreign", + "columnNames": [ + "user_id" + ], + "localTableName": "public.user_addresses", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.users", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + }, + { + "columns": { + "id": { + "name": "id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "created_at": { + "name": "created_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 6, + "default": "now()", + "mappedType": "datetime" + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamptz", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": true, + "length": 6, + "mappedType": "datetime" + }, + "user_id": { + "name": "user_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "restaurant_id": { + "name": "restaurant_id", + "type": "char(26)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "length": 26, + "mappedType": "character" + }, + "amount": { + "name": "amount", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "mappedType": "decimal" + }, + "balance": { + "name": "balance", + "type": "numeric(10,0)", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "precision": 10, + "scale": 0, + "mappedType": "decimal" + }, + "type": { + "name": "type", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "credit", + "debit" + ], + "mappedType": "enum" + }, + "reason": { + "name": "reason", + "type": "text", + "unsigned": false, + "autoincrement": false, + "primary": false, + "nullable": false, + "enumItems": [ + "order_payment", + "order_refund", + "convert_score_to_wallet", + "withdraw", + "deposit" + ], + "mappedType": "enum" + } + }, + "name": "wallet_transactions", + "schema": "public", + "indexes": [ + { + "keyName": "wallet_transactions_created_at_index", + "columnNames": [ + "created_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "wallet_transactions_deleted_at_index", + "columnNames": [ + "deleted_at" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "wallet_transactions_restaurant_id_index", + "columnNames": [ + "restaurant_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "wallet_transactions_user_id_index", + "columnNames": [ + "user_id" + ], + "composite": false, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "wallet_transactions_user_id_restaurant_id_index", + "columnNames": [ + "user_id", + "restaurant_id" + ], + "composite": true, + "constraint": false, + "primary": false, + "unique": false + }, + { + "keyName": "wallet_transactions_pkey", + "columnNames": [ + "id" + ], + "composite": false, + "constraint": true, + "primary": true, + "unique": true + } + ], + "checks": [], + "foreignKeys": { + "wallet_transactions_user_id_foreign": { + "constraintName": "wallet_transactions_user_id_foreign", + "columnNames": [ + "user_id" + ], + "localTableName": "public.wallet_transactions", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.users", + "updateRule": "cascade" + }, + "wallet_transactions_restaurant_id_foreign": { + "constraintName": "wallet_transactions_restaurant_id_foreign", + "columnNames": [ + "restaurant_id" + ], + "localTableName": "public.wallet_transactions", + "referencedColumnNames": [ + "id" + ], + "referencedTableName": "public.restaurants", + "updateRule": "cascade" + } + }, + "nativeEnums": {} + } + ], + "nativeEnums": {} +} diff --git a/database/migrations/Migration20260105085439.ts b/database/migrations/Migration20260105085439.ts new file mode 100644 index 0000000..cfac84e --- /dev/null +++ b/database/migrations/Migration20260105085439.ts @@ -0,0 +1,27 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20260105085439 extends Migration { + + override async up(): Promise { + this.addSql(`alter table "point_transactions" drop constraint if exists "point_transactions_type_check";`); + + this.addSql(`alter table "categories" add column "order" int null;`); + + this.addSql(`alter table "point_transactions" add constraint "point_transactions_type_check" check("type" in (''));`); + } + + override async down(): Promise { + this.addSql(`create table "user_wallets" ("id" char(26) not null, "created_at" timestamptz(6) not null default now(), "updated_at" timestamptz(6) not null default now(), "deleted_at" timestamptz(6) null, "restaurant_id" char(26) not null, "user_id" char(26) not null, "wallet" int4 not null default 0, "points" int4 not null default 0, constraint "user_wallets_pkey" primary key ("id"));`); + this.addSql(`alter table "user_wallets" add constraint "unique_user_restaurant" unique ("user_id", "restaurant_id");`); + this.addSql(`create index "user_wallets_created_at_index" on "user_wallets" ("created_at");`); + this.addSql(`create index "user_wallets_deleted_at_index" on "user_wallets" ("deleted_at");`); + this.addSql(`create index "user_wallets_restaurant_id_index" on "user_wallets" ("restaurant_id");`); + this.addSql(`create index "user_wallets_user_id_index" on "user_wallets" ("user_id");`); + this.addSql(`create index "user_wallets_user_id_restaurant_id_index" on "user_wallets" ("user_id", "restaurant_id");`); + + this.addSql(`alter table "point_transactions" drop constraint if exists "point_transactions_type_check";`); + + this.addSql(`alter table "point_transactions" add constraint "point_transactions_type_check" check("type" in (''));`); + } + +} diff --git a/database/migrations/Migration20260106054151.ts b/database/migrations/Migration20260106054151.ts new file mode 100644 index 0000000..96ead46 --- /dev/null +++ b/database/migrations/Migration20260106054151.ts @@ -0,0 +1,23 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20260106054151 extends Migration { + + override async up(): Promise { + this.addSql(`alter table "restaurants" alter column "subscription_id" type varchar(255) using ("subscription_id"::varchar(255));`); + this.addSql(`alter table "restaurants" alter column "subscription_id" drop not null;`); + this.addSql(`alter table "restaurants" alter column "subscription_end_date" type timestamptz using ("subscription_end_date"::timestamptz);`); + this.addSql(`alter table "restaurants" alter column "subscription_end_date" drop not null;`); + this.addSql(`alter table "restaurants" alter column "subscription_start_date" type timestamptz using ("subscription_start_date"::timestamptz);`); + this.addSql(`alter table "restaurants" alter column "subscription_start_date" drop not null;`); + } + + override async down(): Promise { + this.addSql(`alter table "restaurants" alter column "subscription_id" type varchar(255) using ("subscription_id"::varchar(255));`); + this.addSql(`alter table "restaurants" alter column "subscription_id" set not null;`); + this.addSql(`alter table "restaurants" alter column "subscription_end_date" type timestamptz using ("subscription_end_date"::timestamptz);`); + this.addSql(`alter table "restaurants" alter column "subscription_end_date" set not null;`); + this.addSql(`alter table "restaurants" alter column "subscription_start_date" type timestamptz using ("subscription_start_date"::timestamptz);`); + this.addSql(`alter table "restaurants" alter column "subscription_start_date" set not null;`); + } + +} diff --git a/database/migrations/Migration20260106192946.ts b/database/migrations/Migration20260106192946.ts new file mode 100644 index 0000000..3e324b4 --- /dev/null +++ b/database/migrations/Migration20260106192946.ts @@ -0,0 +1,14 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20260106192946 extends Migration { + + override async up(): Promise { + this.addSql(`alter table "contacts" add column "restaurant_id" char(26) null;`); + this.addSql(`alter table "contacts" add constraint "contacts_restaurant_id_foreign" foreign key ("restaurant_id") references "restaurants" ("id") on update cascade on delete set null;`); + } + + override async down(): Promise { + this.addSql(`alter table "contacts" drop constraint "contacts_restaurant_id_foreign";`); + } + +} diff --git a/database/migrations/Migration20260226063544.ts b/database/migrations/Migration20260226063544.ts new file mode 100644 index 0000000..8aa2542 --- /dev/null +++ b/database/migrations/Migration20260226063544.ts @@ -0,0 +1,19 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20260226063544 extends Migration { + + override async up(): Promise { + this.addSql(`alter table "deliveries" alter column "delivery_fee" type int using ("delivery_fee"::int);`); + this.addSql(`alter table "deliveries" alter column "per_kilometer_fee" type int using ("per_kilometer_fee"::int);`); + this.addSql(`alter table "deliveries" alter column "distance_based_min_cost" type int using ("distance_based_min_cost"::int);`); + this.addSql(`alter table "deliveries" alter column "min_order_price" type int using ("min_order_price"::int);`); + } + + override async down(): Promise { + this.addSql(`alter table "deliveries" alter column "delivery_fee" type numeric(10,0) using ("delivery_fee"::numeric(10,0));`); + this.addSql(`alter table "deliveries" alter column "per_kilometer_fee" type numeric(10,0) using ("per_kilometer_fee"::numeric(10,0));`); + this.addSql(`alter table "deliveries" alter column "distance_based_min_cost" type numeric(10,0) using ("distance_based_min_cost"::numeric(10,0));`); + this.addSql(`alter table "deliveries" alter column "min_order_price" type numeric(10,0) using ("min_order_price"::numeric(10,0));`); + } + +} diff --git a/dump/README_icons.md b/dump/README_icons.md new file mode 100644 index 0000000..6e870d9 --- /dev/null +++ b/dump/README_icons.md @@ -0,0 +1,41 @@ +# Icon Naming Process + +## Files Created: +- `icons.csv` - Updated with "icon_name" column +- `icon_viewer.html` - Web interface to view and name icons +- `populate_icon_names.js` - Script to add names to CSV + +## Step-by-Step Process: + +### 1. View the Icons +- Open `icon_viewer.html` in your web browser +- You'll see all 138 icons in a grid layout +- Each icon shows its number and has an input field for naming + +### 2. Name the Icons +- Look at each icon and enter appropriate names in the input fields +- The progress counter shows how many you've named +- Names should be descriptive (e.g., "hamburger", "pizza", "coffee", "delivery") + +### 3. Export Named Icons (Optional) +- Click "Export Named Icons" to download a CSV of only the named icons +- This helps you review your naming before finalizing + +### 4. Update the Main CSV +- Edit `populate_icon_names.js` +- Replace the placeholder names in the `iconNames` array with your actual names +- Run the script: `node populate_icon_names.js` + +## Example Icon Names: +- Food items: "pizza", "burger", "pasta", "salad" +- Drinks: "coffee", "soda", "juice", "beer" +- Categories: "fast_food", "italian", "asian", "desserts" +- Actions: "delivery", "pickup", "favorite", "cart" + +## Tips: +- Use consistent naming conventions (snake_case or camelCase) +- Keep names short but descriptive +- Group similar icons with consistent prefixes if applicable +- Review all names before running the populate script + +The final CSV will have all original columns plus the new "icon_name" column with your custom names. diff --git a/dump/dmenu_db.foodcategories.json b/dump/dmenu_db.foodcategories.json new file mode 100644 index 0000000..4eac54b --- /dev/null +++ b/dump/dmenu_db.foodcategories.json @@ -0,0 +1,7992 @@ +[{ + "_id": { + "$oid": "61a5ff69fe9cee131085690e" + }, + "name": "sd", + "icon": "chicken-fry", + "index": 1, + "storeId": { + "$oid": "61a3664d37a0d33354a6d216" + }, + "created_at": { + "$date": "2021-11-30T10:39:37.977Z" + }, + "updated_at": { + "$date": "2021-11-30T10:39:37.977Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61a7605dd5c3921920048303" + }, + "name": "پاستا", + "icon": "noodles", + "index": 7, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-01T11:45:33.006Z" + }, + "updated_at": { + "$date": "2025-12-07T11:00:00.448Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "name": "پیتزا ایتالیایی", + "icon": "pizza", + "index": 2, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-04T17:24:43.141Z" + }, + "updated_at": { + "$date": "2025-12-07T10:45:12.802Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "name": "پیتزا امریکایی", + "icon": "pizza", + "index": 1, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-04T17:25:05.047Z" + }, + "updated_at": { + "$date": "2025-12-07T10:40:18.165Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ac5f9b26d2e0e4fbd9b3fe" + }, + "name": "استیک", + "icon": "steak", + "index": 5, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T06:43:39.852Z" + }, + "updated_at": { + "$date": "2025-12-07T10:47:04.964Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ac5fcb26d2e0e4fbd9b409" + }, + "name": "غذاهای گریل و فرنگی", + "icon": "restaurant", + "index": 8, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T06:44:27.732Z" + }, + "updated_at": { + "$date": "2025-12-07T11:00:49.241Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "name": "ساندویچ و برگر", + "icon": "burger", + "index": 4, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T06:45:11.513Z" + }, + "updated_at": { + "$date": "2025-12-07T10:46:04.984Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ac602726d2e0e4fbd9b43f" + }, + "name": "سوخاری", + "icon": "chicken-fry", + "index": 3, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T06:45:59.736Z" + }, + "updated_at": { + "$date": "2025-12-07T10:45:32.720Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ac606626d2e0e4fbd9b45a" + }, + "name": "سالاد", + "icon": "Asset1512", + "index": 9, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T06:47:02.961Z" + }, + "updated_at": { + "$date": "2025-12-07T11:01:07.393Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ac607926d2e0e4fbd9b465" + }, + "name": "پیش غذا", + "icon": "french-fries", + "index": 10, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T06:47:21.897Z" + }, + "updated_at": { + "$date": "2025-12-07T11:02:54.902Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ac60cdabb1b20239abe5bd" + }, + "name": "نوشیدنی ها", + "icon": "cola", + "index": 11, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T06:48:45.139Z" + }, + "updated_at": { + "$date": "2025-12-07T10:58:20.692Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61b1a16afc1eece3d7626360" + }, + "name": "قهوه ", + "icon": "tea", + "index": 15, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T06:25:46.269Z" + }, + "updated_at": { + "$date": "2025-12-07T11:13:40.749Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61b1a1a2fc1eece3d7626383" + }, + "name": "موهیتو بار", + "icon": "juice", + "index": 13, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T06:26:42.399Z" + }, + "updated_at": { + "$date": "2025-12-07T11:10:16.746Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61b1a1befc1eece3d7626390" + }, + "name": "اسموتی و شیک ها ", + "icon": "juice", + "index": 20, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T06:27:10.686Z" + }, + "updated_at": { + "$date": "2025-12-07T11:09:12.119Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61b1a1e0fc1eece3d762639b" + }, + "name": "کیک و دسر", + "icon": "cup-cake", + "index": 23, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T06:27:44.266Z" + }, + "updated_at": { + "$date": "2025-12-07T11:18:37.180Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "name": "نوشیدنی های گرم", + "icon": "Asset212", + "index": 1, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T08:53:28.397Z" + }, + "updated_at": { + "$date": "2022-02-16T11:20:02.737Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61d2c0ae5c48ecb13a43f39f" + }, + "name": "شیک ها", + "icon": "Asset1112", + "index": 2, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:23:58.879Z" + }, + "updated_at": { + "$date": "2022-02-16T11:20:11.041Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61d2c1e85c48ecb13a43f49e" + }, + "name": "کیک ها", + "icon": "Asset1412", + "index": 3, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:29:12.500Z" + }, + "updated_at": { + "$date": "2022-02-16T11:20:20.879Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61d2c25e5c48ecb13a43f506" + }, + "name": "شربت ها ", + "icon": "Asset1212", + "index": 4, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:31:10.089Z" + }, + "updated_at": { + "$date": "2022-02-16T11:20:54.961Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "name": "دمنوش ها", + "icon": "Asset212", + "index": 5, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:35:25.588Z" + }, + "updated_at": { + "$date": "2022-02-16T11:21:18.039Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61d5519955249f031c7e5d1b" + }, + "name": "test", + "icon": "coffee-pot", + "index": 1, + "storeId": { + "$oid": "61d2ab31fa054b3d183cfd06" + }, + "created_at": { + "$date": "2022-01-05T08:06:49.547Z" + }, + "updated_at": { + "$date": "2022-01-05T08:06:49.547Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61d551a655249f031c7e5d22" + }, + "name": "test2", + "icon": "chicken-fry", + "index": 2, + "storeId": { + "$oid": "61d2ab31fa054b3d183cfd06" + }, + "created_at": { + "$date": "2022-01-05T08:07:02.118Z" + }, + "updated_at": { + "$date": "2022-01-05T08:07:02.118Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3d3d4a8d41eae80b0cf0" + }, + "name": "صبحانه", + "icon": "culinary", + "index": 1, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:46:37.735Z" + }, + "updated_at": { + "$date": "2022-01-24T05:47:17.693Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3d534a8d41eae80b0cfb" + }, + "name": "سیب زمینی ها", + "icon": "french-fries", + "index": 2, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:46:59.704Z" + }, + "updated_at": { + "$date": "2022-01-24T05:46:59.704Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3db44a8d41eae80b0d16" + }, + "name": "پیش غذا و سالادها ", + "icon": "soup-bowl", + "index": 3, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:48:36.912Z" + }, + "updated_at": { + "$date": "2022-01-24T05:48:36.912Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3dcb4a8d41eae80b0d21" + }, + "name": "غذاهای اصلی ", + "icon": "burger", + "index": 4, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:48:59.392Z" + }, + "updated_at": { + "$date": "2022-01-24T05:53:47.264Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3ddf4a8d41eae80b0d2c" + }, + "name": "کوکی و دسرها (آیتم ها به تعداد محدود در روز موجود می‌باشد )", + "icon": "cup-cake", + "index": 5, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:49:19.030Z" + }, + "updated_at": { + "$date": "2022-01-24T05:49:19.030Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "name": "موکتل های ایرانی و ملل ", + "icon": "juice", + "index": 6, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:49:39.544Z" + }, + "updated_at": { + "$date": "2022-01-24T05:49:39.544Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "name": "شیک ها ", + "icon": "soft-drinks", + "index": 7, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:50:14.214Z" + }, + "updated_at": { + "$date": "2022-01-24T05:50:14.214Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "name": "نوشیدنی های گرم بر پایه اسپرسو ", + "icon": "tea", + "index": 8, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:50:40.589Z" + }, + "updated_at": { + "$date": "2022-01-24T05:50:40.589Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "name": "نوشیدنی های سرد بر پایه اسپرسو ", + "icon": "coffee-cup", + "index": 9, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:51:25.721Z" + }, + "updated_at": { + "$date": "2022-01-24T05:51:25.721Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "name": "نوشیدنی های گرم ملل ", + "icon": "tea", + "index": 10, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:51:40.958Z" + }, + "updated_at": { + "$date": "2022-01-24T05:51:40.958Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "name": "چای های ایرانی ", + "icon": "tea-pot", + "index": 11, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:51:53.062Z" + }, + "updated_at": { + "$date": "2022-01-24T05:51:53.062Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3f954a8d41eae80b0e1c" + }, + "name": "دمنوش ها ", + "icon": "tea-pot", + "index": 12, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:56:37.101Z" + }, + "updated_at": { + "$date": "2022-01-24T05:56:37.101Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3f9e4a8d41eae80b0e27" + }, + "name": "قهوه های شنی ", + "icon": "tea", + "index": 13, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:56:46.479Z" + }, + "updated_at": { + "$date": "2022-01-24T05:56:46.479Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3fab4a8d41eae80b0e32" + }, + "name": "کلد برو ", + "icon": "tea", + "index": 14, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:56:59.988Z" + }, + "updated_at": { + "$date": "2022-01-24T05:56:59.988Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee3fbd4a8d41eae80b0e3d" + }, + "name": "متدهای موج سوم", + "icon": "tea", + "index": 15, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T05:57:17.699Z" + }, + "updated_at": { + "$date": "2022-01-24T05:57:17.699Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee40f54a8d41eae80b0e4a" + }, + "name": "آپشنال ", + "icon": "restaurant", + "index": 16, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:02:29.445Z" + }, + "updated_at": { + "$date": "2022-01-24T06:02:29.445Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61fa87da01319e8e5cfe836f" + }, + "name": "نوشیدنی", + "icon": "cola", + "index": 18, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T13:32:10.070Z" + }, + "updated_at": { + "$date": "2022-02-02T13:32:10.070Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "name": "خوراک ها", + "icon": "restaurant", + "index": 1, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:21:50.529Z" + }, + "updated_at": { + "$date": "2022-02-09T13:23:07.187Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b2531ee4b0270db4b30a" + }, + "name": "چاشنی ها", + "icon": "soup-bowl", + "index": 2, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:23:47.657Z" + }, + "updated_at": { + "$date": "2022-02-09T12:24:08.629Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b27d1ee4b0270db4b32b" + }, + "name": "نوشیدنی های خنک", + "icon": "soft-drinks", + "index": 3, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:24:29.739Z" + }, + "updated_at": { + "$date": "2022-02-09T12:24:29.739Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203c0641ee4b0270db4b517" + }, + "name": "دسر ها", + "icon": "cup-cake", + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T13:23:48.348Z" + }, + "updated_at": { + "$date": "2022-02-09T13:23:48.348Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "name": "پیش غذا ", + "icon": "Asset1512", + "index": 2, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-12T12:01:46.410Z" + }, + "updated_at": { + "$date": "2023-02-03T18:36:48.091Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6207a1c11ee4b0270db4c3da" + }, + "name": "پیتزا آمریکایی", + "icon": "Asset2212", + "index": 4, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-12T12:02:09.821Z" + }, + "updated_at": { + "$date": "2023-02-03T18:37:24.175Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "name": "پیتزا ایتالیایی ", + "icon": "Asset2212", + "index": 3, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-12T12:02:48.822Z" + }, + "updated_at": { + "$date": "2022-02-14T09:09:28.860Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6207a1f81ee4b0270db4c3ef" + }, + "name": "پاستا ", + "icon": "Asset1312", + "index": 6, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-12T12:03:04.961Z" + }, + "updated_at": { + "$date": "2023-02-03T18:38:02.755Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6207a2141ee4b0270db4c3f8" + }, + "name": "ناهار بوته", + "icon": "Asset912", + "index": 8, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-12T12:03:32.871Z" + }, + "updated_at": { + "$date": "2023-02-03T18:38:27.963Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6207a2421ee4b0270db4c40b" + }, + "name": "غذای اصلی", + "icon": "Asset2112", + "index": 5, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-12T12:04:18.008Z" + }, + "updated_at": { + "$date": "2023-02-03T18:37:40.557Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6207a2681ee4b0270db4c429" + }, + "name": "ساندویچ", + "icon": "Asset1612", + "index": 7, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-12T12:04:56.309Z" + }, + "updated_at": { + "$date": "2023-02-03T18:34:54.168Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6207a2c31ee4b0270db4c43c" + }, + "name": "اسپرسو بار", + "icon": "Asset212", + "index": 15, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-12T12:06:27.299Z" + }, + "updated_at": { + "$date": "2024-09-19T16:54:18.322Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6207a2d91ee4b0270db4c445" + }, + "name": "دمی بار", + "icon": "Asset212", + "index": 16, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-12T12:06:49.648Z" + }, + "updated_at": { + "$date": "2024-09-21T13:36:05.411Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6207a2ee1ee4b0270db4c44f" + }, + "name": "هاوس آف تی", + "icon": "Asset612", + "index": 17, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-12T12:07:10.371Z" + }, + "updated_at": { + "$date": "2024-09-21T13:24:59.657Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6207a2fd1ee4b0270db4c458" + }, + "name": "امریکن استایل", + "icon": "Asset212", + "index": 18, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-12T12:07:25.307Z" + }, + "updated_at": { + "$date": "2024-09-21T13:35:21.273Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208a93b1ee4b0270db4c715" + }, + "name": "کیک و دسر", + "icon": "Asset1412", + "index": 25, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T06:46:19.419Z" + }, + "updated_at": { + "$date": "2024-09-21T13:16:00.989Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208a9511ee4b0270db4c722" + }, + "name": "آیس کافی", + "icon": "Asset712", + "index": 14, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T06:46:41.889Z" + }, + "updated_at": { + "$date": "2024-09-21T13:34:49.605Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "name": "ماکتل بار", + "icon": "juice", + "index": 10, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T06:47:03.539Z" + }, + "updated_at": { + "$date": "2024-09-19T16:36:43.402Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208a97b1ee4b0270db4c734" + }, + "name": "ژلاتو میلک شیک", + "icon": "Asset1112", + "index": 12, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T06:47:23.287Z" + }, + "updated_at": { + "$date": "2024-09-19T16:38:17.917Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "name": "نوشیدنی های گرم ", + "icon": "Asset212", + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T08:43:55.703Z" + }, + "updated_at": { + "$date": "2022-02-14T11:36:44.298Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "name": "نوشیدنی های سرد ", + "icon": "Asset712", + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T08:46:16.469Z" + }, + "updated_at": { + "$date": "2022-02-13T08:46:16.469Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208c57e2cf0cf6959b13cb4" + }, + "name": "صبحانه ", + "icon": "Asset412", + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T08:46:54.033Z" + }, + "updated_at": { + "$date": "2022-02-13T08:46:54.033Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "name": "میان وعده", + "icon": "Asset1712", + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T08:47:53.852Z" + }, + "updated_at": { + "$date": "2022-02-13T08:47:53.852Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "name": "بستنی", + "icon": "Asset812", + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T08:48:10.929Z" + }, + "updated_at": { + "$date": "2022-02-13T08:48:10.929Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "name": "شیک", + "icon": "Asset1112", + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T08:48:35.921Z" + }, + "updated_at": { + "$date": "2022-02-13T08:48:35.921Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6211ff10c647562f307ebada" + }, + "name": "test", + "icon": "Asset712", + "index": 1, + "storeId": { + "$oid": "61f7db200f1d12950f8ba1c9" + }, + "created_at": { + "$date": "2022-02-20T08:42:56.089Z" + }, + "updated_at": { + "$date": "2022-03-21T12:28:28.663Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "621202be7d3b1d322849e684" + }, + "name": "test2", + "icon": "Asset412", + "index": 2, + "storeId": { + "$oid": "61f7db200f1d12950f8ba1c9" + }, + "created_at": { + "$date": "2022-02-20T08:58:38.879Z" + }, + "updated_at": { + "$date": "2022-02-20T08:58:38.879Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "name": "پیتزا ایتالیایی ", + "icon": "Asset2212", + "index": 1, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T07:30:36.627Z" + }, + "updated_at": { + "$date": "2022-02-24T06:54:47.309Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6215e2d2ee45f61f3a696e7b" + }, + "name": "پیتزا آمریکایی ", + "icon": "Asset2212", + "index": 2, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T07:31:30.275Z" + }, + "updated_at": { + "$date": "2022-02-24T06:54:36.079Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6215f665ee45f61f3a69723d" + }, + "name": "پاستاها", + "icon": "Asset1312", + "index": 3, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T08:55:01.698Z" + }, + "updated_at": { + "$date": "2022-02-24T06:55:06.769Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6215f9c1ee45f61f3a69728c" + }, + "name": "استیک ها", + "icon": "Asset1012", + "index": 5, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T09:09:21.026Z" + }, + "updated_at": { + "$date": "2022-02-24T06:55:44.606Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6215fe09ee45f61f3a69731e" + }, + "name": "برگرها", + "icon": "Asset112", + "index": 4, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T09:27:37.972Z" + }, + "updated_at": { + "$date": "2022-02-24T06:55:19.939Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62161535ee45f61f3a69741c" + }, + "name": "ایرانی", + "icon": "Asset912", + "index": 6, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T11:06:29.699Z" + }, + "updated_at": { + "$date": "2022-06-09T16:13:16.211Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "621e6021a03b80e0a44edd72" + }, + "name": "سالاد.", + "icon": "Asset1512", + "index": 8, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-01T18:04:17.680Z" + }, + "updated_at": { + "$date": "2022-03-01T18:04:48.817Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6225095ca03b80e0a44ef756" + }, + "name": "پیش غذا.", + "icon": "french-fries", + "index": 17, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:19:56.490Z" + }, + "updated_at": { + "$date": "2022-03-06T19:19:56.490Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250c18a03b80e0a44ef7b2" + }, + "name": "نوشیدنی ها ", + "icon": "cola", + "index": 18, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:31:36.352Z" + }, + "updated_at": { + "$date": "2022-03-06T19:31:36.352Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62318f05a03b80e0a44f2d2f" + }, + "name": " پیش غذا", + "icon": "Asset412", + "index": 1, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2022-03-16T07:17:25.970Z" + }, + "updated_at": { + "$date": "2022-09-22T09:23:30.055Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "name": "کباب ها ", + "icon": "Asset912", + "index": 3, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2022-03-16T07:18:20.878Z" + }, + "updated_at": { + "$date": "2022-09-22T09:27:24.502Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62379461c1bb048b321cd974" + }, + "name": "نوشیدنی گرم بر پایه اسپرسو", + "icon": "Asset212", + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-20T20:53:53.479Z" + }, + "updated_at": { + "$date": "2022-03-20T20:53:53.479Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62379490c1bb048b321cd980" + }, + "name": " نوشیدنی گرم ", + "icon": "Asset2012", + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-20T20:54:40.052Z" + }, + "updated_at": { + "$date": "2022-04-01T09:20:21.043Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6237949ec1bb048b321cd989" + }, + "name": "قهوه سرد", + "icon": "Asset712", + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-20T20:54:54.035Z" + }, + "updated_at": { + "$date": "2022-03-20T20:54:54.035Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "623794afc1bb048b321cd993" + }, + "name": " قهوه دمی", + "icon": "Asset1912", + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-20T20:55:11.527Z" + }, + "updated_at": { + "$date": "2022-03-20T20:55:11.527Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "623794dbc1bb048b321cd99d" + }, + "name": " میان وعده و دسر", + "icon": "Asset1412", + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-20T20:55:55.338Z" + }, + "updated_at": { + "$date": "2022-03-20T20:55:55.338Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f52d2ec44ae525a1522db" + }, + "name": "پیش غذاها", + "icon": "Asset2112", + "index": 8, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T06:57:22.402Z" + }, + "updated_at": { + "$date": "2022-06-06T16:46:34.034Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f5634ec44ae525a152397" + }, + "name": "ساندویچ و برگر", + "icon": "Asset112", + "index": 3, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:11:48.433Z" + }, + "updated_at": { + "$date": "2022-06-06T16:44:00.730Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f5657ec44ae525a1523a3" + }, + "name": "پیتزا امریکایی", + "icon": "Asset2212", + "index": 1, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:12:23.451Z" + }, + "updated_at": { + "$date": "2022-06-06T16:49:01.737Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "name": "پیتزا ایتالیایی", + "icon": "Asset2212", + "index": 2, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:12:36.903Z" + }, + "updated_at": { + "$date": "2022-06-06T16:44:25.413Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f5672ec44ae525a1523b5" + }, + "name": "پاستا", + "icon": "Asset1312", + "index": 5, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:12:50.161Z" + }, + "updated_at": { + "$date": "2022-05-14T07:12:50.161Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f5693ec44ae525a1523be" + }, + "name": "استیک", + "icon": "Asset1012", + "index": 4, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:13:23.599Z" + }, + "updated_at": { + "$date": "2022-06-06T16:46:07.234Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f56a4ec44ae525a1523c7" + }, + "name": "سوخاری", + "icon": "111", + "index": 7, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:13:40.613Z" + }, + "updated_at": { + "$date": "2022-05-14T07:13:40.613Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f56b2ec44ae525a1523d0" + }, + "name": "سالاد", + "icon": "Asset1512", + "index": 13, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:13:54.452Z" + }, + "updated_at": { + "$date": "2022-06-06T16:45:43.134Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f56c3ec44ae525a1523d9" + }, + "name": "بشقاب", + "icon": "Asset1712", + "index": 9, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:14:11.913Z" + }, + "updated_at": { + "$date": "2022-05-14T07:14:11.913Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f56fdec44ae525a1523e8" + }, + "name": "پیده", + "icon": "444", + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:15:09.804Z" + }, + "updated_at": { + "$date": "2022-05-14T07:15:09.804Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f5717ec44ae525a1523f1" + }, + "name": "خوراک", + "icon": "333", + "index": 10, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:15:35.054Z" + }, + "updated_at": { + "$date": "2022-05-14T07:15:35.054Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fe90bec44ae525a153778" + }, + "name": "کیک و دسر", + "icon": "cup-cake", + "index": 20, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-14T17:38:19.897Z" + }, + "updated_at": { + "$date": "2022-05-14T17:38:19.897Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fecc5ec44ae525a153875" + }, + "name": "اسپرسو بار", + "icon": "Asset212", + "index": 21, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-14T17:54:13.599Z" + }, + "updated_at": { + "$date": "2022-05-14T17:54:13.599Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627ff48fec44ae525a153a39" + }, + "name": "نوشیدنی های گرم", + "icon": "tea", + "index": 19, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-14T18:27:27.794Z" + }, + "updated_at": { + "$date": "2022-05-14T18:27:27.794Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62810c47d65610bd301c56ea" + }, + "name": "چای و دمنوش", + "icon": "Asset2012", + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T14:20:55.913Z" + }, + "updated_at": { + "$date": "2024-06-18T11:13:51.161Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628115c8d65610bd301c5837" + }, + "name": "آیس کافه", + "icon": "Asset712", + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T15:01:28.612Z" + }, + "updated_at": { + "$date": "2022-05-15T15:01:28.612Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628119add65610bd301c5919" + }, + "name": "میلک شیک", + "icon": "Asset1112", + "index": 12, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T15:18:05.513Z" + }, + "updated_at": { + "$date": "2022-05-15T15:18:05.513Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62811f18d65610bd301c5a4b" + }, + "name": "نوشیدی های سرد", + "icon": "Asset1212", + "index": 14, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T15:41:12.531Z" + }, + "updated_at": { + "$date": "2022-05-15T15:41:12.531Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62813302d65610bd301c5e57" + }, + "name": "قهوه های دمی.", + "icon": "Asset2012", + "index": 16, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T17:06:10.147Z" + }, + "updated_at": { + "$date": "2022-05-15T17:06:10.147Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815bddd65610bd301c653a" + }, + "name": "نوشیدنی گرم", + "icon": "Asset212", + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T20:00:29.217Z" + }, + "updated_at": { + "$date": "2022-05-15T20:00:29.217Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815bf1d65610bd301c6543" + }, + "name": "نوشیدنی سرد", + "icon": "Asset1212", + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T20:00:49.981Z" + }, + "updated_at": { + "$date": "2022-05-15T20:00:49.981Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815c51d65610bd301c6552" + }, + "name": "دسر و کیک", + "icon": "Asset1412", + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T20:02:25.787Z" + }, + "updated_at": { + "$date": "2022-05-15T20:02:25.787Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815c66d65610bd301c655b" + }, + "name": "بستنی", + "icon": "Asset1112", + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T20:02:46.870Z" + }, + "updated_at": { + "$date": "2022-05-15T20:02:46.870Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815c77d65610bd301c6564" + }, + "name": "دمنوش گیاهی", + "icon": "Asset1912", + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T20:03:03.557Z" + }, + "updated_at": { + "$date": "2022-05-15T20:03:03.557Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815caad65610bd301c656d" + }, + "name": "اسموتی", + "icon": "Asset1212", + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T20:03:54.883Z" + }, + "updated_at": { + "$date": "2022-05-15T20:03:54.883Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815cd3d65610bd301c657c" + }, + "name": "شیک", + "icon": "Asset1112", + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T20:04:35.296Z" + }, + "updated_at": { + "$date": "2022-05-15T20:07:11.279Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815ce6d65610bd301c6585" + }, + "name": "ماکتل ها", + "icon": "Asset1212", + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T20:04:54.741Z" + }, + "updated_at": { + "$date": "2023-03-13T14:43:16.315Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815d39d65610bd301c659a" + }, + "name": "شربت ها", + "icon": "Asset1212", + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T20:06:17.470Z" + }, + "updated_at": { + "$date": "2022-06-04T05:18:11.236Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62824a29d65610bd301c6db7" + }, + "name": "گلاسه ها", + "icon": "Asset812", + "index": 9, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-16T12:57:13.932Z" + }, + "updated_at": { + "$date": "2022-05-16T12:57:13.932Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6288e0d945a8f989e78560f3" + }, + "name": "قلیان", + "icon": "Asset111", + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-05-21T12:53:45.485Z" + }, + "updated_at": { + "$date": "2022-05-21T12:53:45.485Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628b66ceea3462120c4df415" + }, + "name": "test", + "icon": "coffee-cup", + "index": 3, + "storeId": { + "$oid": "6204b1626175e2247c298b04" + }, + "created_at": { + "$date": "2022-05-23T10:49:50.408Z" + }, + "updated_at": { + "$date": "2022-07-28T06:32:24.003Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628b66d8ea3462120c4df41e" + }, + "name": "test3", + "icon": "cola", + "index": 1, + "storeId": { + "$oid": "6204b1626175e2247c298b04" + }, + "created_at": { + "$date": "2022-05-23T10:50:00.148Z" + }, + "updated_at": { + "$date": "2022-08-18T06:49:59.798Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a1facb128ed6fd0132a439" + }, + "name": "لقمه", + "icon": "hot-dog", + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-06-09T13:51:07.707Z" + }, + "updated_at": { + "$date": "2022-06-09T13:51:07.707Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a9d201128ed6fd01333327" + }, + "name": "غذا", + "icon": "Asset912", + "index": 2, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T12:35:13.581Z" + }, + "updated_at": { + "$date": "2022-07-28T07:23:18.902Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a9d21f128ed6fd01333336" + }, + "name": "فرنگی", + "icon": "Asset1012", + "index": 3, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T12:35:43.861Z" + }, + "updated_at": { + "$date": "2022-07-28T07:23:46.431Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a9d23f128ed6fd0133333f" + }, + "name": "سالاد ها", + "icon": "Asset1512", + "index": 4, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T12:36:15.082Z" + }, + "updated_at": { + "$date": "2022-07-28T07:23:57.300Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a9d259128ed6fd0133334b" + }, + "name": "نوشیدنی", + "icon": "Asset1212", + "index": 5, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T12:36:41.542Z" + }, + "updated_at": { + "$date": "2022-07-28T07:24:09.663Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a9d264128ed6fd01333354" + }, + "name": "قلیان", + "icon": "Asset111", + "index": 6, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T12:36:52.778Z" + }, + "updated_at": { + "$date": "2022-07-28T07:24:22.391Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a9d606128ed6fd0133338a" + }, + "name": "نوشیدنی های گرم", + "icon": "Asset212", + "index": 7, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T12:52:22.340Z" + }, + "updated_at": { + "$date": "2022-07-28T07:24:33.269Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a9d621128ed6fd01333393" + }, + "name": "آیس کافی", + "icon": "Asset712", + "index": 8, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T12:52:49.728Z" + }, + "updated_at": { + "$date": "2022-07-28T07:24:58.301Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a9d630128ed6fd0133339c" + }, + "name": "چای", + "icon": "Asset2012", + "index": 9, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T12:53:04.945Z" + }, + "updated_at": { + "$date": "2022-07-28T07:25:09.042Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a9d6bc128ed6fd013333bb" + }, + "name": "قهوه نسل ۳", + "icon": "Asset212", + "index": 10, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T12:55:24.890Z" + }, + "updated_at": { + "$date": "2022-07-28T07:25:18.424Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a9d6cc128ed6fd013333c4" + }, + "name": "ماکتل ها", + "icon": "Asset1212", + "index": 11, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T12:55:40.211Z" + }, + "updated_at": { + "$date": "2022-07-28T07:25:28.312Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a9d6e4128ed6fd013333d4" + }, + "name": "شیک ها", + "icon": "Asset1112", + "index": 12, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T12:56:04.129Z" + }, + "updated_at": { + "$date": "2022-07-28T07:25:37.031Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b03ac4128ed6fd01339f8f" + }, + "name": "پیش غذاها", + "icon": "Asset312", + "index": 1, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-20T09:15:48.189Z" + }, + "updated_at": { + "$date": "2022-07-28T07:22:44.563Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceaa9c7400250986c70a30" + }, + "name": "خوراک مخصوص هفت خوان", + "icon": "Asset912", + "index": 1, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T11:21:00.719Z" + }, + "updated_at": { + "$date": "2022-07-13T11:21:00.719Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceaac57400250986c70a39" + }, + "name": "خوراک", + "icon": "Asset312", + "index": 2, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T11:21:41.718Z" + }, + "updated_at": { + "$date": "2022-07-13T11:21:41.718Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceab227400250986c70a42" + }, + "name": "پیش غذا", + "icon": "Asset1512", + "index": 3, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T11:23:14.602Z" + }, + "updated_at": { + "$date": "2022-07-13T11:23:14.602Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceab507400250986c70a4b" + }, + "name": "نوشیدنی", + "icon": "cola", + "index": 4, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T11:24:00.722Z" + }, + "updated_at": { + "$date": "2022-07-13T11:24:00.722Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceabc87400250986c70a68" + }, + "name": "چای و نوشیدنی گرم", + "icon": "Asset212", + "index": 5, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T11:26:00.506Z" + }, + "updated_at": { + "$date": "2022-07-13T11:26:00.506Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceabe27400250986c70a71" + }, + "name": "قلیان", + "icon": "Asset111", + "index": 6, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T11:26:26.061Z" + }, + "updated_at": { + "$date": "2022-07-13T11:26:26.061Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebe677400250986c70e76" + }, + "name": "دسر", + "icon": "Asset812", + "index": 7, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:45:27.591Z" + }, + "updated_at": { + "$date": "2022-07-13T12:45:27.591Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "name": " نوشیدنی های سرد", + "icon": "Asset1212", + "index": 11, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2022-07-24T13:01:52.194Z" + }, + "updated_at": { + "$date": "2023-07-13T13:35:53.394Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62dd47a5faacb066e12064d0" + }, + "name": "پیتزا ", + "icon": "pizza", + "index": 3, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2022-07-24T13:22:45.709Z" + }, + "updated_at": { + "$date": "2023-07-13T13:23:36.222Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62deac91faacb066e12087e7" + }, + "name": "صبحانه", + "icon": "Asset412", + "index": 1, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-07-25T14:45:37.740Z" + }, + "updated_at": { + "$date": "2023-02-03T18:35:56.438Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62e400a696be484852cba44b" + }, + "name": "پیتزاها", + "icon": "Asset2212", + "index": 1, + "storeId": { + "$oid": "62e3ff5e96be484852cba3c3" + }, + "created_at": { + "$date": "2022-07-29T15:45:42.099Z" + }, + "updated_at": { + "$date": "2022-07-29T15:45:42.099Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314a2d5e410c5322751b0ba" + }, + "name": "پیتزا", + "icon": "Asset2212", + "index": 1, + "storeId": { + "$oid": "63131c3d96be484852d0a9ed" + }, + "created_at": { + "$date": "2022-09-04T13:06:29.828Z" + }, + "updated_at": { + "$date": "2022-09-04T13:10:45.740Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314ab2be410c5322751b32c" + }, + "name": "پیتزا", + "icon": "Asset2212", + "index": 1, + "storeId": { + "$oid": "6314a7c9e410c5322751b227" + }, + "created_at": { + "$date": "2022-09-04T13:42:03.082Z" + }, + "updated_at": { + "$date": "2022-09-04T13:43:02.958Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314ab3ce410c5322751b335" + }, + "name": "پاستا", + "icon": "Asset1312", + "index": 2, + "storeId": { + "$oid": "6314a7c9e410c5322751b227" + }, + "created_at": { + "$date": "2022-09-04T13:42:20.161Z" + }, + "updated_at": { + "$date": "2022-09-04T13:42:20.161Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314ab58e410c5322751b33e" + }, + "name": "سالاد", + "icon": "Asset1512", + "index": 3, + "storeId": { + "$oid": "6314a7c9e410c5322751b227" + }, + "created_at": { + "$date": "2022-09-04T13:42:48.892Z" + }, + "updated_at": { + "$date": "2022-09-04T13:42:48.892Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314ab7ce410c5322751b35b" + }, + "name": "سیب زمینی ", + "icon": "Asset512", + "index": 4, + "storeId": { + "$oid": "6314a7c9e410c5322751b227" + }, + "created_at": { + "$date": "2022-09-04T13:43:24.128Z" + }, + "updated_at": { + "$date": "2022-09-04T13:43:24.128Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314ab8de410c5322751b364" + }, + "name": "بشقاب", + "icon": "culinary", + "index": 5, + "storeId": { + "$oid": "6314a7c9e410c5322751b227" + }, + "created_at": { + "$date": "2022-09-04T13:43:41.436Z" + }, + "updated_at": { + "$date": "2022-09-04T13:43:41.436Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314aba0e410c5322751b36d" + }, + "name": "پنینی", + "icon": "111", + "index": 6, + "storeId": { + "$oid": "6314a7c9e410c5322751b227" + }, + "created_at": { + "$date": "2022-09-04T13:44:00.632Z" + }, + "updated_at": { + "$date": "2022-09-04T13:44:00.632Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314abbfe410c5322751b376" + }, + "name": "صبحانه", + "icon": "Asset412", + "index": 7, + "storeId": { + "$oid": "6314a7c9e410c5322751b227" + }, + "created_at": { + "$date": "2022-09-04T13:44:31.699Z" + }, + "updated_at": { + "$date": "2022-09-04T13:44:31.699Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314abd7e410c5322751b37f" + }, + "name": "شیک", + "icon": "Asset1112", + "index": 8, + "storeId": { + "$oid": "6314a7c9e410c5322751b227" + }, + "created_at": { + "$date": "2022-09-04T13:44:55.315Z" + }, + "updated_at": { + "$date": "2022-09-04T13:44:55.315Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314abefe410c5322751b39d" + }, + "name": "ماکتیل", + "icon": "Asset1212", + "index": 9, + "storeId": { + "$oid": "6314a7c9e410c5322751b227" + }, + "created_at": { + "$date": "2022-09-04T13:45:19.910Z" + }, + "updated_at": { + "$date": "2022-09-04T13:45:19.910Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "632c1d71e410c5322753e6b7" + }, + "name": "دمنوش", + "icon": "Asset1912", + "index": 15, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2022-09-22T08:31:45.400Z" + }, + "updated_at": { + "$date": "2022-09-22T09:21:13.712Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6335df1ae410c532275484e5" + }, + "name": "قهوه های دمی", + "icon": "tea-pot", + "index": 22, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2022-09-29T18:08:26.002Z" + }, + "updated_at": { + "$date": "2022-09-29T18:08:26.002Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "name": "قهوه و نوشیدنی گرم", + "icon": "Asset212", + "index": 6, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2022-12-13T14:09:43.953Z" + }, + "updated_at": { + "$date": "2023-10-04T16:40:34.286Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6398a0a482d7fc8d726a7f22" + }, + "name": "پیش غذا و سالاد ", + "icon": "Asset1512", + "index": 2, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2022-12-13T15:56:20.469Z" + }, + "updated_at": { + "$date": "2023-05-06T12:12:01.106Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "639c921d82d7fc8d726ac4ef" + }, + "name": "کیک", + "icon": "Asset1412", + "index": 14, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2022-12-16T15:43:25.623Z" + }, + "updated_at": { + "$date": "2023-07-13T14:49:12.232Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63a534a382d7fc8d726b3a9a" + }, + "name": "صبحانه ", + "icon": "Asset412", + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-12-23T04:54:59.649Z" + }, + "updated_at": { + "$date": "2022-12-23T04:54:59.649Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63cc0eea701ec3ea99722f38" + }, + "name": "قهوه های دمی ", + "icon": "Asset1912", + "index": 10, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2023-01-21T16:12:26.429Z" + }, + "updated_at": { + "$date": "2023-07-13T13:15:34.680Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "644e450498ff3c7414411176" + }, + "name": "چای و دمنوش ", + "icon": "Asset1912", + "index": 17, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-04-30T10:37:56.648Z" + }, + "updated_at": { + "$date": "2025-12-07T11:14:04.311Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450ac7a98ff3c741441425a" + }, + "name": "برگر", + "icon": "Asset112", + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:23:54.670Z" + }, + "updated_at": { + "$date": "2023-05-02T06:48:53.089Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450adf498ff3c74144142e4" + }, + "name": "پاستا", + "icon": "Asset1312", + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:30:12.286Z" + }, + "updated_at": { + "$date": "2023-05-02T06:30:12.286Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450aec598ff3c741441431c" + }, + "name": "پنینی ", + "icon": "Asset1612", + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:33:41.825Z" + }, + "updated_at": { + "$date": "2023-05-25T15:43:56.327Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b11298ff3c7414414381" + }, + "name": "هات داگ ", + "icon": "hot-dog", + "index": 5, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:43:30.739Z" + }, + "updated_at": { + "$date": "2023-05-02T06:43:30.739Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b1d498ff3c74144143d2" + }, + "name": "سوخاری", + "icon": "111", + "index": 6, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:46:44.343Z" + }, + "updated_at": { + "$date": "2023-05-02T06:46:44.343Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b24a98ff3c7414414400" + }, + "name": "سیب زمینی", + "icon": "Asset512", + "index": 7, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:48:42.401Z" + }, + "updated_at": { + "$date": "2023-05-23T07:40:42.087Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b2ed98ff3c741441445c" + }, + "name": "سالاد", + "icon": "Asset1512", + "index": 8, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:51:25.259Z" + }, + "updated_at": { + "$date": "2023-05-02T06:51:25.259Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b33898ff3c7414414480" + }, + "name": "نوشیدنی", + "icon": "juice", + "index": 9, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:52:40.182Z" + }, + "updated_at": { + "$date": "2023-05-02T06:52:40.182Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "name": "اسپرسو بار", + "icon": "tea", + "index": 10, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:55:08.482Z" + }, + "updated_at": { + "$date": "2023-05-02T06:55:08.482Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "name": "نوشیدنی گرم", + "icon": "Asset212", + "index": 11, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:58:50.140Z" + }, + "updated_at": { + "$date": "2023-05-02T06:58:50.140Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b5a098ff3c7414414592" + }, + "name": "دمی", + "icon": "Asset1912", + "index": 12, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:02:56.763Z" + }, + "updated_at": { + "$date": "2023-05-02T07:02:56.763Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b64598ff3c74144145ca" + }, + "name": " ایس کافی", + "icon": "coffee-cup", + "index": 13, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:05:41.448Z" + }, + "updated_at": { + "$date": "2023-05-02T07:05:41.448Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d14398ff3c74144147d7" + }, + "name": "چای دمنوش", + "icon": "Asset1912", + "index": 14, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:00:51.657Z" + }, + "updated_at": { + "$date": "2023-05-02T09:00:51.657Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d60f98ff3c7414414899" + }, + "name": "کیک", + "icon": "Asset1412", + "index": 17, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:21:19.754Z" + }, + "updated_at": { + "$date": "2023-05-02T09:21:19.754Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d68d98ff3c74144148ca" + }, + "name": "شیک", + "icon": "Asset712", + "index": 18, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:23:25.954Z" + }, + "updated_at": { + "$date": "2023-05-02T09:23:25.954Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d7be98ff3c7414414965" + }, + "name": "نوشیدنی سرد", + "icon": "Asset1212", + "index": 19, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:28:30.864Z" + }, + "updated_at": { + "$date": "2023-05-02T09:28:30.864Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6452153398ff3c74144161a1" + }, + "name": "سیروپ", + "icon": "coffee-pot", + "index": 8, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T08:02:59.955Z" + }, + "updated_at": { + "$date": "2025-01-25T16:41:31.003Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "645215c898ff3c74144161bc" + }, + "name": "کیک", + "icon": "Asset1412", + "index": 6, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T08:05:28.646Z" + }, + "updated_at": { + "$date": "2025-01-25T16:41:02.563Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6456a24198ff3c741441c6ef" + }, + "name": "چای و دمنوش", + "icon": "Asset2012", + "index": 8, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2023-05-06T18:53:53.585Z" + }, + "updated_at": { + "$date": "2023-05-06T18:53:53.585Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6465fff598ff3c741442d594" + }, + "name": "نوشیدنی های گرم (بر پایه اسپرسو)", + "icon": "Asset212", + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:37:41.571Z" + }, + "updated_at": { + "$date": "2023-05-18T10:37:41.571Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6466024198ff3c741442d5fb" + }, + "name": "نوشیدنی های سرد ", + "icon": "soft-drinks", + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:47:29.956Z" + }, + "updated_at": { + "$date": "2023-05-31T19:13:45.330Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6466025c98ff3c741442d607" + }, + "name": " نوشیدنی های گرم ملل", + "icon": "tea", + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:47:56.580Z" + }, + "updated_at": { + "$date": "2023-05-28T15:03:49.776Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6466026898ff3c741442d613" + }, + "name": " قهوه های شنی", + "icon": "Asset1912", + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:48:08.375Z" + }, + "updated_at": { + "$date": "2023-05-28T15:04:01.958Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6466027798ff3c741442d61f" + }, + "name": " شیک ها", + "icon": "Asset1112", + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:48:23.070Z" + }, + "updated_at": { + "$date": "2023-05-18T10:48:23.070Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6466028998ff3c741442d628" + }, + "name": " کوکی ها و دسرها", + "icon": "Asset1412", + "index": 6, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:48:41.161Z" + }, + "updated_at": { + "$date": "2023-05-18T10:48:41.161Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646602b598ff3c741442d63d" + }, + "name": " کلد برو", + "icon": "Asset712", + "index": 7, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:49:25.780Z" + }, + "updated_at": { + "$date": "2023-05-28T15:22:29.295Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646602c298ff3c741442d64f" + }, + "name": " موج سوم", + "icon": "Asset212", + "index": 8, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:49:38.602Z" + }, + "updated_at": { + "$date": "2023-05-28T15:23:59.464Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646602d898ff3c741442d65b" + }, + "name": " چای های ایرانی", + "icon": "Asset2012", + "index": 9, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:50:00.173Z" + }, + "updated_at": { + "$date": "2023-05-28T15:22:00.058Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646602eb98ff3c741442d667" + }, + "name": " دمنوش ها", + "icon": "Asset612", + "index": 10, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:50:19.479Z" + }, + "updated_at": { + "$date": "2023-05-28T15:23:36.385Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646602fc98ff3c741442d670" + }, + "name": " ماکتل ها", + "icon": "juice", + "index": 11, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:50:36.681Z" + }, + "updated_at": { + "$date": "2023-05-28T15:24:11.615Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6466031798ff3c741442d68b" + }, + "name": " غذاهای اصلی", + "icon": "Asset112", + "index": 12, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:51:03.793Z" + }, + "updated_at": { + "$date": "2023-05-18T10:51:03.793Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6466032598ff3c741442d6a0" + }, + "name": " پیش غذاها", + "icon": "Asset1512", + "index": 13, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:51:17.231Z" + }, + "updated_at": { + "$date": "2023-05-18T10:52:05.163Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6466034998ff3c741442d6b8" + }, + "name": " سیب زمینی ها", + "icon": "Asset512", + "index": 14, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:51:53.574Z" + }, + "updated_at": { + "$date": "2023-05-18T10:51:53.574Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6466038f98ff3c741442d6e5" + }, + "name": " صبحانه ها", + "icon": "Asset412", + "index": 16, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:53:03.749Z" + }, + "updated_at": { + "$date": "2023-05-28T14:59:38.727Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646603a098ff3c741442d6ee" + }, + "name": " آپشنال", + "icon": "333", + "index": 17, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:53:20.820Z" + }, + "updated_at": { + "$date": "2023-05-18T10:53:20.820Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64a6937598ff3c741447ce92" + }, + "name": "آیس کافی", + "icon": "Asset1112", + "index": 22, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-06T10:12:05.048Z" + }, + "updated_at": { + "$date": "2025-12-07T11:11:10.836Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64ae92ed98ff3c7414486796" + }, + "name": "برگرها", + "icon": "Asset112", + "index": 2, + "storeId": { + "$oid": "61fe34411ee4b0270db4a459" + }, + "created_at": { + "$date": "2023-07-12T11:47:57.474Z" + }, + "updated_at": { + "$date": "2024-11-25T11:25:26.058Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64ae931298ff3c741448679f" + }, + "name": "سالادها", + "icon": "Asset1512", + "index": 1, + "storeId": { + "$oid": "61fe34411ee4b0270db4a459" + }, + "created_at": { + "$date": "2023-07-12T11:48:34.563Z" + }, + "updated_at": { + "$date": "2024-11-25T11:25:34.579Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64aff92198ff3c7414488119" + }, + "name": "پاستا", + "icon": "Asset1312", + "index": 4, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2023-07-13T13:16:17.257Z" + }, + "updated_at": { + "$date": "2023-07-13T13:16:17.257Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64b4e68898ff3c741448df04" + }, + "name": "پیش غذا", + "icon": "Asset512", + "index": 1, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-07-17T06:58:16.642Z" + }, + "updated_at": { + "$date": "2023-07-17T06:58:16.642Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64b4e69698ff3c741448df0d" + }, + "name": "برگرها", + "icon": "Asset112", + "index": 2, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-07-17T06:58:30.762Z" + }, + "updated_at": { + "$date": "2023-07-17T07:00:02.036Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64ba6e2698ff3c7414494144" + }, + "name": "دبل برگرها", + "icon": "Asset112", + "index": 3, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-07-21T11:38:14.985Z" + }, + "updated_at": { + "$date": "2023-07-21T17:23:29.481Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64babeff98ff3c7414494b79" + }, + "name": "تریپل برگرها", + "icon": "Asset112", + "index": 4, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-07-21T17:23:11.836Z" + }, + "updated_at": { + "$date": "2023-08-29T08:57:49.475Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad54b98ff3c7414495269" + }, + "name": "سالاد و پیش غذا", + "icon": "Asset1512", + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T18:58:19.997Z" + }, + "updated_at": { + "$date": "2023-07-22T18:33:10.791Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad66d98ff3c7414495299" + }, + "name": "آش بار مهتاب", + "icon": "333", + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:03:09.872Z" + }, + "updated_at": { + "$date": "2023-07-21T19:09:24.164Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad7d298ff3c74144952de" + }, + "name": "غذای اصلی", + "icon": "Asset2112", + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:09:06.227Z" + }, + "updated_at": { + "$date": "2023-07-21T19:09:06.227Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad81798ff3c74144952fb" + }, + "name": "شربت بار مهتاب", + "icon": "juice", + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:10:15.074Z" + }, + "updated_at": { + "$date": "2023-07-21T19:10:15.074Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad83e98ff3c741449530a" + }, + "name": "برگر", + "icon": "burger", + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:10:54.967Z" + }, + "updated_at": { + "$date": "2023-07-21T19:10:54.967Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "name": "کافی بار", + "icon": "tea", + "index": 6, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:13:03.276Z" + }, + "updated_at": { + "$date": "2023-07-21T19:13:03.276Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad8fd98ff3c7414495328" + }, + "name": "نوشیدنی گرم شکلاتی", + "icon": "coffee-cup", + "index": 7, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:14:05.355Z" + }, + "updated_at": { + "$date": "2023-07-21T19:14:05.355Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad91c98ff3c7414495331" + }, + "name": "دسر و کیک", + "icon": "Asset1412", + "index": 8, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:14:36.147Z" + }, + "updated_at": { + "$date": "2023-07-21T19:14:36.147Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad92e98ff3c741449533a" + }, + "name": "شیک", + "icon": "Asset1112", + "index": 9, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:14:54.017Z" + }, + "updated_at": { + "$date": "2023-07-21T19:14:54.017Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad94398ff3c7414495343" + }, + "name": "دمنوش بار", + "icon": "Asset1912", + "index": 10, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:15:15.477Z" + }, + "updated_at": { + "$date": "2023-07-21T19:15:15.477Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad96798ff3c741449534f" + }, + "name": "ماکتل بار", + "icon": "Asset1212", + "index": 11, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:15:51.494Z" + }, + "updated_at": { + "$date": "2023-07-21T19:15:51.494Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad99198ff3c7414495358" + }, + "name": "اسموتی", + "icon": "soft-drinks", + "index": 12, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:16:33.335Z" + }, + "updated_at": { + "$date": "2023-07-21T19:16:33.335Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bad9b498ff3c7414495367" + }, + "name": "نوشیدنی سرد", + "icon": "cola", + "index": 13, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:17:08.649Z" + }, + "updated_at": { + "$date": "2023-07-21T19:17:08.649Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e845ce59383e8d754e9185" + }, + "name": "نوشیدنی های بر پایه اسپرسو", + "icon": "Asset212", + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:10:22.923Z" + }, + "updated_at": { + "$date": "2023-08-25T06:10:22.923Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e845ed59383e8d754e918e" + }, + "name": "قهوه های دمی ", + "icon": "Asset212", + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:10:53.349Z" + }, + "updated_at": { + "$date": "2023-08-25T06:10:53.349Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8464759383e8d754e919d" + }, + "name": "نوشیدنی های گرم", + "icon": "Asset2012", + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:12:23.543Z" + }, + "updated_at": { + "$date": "2023-08-25T06:12:23.543Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e846b359383e8d754e91b1" + }, + "name": "چای و دمنوش", + "icon": "Asset1912", + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:14:11.442Z" + }, + "updated_at": { + "$date": "2023-08-25T06:14:11.442Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8477d59383e8d754e91c6" + }, + "name": "قهوه های سرد", + "icon": "Asset612", + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:17:33.706Z" + }, + "updated_at": { + "$date": "2023-08-25T06:17:33.706Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e847df59383e8d754e91cf" + }, + "name": "شیک ها", + "icon": "Asset1112", + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:19:11.804Z" + }, + "updated_at": { + "$date": "2023-08-25T06:19:11.804Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e847fe59383e8d754e91d8" + }, + "name": "موکتل و آب میوه ها", + "icon": "Asset1212", + "index": 7, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:19:42.247Z" + }, + "updated_at": { + "$date": "2023-08-25T06:19:42.247Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8483159383e8d754e91e7" + }, + "name": "شربت ها", + "icon": "soft-drinks", + "index": 8, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:20:33.535Z" + }, + "updated_at": { + "$date": "2023-08-25T06:20:33.535Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8488859383e8d754e9202" + }, + "name": "فانتزی", + "icon": "444", + "index": 9, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:22:00.057Z" + }, + "updated_at": { + "$date": "2023-08-25T06:22:00.057Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e848ce59383e8d754e920b" + }, + "name": "افزودنی", + "icon": "coffee-pot", + "index": 10, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:23:10.118Z" + }, + "updated_at": { + "$date": "2023-08-25T06:23:10.118Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64edb2bb59383e8d754ef59b" + }, + "name": "پیتزا ها", + "icon": "Asset2212", + "index": 5, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T08:56:27.027Z" + }, + "updated_at": { + "$date": "2023-08-29T08:56:27.027Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64edb2e659383e8d754ef5a4" + }, + "name": "نوشیدنی ها", + "icon": "Asset1212", + "index": 6, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T08:57:10.486Z" + }, + "updated_at": { + "$date": "2023-08-29T08:58:07.968Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f4408459383e8d754f7181" + }, + "name": "بستنی ", + "icon": "ice-cream-alt", + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T08:15:00.848Z" + }, + "updated_at": { + "$date": "2023-09-03T08:15:00.848Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "name": "دسر", + "icon": "Asset1412", + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T09:01:36.911Z" + }, + "updated_at": { + "$date": "2023-09-03T09:01:36.911Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f486f059383e8d754f7b03" + }, + "name": "صبحانه", + "icon": "Asset412", + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T13:15:28.110Z" + }, + "updated_at": { + "$date": "2023-09-03T13:15:28.110Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651971c059383e8d7551df47" + }, + "name": "پیش غذاها", + "icon": "Asset312", + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:18:56.157Z" + }, + "updated_at": { + "$date": "2023-10-01T13:18:56.157Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651971e159383e8d7551df50" + }, + "name": "ایران زمین", + "icon": "Asset912", + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:19:29.404Z" + }, + "updated_at": { + "$date": "2023-10-01T13:19:29.404Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6519720759383e8d7551df62" + }, + "name": "پیتزا ایتالیایی", + "icon": "Asset2212", + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:20:07.042Z" + }, + "updated_at": { + "$date": "2023-10-01T13:20:07.042Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6519723359383e8d7551df6b" + }, + "name": "برگرها", + "icon": "Asset112", + "index": 4, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:20:51.689Z" + }, + "updated_at": { + "$date": "2023-10-01T13:20:51.689Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6519724d59383e8d7551df74" + }, + "name": "استیک ها", + "icon": "Asset1712", + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:21:17.940Z" + }, + "updated_at": { + "$date": "2023-10-01T13:21:17.940Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6519726759383e8d7551df83" + }, + "name": "پاستا", + "icon": "Asset1312", + "index": 6, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:21:43.221Z" + }, + "updated_at": { + "$date": "2023-10-01T13:21:43.221Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6519730759383e8d7551df92" + }, + "name": "سالاد", + "icon": "Asset1512", + "index": 7, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:24:23.276Z" + }, + "updated_at": { + "$date": "2023-10-01T13:24:23.276Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6519733c59383e8d7551df9e" + }, + "name": "دریایی ها", + "icon": "222", + "index": 8, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:25:16.303Z" + }, + "updated_at": { + "$date": "2023-10-01T13:26:42.220Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6519819c59383e8d7551e1be" + }, + "name": "شات سس ها", + "icon": "333", + "index": 9, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:26:36.082Z" + }, + "updated_at": { + "$date": "2023-10-01T14:26:36.082Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651d815259383e8d75521f12" + }, + "name": "برگر", + "icon": "Asset112", + "index": 5, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2023-10-04T15:14:26.594Z" + }, + "updated_at": { + "$date": "2023-10-04T15:14:26.594Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651dbf1359383e8d75522b44" + }, + "name": "قلیان", + "icon": "Asset111", + "index": 16, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2023-10-04T19:37:55.589Z" + }, + "updated_at": { + "$date": "2023-10-04T19:41:55.134Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "name": "اسپرسو بار", + "icon": "tea", + "index": 10, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:10:54.917Z" + }, + "updated_at": { + "$date": "2023-10-05T16:10:54.917Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651ee76759383e8d75523f8b" + }, + "name": "نوشیدنی گرم", + "icon": "Asset212", + "index": 11, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:42:15.626Z" + }, + "updated_at": { + "$date": "2023-10-05T16:42:15.626Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651eedbd59383e8d7552425d" + }, + "name": "آیس کافی", + "icon": "Asset712", + "index": 12, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:09:17.652Z" + }, + "updated_at": { + "$date": "2023-10-08T12:54:30.661Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651ef0b759383e8d7552437a" + }, + "name": "میلک شیک", + "icon": "Asset1112", + "index": 13, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:21:59.621Z" + }, + "updated_at": { + "$date": "2023-10-05T17:21:59.621Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651ef22159383e8d75524416" + }, + "name": "نوشیدنی سرد", + "icon": "Asset1212", + "index": 14, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:28:01.078Z" + }, + "updated_at": { + "$date": "2023-10-08T12:55:21.732Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651eff7759383e8d75524961" + }, + "name": "کیک و دسر ", + "icon": "cup-cake", + "index": 15, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T18:24:55.290Z" + }, + "updated_at": { + "$date": "2023-10-08T12:55:59.399Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65219db959383e8d75527683" + }, + "name": "سوخاری ها", + "icon": "chicken-fry", + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-07T18:04:41.565Z" + }, + "updated_at": { + "$date": "2023-10-07T18:04:41.565Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "name": "چای و دمنوش", + "icon": "tea-pot", + "index": 16, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-08T08:54:05.908Z" + }, + "updated_at": { + "$date": "2023-10-08T12:57:27.852Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6522a77659383e8d75527f18" + }, + "name": "قهوه دمی", + "icon": "coffee-pot", + "index": 17, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-08T12:58:30.935Z" + }, + "updated_at": { + "$date": "2023-10-08T12:58:59.984Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652693dc59383e8d7552ba53" + }, + "name": "اسپرسو", + "icon": "tea", + "index": 1, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-11T12:23:56.537Z" + }, + "updated_at": { + "$date": "2024-09-02T18:17:29.022Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6527fce059383e8d7552d4be" + }, + "name": "اسموتی ", + "icon": "Asset712", + "index": 18, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-12T14:04:16.713Z" + }, + "updated_at": { + "$date": "2023-10-12T14:04:16.713Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a450f59383e8d75530491" + }, + "name": "اسپرسو با شیر", + "icon": "Asset212", + "index": 3, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:36:47.441Z" + }, + "updated_at": { + "$date": "2024-05-28T12:13:44.204Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a46a959383e8d7553049a" + }, + "name": "بار گرم", + "icon": "soup-bowl", + "index": 4, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:43:37.275Z" + }, + "updated_at": { + "$date": "2024-05-28T12:15:52.808Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a46d159383e8d755304a3" + }, + "name": "آیس کافی", + "icon": "Asset712", + "index": 5, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:44:17.798Z" + }, + "updated_at": { + "$date": "2023-10-14T08:15:01.436Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a471159383e8d755304bd" + }, + "name": "آیس", + "icon": "Asset712", + "index": 6, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:45:21.273Z" + }, + "updated_at": { + "$date": "2023-10-14T08:15:44.638Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a475659383e8d755304c6" + }, + "name": "ماکتیل", + "icon": "Asset1212", + "index": 7, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:46:30.712Z" + }, + "updated_at": { + "$date": "2023-10-14T08:15:54.857Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a476859383e8d755304cf" + }, + "name": "شیک", + "icon": "Asset1112", + "index": 8, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:46:48.814Z" + }, + "updated_at": { + "$date": "2023-10-14T08:16:02.022Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a478059383e8d755304db" + }, + "name": "دمی", + "icon": "Asset1912", + "index": 2, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:47:12.739Z" + }, + "updated_at": { + "$date": "2023-10-14T08:14:23.979Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a53d959383e8d7553076f" + }, + "name": "اسموتی", + "icon": "Asset1212", + "index": 9, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:39:53.706Z" + }, + "updated_at": { + "$date": "2023-10-14T08:39:53.706Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a559659383e8d75530778" + }, + "name": "میان وعده", + "icon": "Asset412", + "index": 10, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:47:18.315Z" + }, + "updated_at": { + "$date": "2023-10-14T08:47:18.315Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a55ae59383e8d75530781" + }, + "name": "کیک ها", + "icon": "Asset1412", + "index": 11, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:47:42.352Z" + }, + "updated_at": { + "$date": "2023-10-14T08:47:42.352Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a55c759383e8d7553078a" + }, + "name": "چای و دمنوش", + "icon": "Asset212", + "index": 12, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:48:07.200Z" + }, + "updated_at": { + "$date": "2023-10-14T08:48:45.575Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6537f5e159383e8d7553eec7" + }, + "name": "پیتزا ایتالیایی", + "icon": "pizza", + "index": 14, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-10-24T16:50:41.387Z" + }, + "updated_at": { + "$date": "2024-05-11T16:06:10.479Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6537f5f059383e8d7553eed0" + }, + "name": "برگر", + "icon": "burger", + "index": 12, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-10-24T16:50:56.063Z" + }, + "updated_at": { + "$date": "2023-10-24T16:50:56.063Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6537f60059383e8d7553eedc" + }, + "name": "پیش غذا", + "icon": "Asset312", + "index": 13, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-10-24T16:51:12.691Z" + }, + "updated_at": { + "$date": "2023-10-24T16:51:12.691Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6537f80159383e8d7553efcf" + }, + "name": "پاستا", + "icon": "noodles", + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-10-24T16:59:45.530Z" + }, + "updated_at": { + "$date": "2023-10-24T16:59:45.530Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65509e8659383e8d7555b820" + }, + "name": "ساندویچ", + "icon": "Asset1612", + "index": 7, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-11-12T09:44:38.584Z" + }, + "updated_at": { + "$date": "2023-11-12T09:44:38.584Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6557c63859383e8d7556459b" + }, + "name": "جگر گوسفندی", + "icon": "culinary", + "index": 2, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-17T19:59:52.982Z" + }, + "updated_at": { + "$date": "2023-11-17T19:59:52.982Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6557c64c59383e8d755645a7" + }, + "name": "جگر گوساله", + "icon": "culinary", + "index": 4, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-17T20:00:12.655Z" + }, + "updated_at": { + "$date": "2023-11-17T20:00:12.655Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6557c67959383e8d755645b6" + }, + "name": "بارسرد ", + "icon": "juice", + "index": 5, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-17T20:00:57.634Z" + }, + "updated_at": { + "$date": "2023-11-17T20:00:57.634Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6557c6a959383e8d755645c3" + }, + "name": "بارگرم", + "icon": "tea", + "index": 6, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-17T20:01:45.974Z" + }, + "updated_at": { + "$date": "2023-11-17T20:01:45.974Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "name": "بار گرم", + "icon": "tea", + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-11T13:47:46.437Z" + }, + "updated_at": { + "$date": "2025-07-15T10:06:41.390Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f436d045700b0061064b94" + }, + "name": "چای ها", + "icon": "Asset2012", + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T11:53:52.497Z" + }, + "updated_at": { + "$date": "2024-03-15T11:53:52.497Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f436e045700b0061064b9d" + }, + "name": "دمنوش ها", + "icon": "Asset1912", + "index": 3, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T11:54:08.638Z" + }, + "updated_at": { + "$date": "2024-03-15T11:54:08.638Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f436ef45700b0061064ba6" + }, + "name": "شیک ها", + "icon": "Asset1112", + "index": 4, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T11:54:23.298Z" + }, + "updated_at": { + "$date": "2024-03-15T11:54:23.298Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4370745700b0061064baf" + }, + "name": "بارسرد", + "icon": "Asset1212", + "index": 5, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T11:54:47.865Z" + }, + "updated_at": { + "$date": "2024-03-15T11:54:47.865Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4372045700b0061064bbb" + }, + "name": "برگرها ", + "icon": "Asset112", + "index": 6, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T11:55:12.574Z" + }, + "updated_at": { + "$date": "2024-03-15T11:55:12.574Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4373d45700b0061064bc7" + }, + "name": "هات داگ ها", + "icon": "Asset1612", + "index": 7, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T11:55:41.511Z" + }, + "updated_at": { + "$date": "2024-03-15T11:55:41.511Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4375845700b0061064bd0" + }, + "name": "نوستالژی", + "icon": "hot-dog", + "index": 8, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T11:56:08.303Z" + }, + "updated_at": { + "$date": "2024-03-15T11:56:17.885Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4377d45700b0061064be5" + }, + "name": "سوخاری", + "icon": "111", + "index": 9, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T11:56:45.050Z" + }, + "updated_at": { + "$date": "2024-03-15T11:56:45.050Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4379045700b0061064bee" + }, + "name": "سیب زمینی", + "icon": "Asset512", + "index": 10, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T11:57:04.223Z" + }, + "updated_at": { + "$date": "2024-03-15T11:57:04.223Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6618e55545700b006108be13" + }, + "name": "نوشیدنی های گرم بر پایه قهوه", + "icon": "Asset212", + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T07:40:05.126Z" + }, + "updated_at": { + "$date": "2024-04-12T15:21:48.971Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619523245700b006108c824" + }, + "name": "نوشیدنی های گرم", + "icon": "Asset2012", + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:24:34.179Z" + }, + "updated_at": { + "$date": "2024-04-12T15:24:34.179Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619527445700b006108c82d" + }, + "name": "دمنوش ها", + "icon": "Asset612", + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:25:40.416Z" + }, + "updated_at": { + "$date": "2024-04-12T15:25:40.416Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661952b045700b006108c839" + }, + "name": "نوشیدنی های سر بر پایه قهوه", + "icon": "Asset712", + "index": 4, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:26:40.120Z" + }, + "updated_at": { + "$date": "2024-04-12T15:26:40.120Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661952f345700b006108c845" + }, + "name": "ماکتیل", + "icon": "Asset1212", + "index": 5, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:27:47.306Z" + }, + "updated_at": { + "$date": "2024-04-12T15:27:47.306Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619531845700b006108c84e" + }, + "name": "چای", + "icon": "tea-pot", + "index": 6, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:28:24.317Z" + }, + "updated_at": { + "$date": "2024-04-12T15:28:24.317Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619662545700b006108cdf7" + }, + "name": "شیک", + "icon": "Asset1112", + "index": 7, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:49:41.653Z" + }, + "updated_at": { + "$date": "2024-04-12T16:49:41.653Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627dff97d6ac20062281dd2" + }, + "name": "ایرانی", + "icon": "Asset912", + "index": 6, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-04-23T16:21:13.278Z" + }, + "updated_at": { + "$date": "2025-12-07T10:50:41.781Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f0d37d6ac20062282203" + }, + "name": "پیتزا", + "icon": "Asset2212", + "index": 8, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:33:07.900Z" + }, + "updated_at": { + "$date": "2024-04-23T17:33:07.900Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f0f37d6ac20062282218" + }, + "name": "برگر", + "icon": "Asset112", + "index": 9, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:33:39.949Z" + }, + "updated_at": { + "$date": "2024-04-23T17:33:39.949Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f1ca7d6ac2006228224e" + }, + "name": "ساندویچ", + "icon": "Asset1612", + "index": 10, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:37:14.717Z" + }, + "updated_at": { + "$date": "2024-04-23T17:37:14.717Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f1ee7d6ac20062282257" + }, + "name": "ساندویچ نوستالژی", + "icon": "Asset1612", + "index": 11, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:37:50.205Z" + }, + "updated_at": { + "$date": "2024-04-23T17:37:50.205Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f2047d6ac20062282260" + }, + "name": "سوخاری", + "icon": "111", + "index": 12, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:38:12.852Z" + }, + "updated_at": { + "$date": "2024-04-23T17:38:12.852Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f2207d6ac20062282275" + }, + "name": "سیب زمینی", + "icon": "Asset512", + "index": 13, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:38:40.139Z" + }, + "updated_at": { + "$date": "2024-04-23T17:38:40.139Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a9ce07d6ac200622864dc" + }, + "name": "پنه", + "icon": "Asset1312", + "index": 14, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:11:44.745Z" + }, + "updated_at": { + "$date": "2024-04-25T18:11:44.745Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663a58217d6ac20062299ee4" + }, + "name": "شربت و عرقیجات", + "icon": "soft-drinks", + "index": 14, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-05-07T16:34:41.632Z" + }, + "updated_at": { + "$date": "2025-12-07T11:10:32.917Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f79ac7d6ac200622a0814" + }, + "name": "سوخاری", + "icon": "111", + "index": 19, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T13:59:08.642Z" + }, + "updated_at": { + "$date": "2024-05-11T13:59:08.642Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f7a717d6ac200622a0833" + }, + "name": "خوراک", + "icon": "Asset1312", + "index": 22, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T14:02:25.371Z" + }, + "updated_at": { + "$date": "2024-05-11T14:02:25.371Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f7b2c7d6ac200622a0843" + }, + "name": "پیده", + "icon": "restaurant", + "index": 20, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T14:05:32.834Z" + }, + "updated_at": { + "$date": "2024-05-11T14:05:32.834Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f7efc7d6ac200622a08c2" + }, + "name": "شیرینی", + "icon": "cup-cake", + "index": 25, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T14:21:48.462Z" + }, + "updated_at": { + "$date": "2024-05-11T14:21:48.462Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f80f47d6ac200622a08ea" + }, + "name": "استیک ها", + "icon": "Asset1012", + "index": 15, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T14:30:12.980Z" + }, + "updated_at": { + "$date": "2024-05-11T14:30:12.980Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f829e7d6ac200622a0925" + }, + "name": "سالاد", + "icon": "Asset1512", + "index": 16, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T14:37:18.784Z" + }, + "updated_at": { + "$date": "2024-05-11T14:37:18.784Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f97b97d6ac200622a0c62" + }, + "name": "پیتزا آمریکایی", + "icon": "Asset2212", + "index": 11, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:07:21.104Z" + }, + "updated_at": { + "$date": "2024-05-11T16:08:31.587Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "664626607d6ac200622a915c" + }, + "name": "پاستا", + "icon": "Asset1312", + "index": 11, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-05-16T15:29:36.689Z" + }, + "updated_at": { + "$date": "2024-05-16T15:29:36.689Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666312297d6ac200622cfc9c" + }, + "name": "غذای ایرانی", + "icon": "Asset312", + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T13:59:05.121Z" + }, + "updated_at": { + "$date": "2024-06-07T13:59:05.121Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6663198a7d6ac200622cfe9a" + }, + "name": "باربیکیو", + "icon": "Asset912", + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:30:34.129Z" + }, + "updated_at": { + "$date": "2024-06-07T14:30:34.129Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "667865cc7d6ac200622ec08b" + }, + "name": "سالاد ", + "icon": "Asset1512", + "index": 12, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-06-23T18:13:32.884Z" + }, + "updated_at": { + "$date": "2024-06-23T18:13:32.884Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6693d234136cc10070469538" + }, + "name": "غذای ایرانی", + "icon": "Asset912", + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-14T13:27:16.688Z" + }, + "updated_at": { + "$date": "2024-07-23T19:22:03.900Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a0033b136cc1007047cd35" + }, + "name": "پیتزا آمریکایی", + "icon": "pizza", + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:23:39.535Z" + }, + "updated_at": { + "$date": "2024-07-23T19:27:04.227Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a0034e136cc1007047cd44" + }, + "name": "پیتزا ایتالیایی", + "icon": "Asset2212", + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:23:58.296Z" + }, + "updated_at": { + "$date": "2024-07-23T19:27:23.276Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00384136cc1007047cd5a" + }, + "name": "برگر", + "icon": "Asset112", + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:24:52.704Z" + }, + "updated_at": { + "$date": "2024-07-23T19:24:52.704Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a003b5136cc1007047cd66" + }, + "name": "خوراک", + "icon": "soup-bowl", + "index": 6, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:25:41.973Z" + }, + "updated_at": { + "$date": "2024-07-23T19:25:41.973Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a003fd136cc1007047cd72" + }, + "name": "پیده", + "icon": "Asset1712", + "index": 7, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:26:53.113Z" + }, + "updated_at": { + "$date": "2024-07-23T19:26:53.113Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a0043b136cc1007047cdaa" + }, + "name": "سوخاری", + "icon": "111", + "index": 8, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:27:55.615Z" + }, + "updated_at": { + "$date": "2024-07-23T19:27:55.615Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00458136cc1007047cdb6" + }, + "name": "استیک", + "icon": "Asset1012", + "index": 9, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:28:24.659Z" + }, + "updated_at": { + "$date": "2024-07-23T19:28:24.659Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00491136cc1007047cdc2" + }, + "name": "پاستا", + "icon": "Asset1312", + "index": 10, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:29:21.306Z" + }, + "updated_at": { + "$date": "2024-07-23T19:29:21.306Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a004d6136cc1007047cdcb" + }, + "name": "پیش غذا", + "icon": "Asset512", + "index": 11, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:30:30.220Z" + }, + "updated_at": { + "$date": "2024-07-23T19:37:24.950Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00527136cc1007047cdea" + }, + "name": "سالاد", + "icon": "Asset1512", + "index": 12, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:31:51.332Z" + }, + "updated_at": { + "$date": "2024-07-23T19:31:51.332Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a005af136cc1007047ce08" + }, + "name": "نوشیدنی های بر پایه اسپرسو", + "icon": "Asset212", + "index": 13, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:34:07.518Z" + }, + "updated_at": { + "$date": "2024-07-23T19:34:07.518Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a005d2136cc1007047ce11" + }, + "name": "قهوه های دمی", + "icon": "Asset212", + "index": 14, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:34:42.774Z" + }, + "updated_at": { + "$date": "2024-07-23T19:34:42.774Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a005e6136cc1007047ce1d" + }, + "name": "قهوه های سرد", + "icon": "Asset712", + "index": 15, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:35:02.998Z" + }, + "updated_at": { + "$date": "2024-07-23T19:35:09.909Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00613136cc1007047ce3e" + }, + "name": "چای و دمنوش ", + "icon": "Asset2012", + "index": 16, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:35:47.667Z" + }, + "updated_at": { + "$date": "2024-07-23T19:35:47.667Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00636136cc1007047ce4a" + }, + "name": "نوشیدنی های گرم", + "icon": "tea", + "index": 17, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:36:22.913Z" + }, + "updated_at": { + "$date": "2024-07-23T19:36:22.913Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a0066b136cc1007047ce53" + }, + "name": "موکتل و آب میوه ها", + "icon": "Asset1212", + "index": 18, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:37:15.430Z" + }, + "updated_at": { + "$date": "2024-07-23T19:37:15.430Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a006a2136cc1007047ce68" + }, + "name": "دسر", + "icon": "cup-cake", + "index": 19, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:38:10.298Z" + }, + "updated_at": { + "$date": "2024-07-23T19:38:10.298Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a0075d136cc1007047ce95" + }, + "name": "شیک ", + "icon": "Asset1112", + "index": 21, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:41:17.756Z" + }, + "updated_at": { + "$date": "2024-07-23T19:41:17.756Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00794136cc1007047ceb0" + }, + "name": "بستنی", + "icon": "Asset812", + "index": 22, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:42:12.098Z" + }, + "updated_at": { + "$date": "2024-07-23T19:42:12.098Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11ca3136cc1007047e2c1" + }, + "name": "شربت", + "icon": "juice", + "index": 23, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:24:19.125Z" + }, + "updated_at": { + "$date": "2024-07-24T15:24:19.125Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66ec5758f7ba01006213570b" + }, + "name": "اسموتی بار", + "icon": "Asset1112", + "index": 11, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:54:48.954Z" + }, + "updated_at": { + "$date": "2024-09-21T13:34:42.194Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66eec765f7ba010062139d62" + }, + "name": "چاکلت بار", + "icon": "Asset212", + "index": 19, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:17:25.975Z" + }, + "updated_at": { + "$date": "2024-09-21T13:35:27.844Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "671ca191c3c0100063e4d1fd" + }, + "name": "دسر", + "icon": "cola", + "index": 0, + "storeId": { + "$oid": "671c9c58c3c0100063e4d1a9" + }, + "created_at": { + "$date": "2024-10-26T08:00:17.573Z" + }, + "updated_at": { + "$date": "2024-10-26T08:00:17.573Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305804c3c0100063e6bc62" + }, + "name": "شیک", + "icon": "Asset1112", + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T06:51:48.596Z" + }, + "updated_at": { + "$date": "2024-11-16T19:31:32.783Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6730582dc3c0100063e6bc6e" + }, + "name": "بستنی ویژه", + "icon": "Asset812", + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T06:52:29.445Z" + }, + "updated_at": { + "$date": "2024-11-10T06:52:29.445Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673058c5c3c0100063e6bca5" + }, + "name": "دسر", + "icon": "cup-cake", + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T06:55:01.176Z" + }, + "updated_at": { + "$date": "2024-11-16T19:31:51.315Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6730591ec3c0100063e6bcb7" + }, + "name": "اسموتی", + "icon": "Asset1212", + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T06:56:30.215Z" + }, + "updated_at": { + "$date": "2024-11-10T06:56:30.215Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305938c3c0100063e6bcc0" + }, + "name": "آیس کافی", + "icon": "Asset712", + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T06:56:56.808Z" + }, + "updated_at": { + "$date": "2024-11-10T06:56:56.808Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67306405c3c0100063e6bf3f" + }, + "name": "قهوه", + "icon": "Asset212", + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:43:01.406Z" + }, + "updated_at": { + "$date": "2024-11-10T07:43:58.452Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67306484c3c0100063e6bf5b" + }, + "name": "نوشیدنی های گرم", + "icon": "Asset212", + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:45:08.565Z" + }, + "updated_at": { + "$date": "2024-11-10T07:45:08.565Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67306494c3c0100063e6bf64" + }, + "name": "دمنوش", + "icon": "Asset612", + "index": 8, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:45:24.441Z" + }, + "updated_at": { + "$date": "2024-11-10T07:45:24.441Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673064e6c3c0100063e6bf76" + }, + "name": "آیس بستنی", + "icon": "ice-cream-alt", + "index": 9, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:46:46.367Z" + }, + "updated_at": { + "$date": "2024-11-10T07:46:46.367Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673064fdc3c0100063e6bf7f" + }, + "name": "ویتامینه", + "icon": "Asset1112", + "index": 10, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:47:09.215Z" + }, + "updated_at": { + "$date": "2024-11-10T07:48:33.168Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6730651dc3c0100063e6bf88" + }, + "name": "آبمیوه طبیعی", + "icon": "juice", + "index": 11, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:47:41.968Z" + }, + "updated_at": { + "$date": "2024-11-10T07:47:41.968Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "name": "دونات اسپشیال ", + "icon": "cup-cake", + "index": 12, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:16:42.609Z" + }, + "updated_at": { + "$date": "2024-11-14T20:28:23.661Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731af6ec3c0100063e6de95" + }, + "name": "دونات آرت", + "icon": "cup-cake", + "index": 13, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:17:02.145Z" + }, + "updated_at": { + "$date": "2024-11-11T07:17:02.145Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731af7fc3c0100063e6de9e" + }, + "name": "دونات فانتزی", + "icon": "cup-cake", + "index": 14, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:17:19.257Z" + }, + "updated_at": { + "$date": "2024-11-11T07:17:19.257Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "name": "دونات جنرال", + "icon": "cup-cake", + "index": 15, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:17:38.133Z" + }, + "updated_at": { + "$date": "2024-11-11T07:17:38.133Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731afdfc3c0100063e6dec2" + }, + "name": "رست نات", + "icon": "cup-cake", + "index": 16, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:18:55.166Z" + }, + "updated_at": { + "$date": "2024-11-11T07:18:55.166Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731aff4c3c0100063e6decb" + }, + "name": "برلینر", + "icon": "cup-cake", + "index": 17, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:19:16.107Z" + }, + "updated_at": { + "$date": "2024-11-11T07:19:16.107Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731b00bc3c0100063e6ded4" + }, + "name": "دونات اسپال", + "icon": "cup-cake", + "index": 18, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:19:39.436Z" + }, + "updated_at": { + "$date": "2024-11-11T07:19:39.436Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731b01ac3c0100063e6dedd" + }, + "name": "دونات لقمه ای ", + "icon": "cup-cake", + "index": 19, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:19:54.805Z" + }, + "updated_at": { + "$date": "2024-11-14T20:00:41.671Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731b030c3c0100063e6dee6" + }, + "name": "دونات لقمه ای", + "icon": "cup-cake", + "index": 20, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:20:16.505Z" + }, + "updated_at": { + "$date": "2024-11-11T23:45:52.154Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731b044c3c0100063e6def2" + }, + "name": "دونات ناتس", + "icon": "cup-cake", + "index": 21, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:20:36.714Z" + }, + "updated_at": { + "$date": "2024-11-11T07:20:36.714Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673338bec3c0100063e706d0" + }, + "name": "پیتزا آمریکایی", + "icon": "Asset2212", + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:15:10.719Z" + }, + "updated_at": { + "$date": "2024-11-25T11:43:19.668Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673338dbc3c0100063e706e2" + }, + "name": "ﺑﺮ\u0000گرﻫﺎ", + "icon": "Asset112", + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:15:39.937Z" + }, + "updated_at": { + "$date": "2024-11-25T11:43:50.632Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333909c3c0100063e706f7" + }, + "name": "پاستاها", + "icon": "Asset1312", + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:16:25.879Z" + }, + "updated_at": { + "$date": "2024-11-25T11:44:15.245Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333928c3c0100063e70706" + }, + "name": "پیش غذا", + "icon": "Asset1512", + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:16:56.518Z" + }, + "updated_at": { + "$date": "2024-11-25T11:44:45.067Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6733394bc3c0100063e7070f" + }, + "name": "نوشیدنی سرد آماده", + "icon": "fast-food", + "index": 9, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:17:31.947Z" + }, + "updated_at": { + "$date": "2024-11-25T11:46:20.089Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333964c3c0100063e7071c" + }, + "name": "نوشیدنی گرم", + "icon": "Asset2012", + "index": 17, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:17:56.363Z" + }, + "updated_at": { + "$date": "2024-11-25T11:44:33.443Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333983c3c0100063e7072e" + }, + "name": "قهوه", + "icon": "Asset212", + "index": 18, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:18:27.689Z" + }, + "updated_at": { + "$date": "2024-11-25T11:45:20.357Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673339afc3c0100063e7074b" + }, + "name": "نوشیدنی های سرد", + "icon": "juice", + "index": 8, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:19:11.453Z" + }, + "updated_at": { + "$date": "2024-11-17T12:13:01.971Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673339e4c3c0100063e70769" + }, + "name": "نوشیدنی های سرد بر پایه قهوه", + "icon": "Asset712", + "index": 16, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:20:04.563Z" + }, + "updated_at": { + "$date": "2024-11-25T11:46:09.384Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333a14c3c0100063e70775" + }, + "name": "نوشیدنی های طبیعی با بستنی", + "icon": "Asset1112", + "index": 10, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:20:52.046Z" + }, + "updated_at": { + "$date": "2024-11-12T11:20:52.046Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333a30c3c0100063e70787" + }, + "name": "ﻧﻮﺷﯿﺪﻧﯽ ﻫﺎ ﺑﺮ ﭘﺎﯾﻪ ﺷﯿﺮ", + "icon": "soft-drinks", + "index": 11, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:21:20.567Z" + }, + "updated_at": { + "$date": "2024-11-12T11:21:20.567Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333a53c3c0100063e70790" + }, + "name": "شیک ﻫﺎ و آﯾﺲ پک ها", + "icon": "Asset1112", + "index": 12, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:21:55.482Z" + }, + "updated_at": { + "$date": "2024-11-12T11:21:55.482Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333bbfc3c0100063e707cc" + }, + "name": "آﺑﻤﯿﻮه ﻫﺎی ﻃﺒﯿﻌﯽ", + "icon": "juice", + "index": 13, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:27:59.747Z" + }, + "updated_at": { + "$date": "2024-11-12T11:27:59.747Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333c39c3c0100063e707d5" + }, + "name": "آﺑﻤﯿﻮه ﻫﺎی ترکیبی", + "icon": "juice", + "index": 14, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:30:01.206Z" + }, + "updated_at": { + "$date": "2024-11-12T11:30:01.206Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67388c44c3c0100063e7b31a" + }, + "name": "صبحانه", + "icon": "culinary", + "index": 22, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T12:12:52.137Z" + }, + "updated_at": { + "$date": "2024-11-16T12:12:52.137Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d6d7c3c0100063e7d422" + }, + "name": "افزودنی ها", + "icon": "soft-drinks", + "index": 15, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-17T11:43:19.646Z" + }, + "updated_at": { + "$date": "2024-11-17T11:43:19.646Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da3fbc3c0100063e83a7a" + }, + "name": "کیک ها ", + "icon": "cup-cake", + "index": 7, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T08:55:23.475Z" + }, + "updated_at": { + "$date": "2024-11-25T11:45:40.998Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da786c3c0100063e83bb8" + }, + "name": "خوراک ها", + "icon": "Asset912", + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:10:30.650Z" + }, + "updated_at": { + "$date": "2024-11-25T11:42:30.100Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673db4bac3c0100063e83ef2" + }, + "name": "اسنک و‌ میان وعده", + "icon": "Asset412", + "index": 33, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-20T10:06:50.927Z" + }, + "updated_at": { + "$date": "2024-11-20T10:12:13.535Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc024c3c0100063e84164" + }, + "name": "غذاهای چلویی", + "icon": "Asset912", + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T10:55:32.446Z" + }, + "updated_at": { + "$date": "2024-11-25T11:41:59.750Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673e2e4ec3c0100063e85693" + }, + "name": "ساندویچ سرد", + "icon": "Asset1612", + "index": 7, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2024-11-20T18:45:34.160Z" + }, + "updated_at": { + "$date": "2025-01-25T16:41:18.352Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "name": "بر پایه اسپرسو", + "icon": "tea", + "index": 2, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2024-12-22T19:46:48.460Z" + }, + "updated_at": { + "$date": "2025-01-25T16:37:24.604Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6783ff4fa4463c0057e4a31f" + }, + "name": "ماچا", + "icon": "Asset612", + "index": 3, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-12T17:43:43.810Z" + }, + "updated_at": { + "$date": "2025-01-25T16:38:44.516Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6783ffa2a4463c0057e4a32b" + }, + "name": "بدون اسپرسو", + "icon": "tea", + "index": 1, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-12T17:45:06.718Z" + }, + "updated_at": { + "$date": "2025-01-25T16:37:01.089Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6783ffd1a4463c0057e4a346" + }, + "name": "چای و دمنوش", + "icon": "Asset2012", + "index": 4, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-12T17:45:53.149Z" + }, + "updated_at": { + "$date": "2025-01-25T16:40:27.707Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6783ffeea4463c0057e4a367" + }, + "name": "شیک و اسموتی", + "icon": "Asset1112", + "index": 5, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-12T17:46:22.753Z" + }, + "updated_at": { + "$date": "2025-01-25T16:40:40.653Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6786fbfaa4463c0057e4f482" + }, + "name": "تست", + "icon": "burger", + "index": 0, + "storeId": { + "$oid": "6786f8aba4463c0057e4f42d" + }, + "created_at": { + "$date": "2025-01-15T00:06:18.928Z" + }, + "updated_at": { + "$date": "2025-01-15T00:06:18.928Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "name": "قهوه گرم", + "icon": "tea", + "index": 2, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T07:50:46.967Z" + }, + "updated_at": { + "$date": "2025-07-29T12:13:19.535Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "name": "قهوه سرد", + "icon": "Asset712", + "index": 4, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T07:52:37.401Z" + }, + "updated_at": { + "$date": "2025-07-29T12:13:45.949Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795e9f3a4463c0057e68d31" + }, + "name": "قهوه دمی", + "icon": "Asset212", + "index": 5, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T07:53:23.754Z" + }, + "updated_at": { + "$date": "2025-07-29T12:14:08.828Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795ea3aa4463c0057e68d3a" + }, + "name": "ماکتل", + "icon": "juice", + "index": 6, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T07:54:34.165Z" + }, + "updated_at": { + "$date": "2025-07-29T12:14:22.107Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795ea56a4463c0057e68d43" + }, + "name": "اسموتی", + "icon": "Asset1212", + "index": 7, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T07:55:02.784Z" + }, + "updated_at": { + "$date": "2025-07-29T12:14:36.256Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795eaa0a4463c0057e68d58" + }, + "name": "نوشیدنی گرم", + "icon": "coffee-cup", + "index": 3, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T07:56:16.011Z" + }, + "updated_at": { + "$date": "2025-07-29T12:13:31.556Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795eae6a4463c0057e68d61" + }, + "name": "ساندویچ گرم", + "icon": "hot-dog", + "index": 12, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T07:57:26.915Z" + }, + "updated_at": { + "$date": "2025-01-26T12:14:08.862Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795eb06a4463c0057e68d76" + }, + "name": "ساندویچ سرد", + "icon": "Asset1612", + "index": 13, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T07:57:58.692Z" + }, + "updated_at": { + "$date": "2025-01-26T12:14:34.303Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67960d18a4463c0057e693be" + }, + "name": "سالاد و پیش غذا", + "icon": "Asset1512", + "index": 11, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T10:23:20.435Z" + }, + "updated_at": { + "$date": "2025-10-27T14:47:07.008Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679615c6a4463c0057e695b4" + }, + "name": "چای و دمنوش", + "icon": "Asset612", + "index": 9, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T11:00:22.719Z" + }, + "updated_at": { + "$date": "2025-01-26T11:00:22.719Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67961856a4463c0057e6963e" + }, + "name": "دسر", + "icon": "Asset1412", + "index": 10, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T11:11:18.595Z" + }, + "updated_at": { + "$date": "2025-01-26T11:11:18.595Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6796cfa4a4463c0057e6ab4c" + }, + "name": "دونات دوبی ", + "icon": "Asset1412", + "index": 23, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-01-27T00:13:24.231Z" + }, + "updated_at": { + "$date": "2025-01-27T00:13:24.231Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "name": "نوشیدنی گرم بر پایه اسپرسو", + "icon": "tea", + "index": 1, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-28T14:26:02.506Z" + }, + "updated_at": { + "$date": "2025-01-29T16:40:28.147Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a5a53bd2ce20057147d8b" + }, + "name": "نوشیدنی گرم", + "icon": "Asset2012", + "index": 2, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T16:41:55.148Z" + }, + "updated_at": { + "$date": "2025-01-29T16:41:55.148Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a5ab0bd2ce20057147da6" + }, + "name": "نوشیدنی سرد بر پایه اسپرسو", + "icon": "Asset712", + "index": 3, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T16:43:28.491Z" + }, + "updated_at": { + "$date": "2025-01-29T16:43:28.491Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a5adcbd2ce20057147db5" + }, + "name": "دمنوش و چای", + "icon": "tea-pot", + "index": 4, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T16:44:12.079Z" + }, + "updated_at": { + "$date": "2025-01-29T16:44:12.079Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a5b01bd2ce20057147dbe" + }, + "name": "شیک", + "icon": "Asset1112", + "index": 5, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T16:44:49.841Z" + }, + "updated_at": { + "$date": "2025-01-29T16:44:49.841Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a5b42bd2ce20057147dcd" + }, + "name": "ماکتل", + "icon": "Asset1212", + "index": 6, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T16:45:54.280Z" + }, + "updated_at": { + "$date": "2025-01-29T16:45:54.280Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a5bbebd2ce20057147ddf" + }, + "name": "اسموتی", + "icon": "juice", + "index": 7, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T16:47:58.545Z" + }, + "updated_at": { + "$date": "2025-01-29T16:47:58.545Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a5c40bd2ce20057147de8" + }, + "name": "کیک و دسر", + "icon": "Asset1412", + "index": 8, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T16:50:08.934Z" + }, + "updated_at": { + "$date": "2025-01-29T16:50:08.934Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679b535bbd2ce200571493da" + }, + "name": "صبحانه", + "icon": "Asset412", + "index": 14, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-30T10:24:27.978Z" + }, + "updated_at": { + "$date": "2025-01-30T10:24:27.978Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679b8217bd2ce20057149938" + }, + "name": "اسپرسو بار", + "icon": "Asset212", + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-01-30T13:43:51.129Z" + }, + "updated_at": { + "$date": "2025-02-07T07:32:43.498Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5bba6bd2ce20057159539" + }, + "name": "بارسرد بر پایه اسپرسو", + "icon": "soft-drinks", + "index": 2, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:52:06.589Z" + }, + "updated_at": { + "$date": "2025-02-07T07:52:06.589Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5c045bd2ce20057159653" + }, + "name": "صبحانه", + "icon": "Asset412", + "index": 7, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:11:49.554Z" + }, + "updated_at": { + "$date": "2025-02-07T08:11:49.554Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5c6b9bd2ce2005715971a" + }, + "name": "پیش غذا", + "icon": "french-fries", + "index": 6, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:39:21.737Z" + }, + "updated_at": { + "$date": "2025-02-07T15:48:40.139Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5cbf3bd2ce20057159807" + }, + "name": "دمنوش ها", + "icon": "Asset2012", + "index": 4, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T09:01:39.603Z" + }, + "updated_at": { + "$date": "2025-02-07T09:01:39.603Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5fee4bd2ce20057159ffe" + }, + "name": "بارسرد", + "icon": "Asset1212", + "index": 5, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T12:39:00.458Z" + }, + "updated_at": { + "$date": "2025-02-07T12:39:00.458Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a60565bd2ce2005715a0b6" + }, + "name": "شیک", + "icon": "Asset1112", + "index": 3, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T13:06:45.835Z" + }, + "updated_at": { + "$date": "2025-08-12T13:58:10.047Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a61944bd2ce2005715a3c7" + }, + "name": "غذا اصلی", + "icon": "Asset2112", + "index": 8, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T14:31:32.862Z" + }, + "updated_at": { + "$date": "2025-02-07T14:31:32.862Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b2531153628200621fd8f7" + }, + "name": "بار گرم بدون کافئین ", + "icon": "tea", + "index": 10, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:05:21.051Z" + }, + "updated_at": { + "$date": "2025-02-16T21:05:21.051Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e990e0536282006224d7be" + }, + "name": "قهوه ها", + "icon": "Asset212", + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T18:43:44.198Z" + }, + "updated_at": { + "$date": "2025-11-25T12:52:39.928Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e99b4c536282006224db80" + }, + "name": "پیستری", + "icon": "Asset1412", + "index": 3, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T19:28:12.215Z" + }, + "updated_at": { + "$date": "2025-11-25T12:53:57.400Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e99d36536282006224dc0d" + }, + "name": "چای و دمنوش", + "icon": "Asset612", + "index": 4, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T19:36:22.500Z" + }, + "updated_at": { + "$date": "2025-11-25T12:56:18.250Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e99d4f536282006224dc16" + }, + "name": "نوشیدنی سرد", + "icon": "Asset712", + "index": 12, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T19:36:47.154Z" + }, + "updated_at": { + "$date": "2025-11-25T13:05:35.878Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e99d66536282006224dc1f" + }, + "name": "ماکتل", + "icon": "Asset1212", + "index": 11, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T19:37:10.637Z" + }, + "updated_at": { + "$date": "2025-11-25T13:05:20.543Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e99d78536282006224dc28" + }, + "name": "بستنی", + "icon": "Asset1112", + "index": 10, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T19:37:28.497Z" + }, + "updated_at": { + "$date": "2025-11-25T13:04:54.160Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e99d92536282006224dc4c" + }, + "name": "نوشیدنی گرم", + "icon": "Asset212", + "index": 6, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T19:37:54.745Z" + }, + "updated_at": { + "$date": "2025-12-02T13:33:44.789Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e99dbf536282006224dc58" + }, + "name": "ایتم های بر پایه شیر", + "icon": "Asset212", + "index": 5, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T19:38:39.894Z" + }, + "updated_at": { + "$date": "2025-11-25T13:01:04.036Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e99de8536282006224dc82" + }, + "name": "بیکری", + "icon": "Asset1412", + "index": 7, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T19:39:20.752Z" + }, + "updated_at": { + "$date": "2025-11-25T13:03:57.546Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e99e00536282006224dc91" + }, + "name": "سانویچ سرد", + "icon": "Asset1612", + "index": 8, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T19:39:44.508Z" + }, + "updated_at": { + "$date": "2025-11-25T13:04:15.616Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e99e11536282006224dc9a" + }, + "name": "سالاد", + "icon": "Asset1512", + "index": 9, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T19:40:01.566Z" + }, + "updated_at": { + "$date": "2025-11-25T13:04:35.523Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e99e84536282006224dcde" + }, + "name": "اب", + "icon": "Asset1212", + "index": 13, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T19:41:56.861Z" + }, + "updated_at": { + "$date": "2025-11-25T13:05:51.413Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faae25f43a0a007b479eaa" + }, + "name": "vip drink", + "icon": "juice", + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-04-12T18:17:09.619Z" + }, + "updated_at": { + "$date": "2025-04-12T18:17:09.619Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67fc02bbc4a0d20062ba1e6c" + }, + "name": "کیک", + "icon": "Asset1412", + "index": 11, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-04-13T18:30:19.637Z" + }, + "updated_at": { + "$date": "2025-04-13T18:30:19.637Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "680816f77383a10062ca4ba5" + }, + "name": "", + "icon": "chicken-fry", + "index": 1, + "storeId": { + "$oid": "678922c2a4463c0057e52bde" + }, + "created_at": { + "$date": "2025-04-22T22:23:51.883Z" + }, + "updated_at": { + "$date": "2025-04-22T22:23:51.883Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6847c6f5f114460057d617e1" + }, + "name": "پاستاها", + "icon": "Asset1312", + "index": 1, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-10T05:47:33.064Z" + }, + "updated_at": { + "$date": "2025-06-10T05:47:33.064Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "684ad2a6f114460057d65be3" + }, + "name": "شیک", + "icon": "Asset1112", + "index": 8, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-06-12T13:14:14.750Z" + }, + "updated_at": { + "$date": "2025-07-29T12:16:03.103Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "684be3cff114460057d679ed" + }, + "name": "Menu star (Only for special days)", + "icon": "Asset1312", + "index": 2, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:39:43.492Z" + }, + "updated_at": { + "$date": "2025-06-13T08:39:43.492Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "684be3fdf114460057d679fd" + }, + "name": "تاپینگ بار", + "icon": "Asset1512", + "index": 3, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:40:29.347Z" + }, + "updated_at": { + "$date": "2025-06-13T08:40:29.347Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "684be428f114460057d67a06" + }, + "name": "چیاباتا(سندویچ‌)", + "icon": "Asset1612", + "index": 4, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:41:12.455Z" + }, + "updated_at": { + "$date": "2025-06-13T08:41:12.455Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "684be447f114460057d67a0f" + }, + "name": "نوشیدنی", + "icon": "Asset1212", + "index": 5, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:41:43.067Z" + }, + "updated_at": { + "$date": "2025-06-13T08:41:43.067Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6861026c9086300011bdf813" + }, + "name": "آش ها", + "icon": "Asset1312", + "index": 1, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T09:07:56.708Z" + }, + "updated_at": { + "$date": "2025-06-29T09:07:56.708Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68612389a67e8f0012d55d2a" + }, + "name": "غذاهای اصلی", + "icon": "Asset2112", + "index": 2, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T11:29:13.445Z" + }, + "updated_at": { + "$date": "2025-06-29T11:29:13.445Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "686123a8a67e8f0012d55d33" + }, + "name": "غذاهای ویژه در طول هفته", + "icon": "Asset312", + "index": 3, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T11:29:44.413Z" + }, + "updated_at": { + "$date": "2025-06-29T11:29:44.413Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "686123c3a67e8f0012d55d3c" + }, + "name": "صبحانه ", + "icon": "Asset412", + "index": 4, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T11:30:11.039Z" + }, + "updated_at": { + "$date": "2025-06-29T11:30:11.039Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68612462a67e8f0012d55d48" + }, + "name": "نوشیدنی ها", + "icon": "Asset1912", + "index": 5, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T11:32:50.138Z" + }, + "updated_at": { + "$date": "2025-06-29T11:32:50.138Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68615ca976ec130012b3a94a" + }, + "name": "پیش غذا", + "icon": "french-fries", + "index": 6, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T15:32:57.638Z" + }, + "updated_at": { + "$date": "2025-06-29T15:32:57.638Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68615cf876ec130012b3a953" + }, + "name": "دسرها", + "icon": "Asset1412", + "index": 7, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T15:34:16.056Z" + }, + "updated_at": { + "$date": "2025-06-29T15:34:16.056Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762813555acb0012cfd937" + }, + "name": "اسپرسو بار", + "icon": "Asset212", + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:06:11.534Z" + }, + "updated_at": { + "$date": "2025-07-15T10:06:11.534Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6876285f555acb0012cfd958" + }, + "name": "نوشیدنی سرد بر پایه قهوه", + "icon": "Asset712", + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:07:27.059Z" + }, + "updated_at": { + "$date": "2025-07-15T10:07:27.059Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762dfc555acb0012cfdbe2" + }, + "name": "ساندویچ ", + "icon": "hot-dog", + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:31:24.722Z" + }, + "updated_at": { + "$date": "2025-07-15T10:31:24.722Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68c9154003c3c700124a2481" + }, + "name": "سرویس اضافه", + "icon": "333", + "index": 8, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-09-16T07:44:00.097Z" + }, + "updated_at": { + "$date": "2025-09-16T07:44:00.097Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68da61cbed9f6a001294b26b" + }, + "name": "ماکتیل", + "icon": "Asset1212", + "index": 12, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-09-29T10:39:07.698Z" + }, + "updated_at": { + "$date": "2025-12-07T11:10:00.073Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff8ead685b61001121ba9b" + }, + "name": "اضافه بار", + "icon": "Asset812", + "index": 15, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T15:24:29.331Z" + }, + "updated_at": { + "$date": "2025-10-27T15:24:29.331Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6925a5d9b781ca001170a50d" + }, + "name": "پیتزا", + "icon": "Asset2212", + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-11-25T12:49:29.237Z" + }, + "updated_at": { + "$date": "2025-11-25T12:49:29.237Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "693bd9a195816d0012b73bb0" + }, + "name": "منوی اقتصادی ", + "icon": "cup-cake", + "index": 24, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-12-12T09:00:17.810Z" + }, + "updated_at": { + "$date": "2025-12-12T09:00:17.810Z" + }, + "__v": 0 +}] \ No newline at end of file diff --git a/dump/dmenu_db.foods.json b/dump/dmenu_db.foods.json new file mode 100644 index 0000000..a03c917 --- /dev/null +++ b/dump/dmenu_db.foods.json @@ -0,0 +1,82062 @@ +[{ + "_id": { + "$oid": "61ac62cf49a68c1ea8e7b298" + }, + "price": 5050000, + "stock": 0, + "static_discount": 0, + "name": "بیف استراگانف .. beef stroganoff ", + "description": "فیله گوساله / سس سفید / قارچ و سیب زمینی/ پنیر پارمزان..veal fillet/ mayonnaise sauce/mushroom/potato/parmesan cheese ", + "short_description": "", + "category": { + "$oid": "61a7605dd5c3921920048303" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T06:57:19.400Z" + }, + "updated_at": { + "$date": "2025-12-04T11:20:06.742Z" + }, + "__v": 0, + "image": "food_1714292844747.png", + "active": true +}, +{ + "_id": { + "$oid": "61ac62ed49a68c1ea8e7b2b7" + }, + "price": 4950000, + "stock": 0, + "static_discount": 0, + "name": "چیکن استراگانف .. chicken stroganoff ", + "description": "فیله مرغ/ سس سفید / قارچ و سیب زمینی/ پنیر پارمزان..chicken fillet/ mayonnaise sauce/mushroom/potato/parmesan cheese ", + "short_description": "", + "category": { + "$oid": "61a7605dd5c3921920048303" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T06:57:49.127Z" + }, + "updated_at": { + "$date": "2025-12-04T11:19:45.590Z" + }, + "__v": 0, + "image": "food_1714291139700.png", + "active": true +}, +{ + "_id": { + "$oid": "61ac632549a68c1ea8e7b2fb" + }, + "price": 4650000, + "stock": 0, + "static_discount": 0, + "name": "اسپاگتی گوشت .. meat spaghetti ", + "description": "اســـپاگتی /فیله گوســـاله/گوجه گیلاسی/قارچ/سس مخصوص آلفردو/ پنیر پارمزان..spaghetti/veal fillet/tomato/mushroom/alfredo special sauce/parmesan cheese", + "short_description": "", + "category": { + "$oid": "61a7605dd5c3921920048303" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T06:58:45.632Z" + }, + "updated_at": { + "$date": "2025-12-04T11:19:19.199Z" + }, + "__v": 0, + "active": true, + "image": "food_1715716176915.png" +}, +{ + "_id": { + "$oid": "61ac637449a68c1ea8e7b33f" + }, + "price": 4550000, + "stock": 0, + "static_discount": 0, + "name": "پنه میلانو .. Milano Pasta", + "description": "پنه ریگاته/فیله مرغ/فیله گوســـاله/گوجه گیلاسی/قارچ/ســـس مخصوص آلفردو/ پنیر پارمزان..rigate pasta/chicken fillet/mushroom/tomato/alfredo special sauce/parmesan cheese", + "short_description": "", + "category": { + "$oid": "61a7605dd5c3921920048303" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:00:04.211Z" + }, + "updated_at": { + "$date": "2025-12-04T11:18:28.520Z" + }, + "__v": 0, + "active": true, + "image": "food_1735148231197.png" +}, +{ + "_id": { + "$oid": "61ac639d49a68c1ea8e7b363" + }, + "price": 4150000, + "stock": 0, + "static_discount": 0, + "name": "پنه آلفردو .. Alfredo pasta", + "description": "پنـــه ریگاته/فیلـــه مرغ/قـــارچ/ گوجه گیلاســـی /ســـس مخصوص آلفردو/ پنیر پارمزان..rigate pasta/chicken fillet/mushroom/tomato/alfredo special sauce/parmesan cheese", + "short_description": "", + "category": { + "$oid": "61a7605dd5c3921920048303" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:00:45.349Z" + }, + "updated_at": { + "$date": "2025-12-04T11:18:07.000Z" + }, + "__v": 0, + "active": true, + "image": "food_1715716115154.png" +}, +{ + "_id": { + "$oid": "61ac659849a68c1ea8e7b460" + }, + "price": 4150000, + "stock": 0, + "static_discount": 0, + "name": "اسپاگتی پستو .. pesto spaghetti ", + "description": "فیله مرغ/اسپاگتی/سس پستو/قارچ/پنیرپارمزان.. chicken fillet/spaghetti/pesto sauce/parmesan cheese/mushroom", + "short_description": "", + "category": { + "$oid": "61a7605dd5c3921920048303" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:09:12.133Z" + }, + "updated_at": { + "$date": "2025-12-04T11:17:27.438Z" + }, + "__v": 0, + "active": true, + "image": "food_1715715922343.png" +}, +{ + "_id": { + "$oid": "61ac6aa35b008d6934770945" + }, + "price": 6150000, + "stock": 0, + "static_discount": 0, + "name": "چانو.. Chano ", + "description": "پنیر/فیله گوساله طعم دارشده/ارگانو.سیر cheese/veal fillet/organo", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:30:43.601Z" + }, + "updated_at": { + "$date": "2025-12-04T11:28:18.788Z" + }, + "__v": 0, + "active": true, + "image": "food_1714290662409.png" +}, +{ + "_id": { + "$oid": "61ac6acb5b008d6934770954" + }, + "price": 6600000, + "stock": 0, + "static_discount": 0, + "name": "مازراتی.. Pulled beef ", + "description": "پنیر/مغز ران گوساله طعم دار شده/قارچ/ فلفل دلمه ای/گوجه/ارگانو..cheese/calf thigh marrow/mushroom/sweet pepper/olive/tomato/organo", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:31:23.921Z" + }, + "updated_at": { + "$date": "2025-12-04T11:27:26.519Z" + }, + "__v": 0, + "active": true, + "image": "food_1714291733978.png" +}, +{ + "_id": { + "$oid": "61ac6ae75b008d6934770961" + }, + "price": 5500000, + "stock": 0, + "static_discount": 0, + "name": "کاپری چیوسا.. Capricciosa", + "description": "پنیر/ژامبـــون گوشـــت/قارچ/فلفل دلمـــه ای/ارگانو..cheese/ham meat/mushroom/sweet pepper/olive/organo", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:31:51.067Z" + }, + "updated_at": { + "$date": "2025-12-04T11:27:03.523Z" + }, + "__v": 0, + "active": true, + "image": "food_1714291580847.png" +}, +{ + "_id": { + "$oid": "61ac6b155b008d693477096e" + }, + "price": 5600000, + "stock": 0, + "static_discount": 0, + "name": "سیسیلی(Hot).. Sicily ", + "description": "پنیر/فیلـــه مـــرغ گریـــل شـــده طعـــم دار تند/قارچ/فلفل دلمه ای /ارگانو/سس بار بیکیو..cheese/hot chicken fillet grilled/mushroom/sweet pepper/organo/Bar.B.Q sauce", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:32:37.399Z" + }, + "updated_at": { + "$date": "2025-12-04T11:26:41.101Z" + }, + "__v": 0, + "active": true, + "image": "food_1714292109999.png" +}, +{ + "_id": { + "$oid": "61ac6b5f5b008d693477097b" + }, + "price": 5500000, + "stock": 0, + "static_discount": 0, + "name": "پپرونی (Hot).. Pepperoni ", + "description": "پنیر /پپرونی/ارگانو/هالوپینو..cheese/pepperoni/olive/organo/jalopino", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:33:51.497Z" + }, + "updated_at": { + "$date": "2025-12-04T11:25:52.788Z" + }, + "__v": 0, + "active": true, + "image": "food_1713707400167.png" +}, +{ + "_id": { + "$oid": "61ac6b765b008d6934770988" + }, + "price": 4400000, + "stock": 0, + "static_discount": 0, + "name": "وجتریین.. Vegetarian ", + "description": "پنیر/سبزیجات تازه فصل/صیفی جات تازه فصل/ارگانو..cheese/vegetables/summer crops/organo", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:34:14.749Z" + }, + "updated_at": { + "$date": "2025-12-04T11:25:28.615Z" + }, + "__v": 0, + "active": true, + "image": "food_1714292678356.png" +}, +{ + "_id": { + "$oid": "61ac6b955b008d6934770995" + }, + "price": 4400000, + "stock": 0, + "static_discount": 0, + "name": "مارگاریتا.. Margherita ", + "description": "پنیر/گوجه /ریحان/ارگانو..cheese/tomato/basil/organo", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:34:45.351Z" + }, + "updated_at": { + "$date": "2025-12-04T11:25:03.444Z" + }, + "__v": 0, + "active": true, + "image": "food_1714291688802.png" +}, +{ + "_id": { + "$oid": "61ac6bbd5b008d69347709a2" + }, + "price": 6100000, + "stock": 0, + "static_discount": 0, + "name": "کوارترپیتزا.. Quarter pizza ", + "description": "۱/۴ کاپری / ۱/۴ سیسیلی/۱/۴ پپرونی/۱/۴ چانو..1,4capri/1,4sicily/1,4pepperoni/1,4chano", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:35:25.676Z" + }, + "updated_at": { + "$date": "2025-12-04T11:24:38.097Z" + }, + "__v": 0, + "active": true, + "image": "food_1714291863631.png" +}, +{ + "_id": { + "$oid": "61ac6bd95b008d69347709af" + }, + "price": 5700000, + "stock": 0, + "static_discount": 0, + "name": "بیف پستو.. Beef pesto", + "description": "پنیـــر/فیلـــه گوســـاله/پیاز/فلفل دلمـــه ای/سس پستو/ریحان..cheese/veal fillet/onion/sweet pepper/olive/pesto sauce/basil", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:35:53.029Z" + }, + "updated_at": { + "$date": "2025-12-04T11:24:12.429Z" + }, + "__v": 0, + "active": true, + "image": "food_1714291001069.png" +}, +{ + "_id": { + "$oid": "61ac6f8da4f3d5cd60e059bb" + }, + "price": 5610000, + "stock": 0, + "static_discount": 0, + "name": "بولونز.. Bolognese ", + "description": "پنیـــر/گوشـــت چـــرخ کـــرده طعـــم دار شده/قارچ/فلفل دلمه ای/ارگانو..cheese/mince meat/mushroom/sweet pepper/organo", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:51:41.171Z" + }, + "updated_at": { + "$date": "2025-12-04T11:23:51.288Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ac6fb6a4f3d5cd60e059c8" + }, + "price": 6050000, + "stock": 0, + "static_discount": 0, + "name": "مگابیف اند چیکن.. Beef & chicken ", + "description": "پنیـــر/چیکـــن استریپس/گوشـــت چـــرخ کرده/قارچ/پیاز/فلفل دلمه ای/ارگانو..cheese/chicken strips/mince meat/mushroom/onion/sweet pepper/olive/organo", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:52:22.641Z" + }, + "updated_at": { + "$date": "2025-12-04T11:23:12.781Z" + }, + "__v": 0, + "active": true, + "image": "food_1714290596848.png" +}, +{ + "_id": { + "$oid": "61ac7000a4f3d5cd60e059f2" + }, + "price": 9200000, + "stock": 0, + "static_discount": 0, + "name": "فیله مینیون .. fillett beef& mushroom sauce ", + "description": "فیلـــه گوســـاله /ســـس قارچ/دورچین ســـبزیجات و صیفی جات بخارپز )کاملا ترد و بدون چربی(سیب زمینی تنوری..veal fillet/mushroom sauce/steamed vegetables/steamed summer crops/roast potatoes/", + "short_description": "", + "category": { + "$oid": "61ac5f9b26d2e0e4fbd9b3fe" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:53:36.003Z" + }, + "updated_at": { + "$date": "2025-12-04T11:52:31.771Z" + }, + "__v": 0, + "active": true, + "image": "food_1715701889899.png" +}, +{ + "_id": { + "$oid": "61ac7020a4f3d5cd60e059ff" + }, + "price": 9200000, + "stock": 0, + "static_discount": 0, + "name": "اسموکی .. smoked beef fillet & mushrooms sauce ", + "description": "فیله گوساله دودی/سس قارچ/دورچین سبزیجات و صیفی جات بخارپز )کاملا تردو بدون چربی(سیب زمینی تنوری ..smoked veal fillet/mushroom sauce/steamed vegetables/steamed summer crops/roast potatoes ", + "short_description": "", + "category": { + "$oid": "61ac5f9b26d2e0e4fbd9b3fe" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T07:54:08.419Z" + }, + "updated_at": { + "$date": "2025-12-04T11:52:13.631Z" + }, + "__v": 0, + "active": true, + "image": "food_1714291822159.png" +}, +{ + "_id": { + "$oid": "61ac718ba4f3d5cd60e05a7e" + }, + "price": 4800000, + "stock": 0, + "static_discount": 0, + "name": "خورا ک اسپانیایی.. Spain food", + "description": "فیله گوساله تفت داده شده/مرغ تفت داده شده/پیاز ژولین/فلفل دلمه ای /قارچ / کنجد ذرت/سس مخصوص سرآشپز..veal fillet/chicken/julienne onion/sweet pepper/mushroom/sesame/corn/special sauce ", + "short_description": "", + "category": { + "$oid": "61ac5fcb26d2e0e4fbd9b409" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:00:11.791Z" + }, + "updated_at": { + "$date": "2025-12-04T11:53:12.544Z" + }, + "__v": 0, + "active": true, + "image": "food_1713773216671.png" +}, +{ + "_id": { + "$oid": "61ac71c5a4f3d5cd60e05aa1" + }, + "price": 4320000, + "stock": 0, + "static_discount": 0, + "name": "بشقاب سبزیجات.. vegetarian dish", + "description": "انـــواع ســـبزیجات تـــازه و صیفـــی جـــات تـــازه فصـــل بخارپز/پـــوره سیب زمینی..fresh steamed vegetables/fresh steamed summer crops/mashed potatoes/", + "short_description": "", + "category": { + "$oid": "61ac5fcb26d2e0e4fbd9b409" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:01:09.489Z" + }, + "updated_at": { + "$date": "2025-12-04T11:52:52.532Z" + }, + "__v": 0, + "active": true, + "image": "food_1714293582193.png" +}, +{ + "_id": { + "$oid": "61ac72b3a4f3d5cd60e05aca" + }, + "price": 5750000, + "stock": 0, + "static_discount": 0, + "name": "دبل برگر..double burger ", + "description": "گوشـــت خالص/پنیـــر گودا/پنیـــر کاراملی/گوجه/خیارشور/ کاهو/سیب زمینی سرخ شده..pure meat/gouda cheese/caramely cheese/tomato/pickled cucumber/french fries ", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:05:07.788Z" + }, + "updated_at": { + "$date": "2025-12-04T12:36:55.526Z" + }, + "__v": 0, + "active": true, + "image": "food_1714291899865.png" +}, +{ + "_id": { + "$oid": "61ac72cba4f3d5cd60e05ad7" + }, + "price": 4420000, + "stock": 0, + "static_discount": 0, + "name": "چیز برگر ..cheese burger", + "description": "گوشـــت خالـــص / پنیـــر گودا/پنیـــر کاراملی/گوجه/خیارشور/ کاهو/سیب زمینی سرخ شده..pure meat/gouda cheese/ caramely cheese/tomato/pickled cucumber/lettuce/french fries ", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:05:31.742Z" + }, + "updated_at": { + "$date": "2025-12-04T12:36:25.651Z" + }, + "__v": 0, + "active": true, + "image": "food_1713706018252.png" +}, +{ + "_id": { + "$oid": "61ac72eea4f3d5cd60e05aec" + }, + "price": 4320000, + "stock": 0, + "static_discount": 0, + "name": "برگر کلاسیک ..classic burger", + "description": "گوشت خالص /گوجه/خیارشور/ کاهو/سیب زمینی سرخ شده..pure meat/tomato/pickled cucumber/lettuce/french fries ", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:06:06.200Z" + }, + "updated_at": { + "$date": "2025-12-04T12:36:04.719Z" + }, + "__v": 0, + "active": true, + "image": "food_1715753283656.png" +}, +{ + "_id": { + "$oid": "61ac7312a4f3d5cd60e05af9" + }, + "price": 4520000, + "stock": 0, + "static_discount": 0, + "name": "ماشروم برگر .. mushroom burgers ", + "description": "گوشت خالص/خیارشور/سس مخصوص قارچ/سیب زمینی سرخ شده..pure meat/pickled cucumber/special mushroom sauce/french fries ", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:06:42.431Z" + }, + "updated_at": { + "$date": "2025-12-04T12:35:43.587Z" + }, + "__v": 0, + "active": true, + "image": "food_1715752985770.png" +}, +{ + "_id": { + "$oid": "61ac7331a4f3d5cd60e05b06" + }, + "price": 3900000, + "stock": 0, + "static_discount": 0, + "name": "زینگر برگر .. zinger burger", + "description": "فیله مرغ سوخاری استریپس/کاهو/خیارشور/پنیر گودا/سیب زمینی سرخ شده..stripped fried chicken fillet/lettuce/pickled cucumber/gouda cheese/french fries ", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:07:13.709Z" + }, + "updated_at": { + "$date": "2025-12-04T12:35:16.216Z" + }, + "__v": 0, + "active": true, + "image": "food_1713706335139.png" +}, +{ + "_id": { + "$oid": "61ac736ea4f3d5cd60e05b20" + }, + "price": 4950000, + "stock": 0, + "static_discount": 0, + "name": "5 ستاره .. star burger: beef & chicken ", + "description": "گوشـــت خالص/فیلـــه مـــرغ گریـــل شـــده/پنیر گودا/گوجه/خیارشور/کاهو/سیب زمینی سرخ شده..pure meat/grilled chicken fillet/gouda cheese/tomato/pickled cucumber/lettuce/french fries ", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:08:14.480Z" + }, + "updated_at": { + "$date": "2025-12-04T12:34:54.832Z" + }, + "__v": 0, + "active": true, + "image": "food_1714291935378.png" +}, +{ + "_id": { + "$oid": "61ac7385a4f3d5cd60e05b33" + }, + "price": 4250000, + "stock": 0, + "static_discount": 0, + "name": "پنینی مرغ با سس پستو .. chicken pesto panini ", + "description": "فیلـــه مرغ مـــزه دار گریل/سس پستو/ کاهو/گوجه/خیارشور/ســـیب زمینی سرخ شده..grilled chicken fillet/pesto sauce/lettuce/tomato/pickled cucumber/french fries ", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:08:37.275Z" + }, + "updated_at": { + "$date": "2025-12-04T12:34:33.555Z" + }, + "__v": 0, + "active": true, + "image": "food_1713779020113.png" +}, +{ + "_id": { + "$oid": "61ac73a6a4f3d5cd60e05b40" + }, + "price": 4920000, + "stock": 0, + "static_discount": 0, + "name": "پنینی بیف .. beef fillet panini", + "description": "فیله گوساله مزه دار شده / پنیر گودا/کاهو/گوجه/خیارشور/سیب زمینی سرخ شده..veal fillet/gouda cheese/tomato/pickled cucumber/french fries/lettuce", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:09:10.348Z" + }, + "updated_at": { + "$date": "2025-12-04T12:34:08.573Z" + }, + "__v": 0, + "active": true, + "image": "food_1715752107592.png" +}, +{ + "_id": { + "$oid": "61ac73c2a4f3d5cd60e05b4d" + }, + "price": 5160000, + "stock": 0, + "static_discount": 0, + "name": "فیلا دلفیا ..Philadelphia sandwich ", + "description": "فیلـــه گوســـاله و فیله مـــرغ طعـــم دار شـــده/پنیر گودا/ســـس مخصوص/فلفـــل دلمـــه ای/ پیـــاز/ قـــارچ/ ســـیب زمینـــی ســـرخ شده/سس خردل با نان چاپاتا..veal fillet/chicken fillet/ gouda cheese/special sauce/sweet pepper/onion/mushroom/french fries/mustard/chapata bread ", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:09:38.991Z" + }, + "updated_at": { + "$date": "2025-12-04T12:33:40.853Z" + }, + "__v": 0, + "active": true, + "image": "food_1713772958621.png" +}, +{ + "_id": { + "$oid": "61ac73e2a4f3d5cd60e05b5a" + }, + "price": 5420000, + "stock": 0, + "static_discount": 0, + "name": "پنینی رست بیف .. roast beef panini ", + "description": "مغز ران گوساله/پیاز و جعفری/قارچ/خیارشور/سیب زمینی سرخ شده..calf thigh marrow/onion/parsley/mushroom/pickled cucumber/french fries", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:10:10.547Z" + }, + "updated_at": { + "$date": "2025-12-04T12:33:14.575Z" + }, + "__v": 0, + "active": true, + "image": "food_1713779110050.png" +}, +{ + "_id": { + "$oid": "61ac740de442f524fe417bba" + }, + "price": 4150000, + "stock": 0, + "static_discount": 0, + "name": "دوتکه:(نرمال)", + "description": "دوتکه ســـوخاری/ سیب زمینی سرخ کرده/نان بروتچن /سس های مخصوص..two slices fried/french fries/brutchen bread/special sauces", + "short_description": "", + "category": { + "$oid": "61ac602726d2e0e4fbd9b43f" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:10:53.992Z" + }, + "updated_at": { + "$date": "2025-12-04T12:39:36.287Z" + }, + "__v": 0, + "active": true, + "image": "food_1713707054857.png" +}, +{ + "_id": { + "$oid": "61ac7432e442f524fe417bea" + }, + "price": 5150000, + "stock": 0, + "static_discount": 0, + "name": "سه تکه:(نرمال)", + "description": "سه تکه سوخاری/ همراه سیب زمینی سرخ کرده/نان بروتچن /سس های مخصوص..three slices fried/french fries/brutchen bread/special sauces", + "short_description": "", + "category": { + "$oid": "61ac602726d2e0e4fbd9b43f" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:11:30.702Z" + }, + "updated_at": { + "$date": "2025-12-04T12:39:16.885Z" + }, + "__v": 0, + "active": true, + "image": "food_1713707048869.png" +}, +{ + "_id": { + "$oid": "61ac7451e442f524fe417c16" + }, + "price": 7100000, + "stock": 0, + "static_discount": 0, + "name": "پنج تکه:(نرمال)", + "description": "پنج تکه سوخاری/سیب زمینی سرخ کرده/نان بروتچن /سس های مخصوص..five slices fried/french fries/brut Chen bread/special sauces", + "short_description": "", + "category": { + "$oid": "61ac602726d2e0e4fbd9b43f" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:12:01.890Z" + }, + "updated_at": { + "$date": "2025-12-04T12:38:53.035Z" + }, + "__v": 0, + "active": true, + "image": "food_1713707039568.png" +}, +{ + "_id": { + "$oid": "61ac74b9e442f524fe417c23" + }, + "price": 4370000, + "stock": 0, + "static_discount": 0, + "name": "سه تکه فیله : (استریپس)", + "description": "سه فیله سوخاری/سیب زمینی سرخ کرده/نان بروتچن /سس های مخصوص..three fried fillet/french fries/britches bread/special sauces", + "short_description": "", + "category": { + "$oid": "61ac602726d2e0e4fbd9b43f" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:13:45.110Z" + }, + "updated_at": { + "$date": "2025-12-04T12:38:33.867Z" + }, + "__v": 0, + "active": true, + "image": "food_1713706975656.png" +}, +{ + "_id": { + "$oid": "61ac74ede442f524fe417c30" + }, + "price": 5950000, + "stock": 0, + "static_discount": 0, + "name": "پنج تکه فیله : (استریپس)", + "description": "پنج فیله سوخاری/سیب زمینی سرخ کرده/نان بروتچن /سس های مخصوص..five slices fried/french fries/ brutchen bread/special sauces", + "short_description": "", + "category": { + "$oid": "61ac602726d2e0e4fbd9b43f" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:14:37.911Z" + }, + "updated_at": { + "$date": "2025-12-04T12:38:13.371Z" + }, + "__v": 0, + "active": true, + "image": "food_1713706989835.png" +}, +{ + "_id": { + "$oid": "61ac7515e442f524fe417c3d" + }, + "price": 4700000, + "stock": 0, + "static_discount": 0, + "name": "ویژه کودکان", + "description": "چیکـــن اســـترپس بـــا نـــان بروتچـــن کوچـــک/دو عـــدد فیلـــه اســـترپس/قارچ سوخاری/ســـیب زمینـــی ســـرخ کـــرده/ ســـالاد کلم/سس مخصوص..one slices fried/ brutchen bread/two strips fillet/fried mushroom/french fries/ cabbage salad/special sauce ", + "short_description": "", + "category": { + "$oid": "61ac602726d2e0e4fbd9b43f" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:15:17.023Z" + }, + "updated_at": { + "$date": "2025-12-04T12:37:49.586Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ac7531e442f524fe417c4d" + }, + "price": 6380000, + "stock": 0, + "static_discount": 0, + "name": "سوخاری ویــــــژه", + "description": "یـــک تکـــه ســـوخاری /دو تکـــه فیله اســـتریپس/زینگر برگر/ســـیب زمینی سرخ کرده/ قارچ سوخاری/ سس مخصوص مخصوص ..one slice fried/two slices strips fillet/zinger burger/french fries/fried mushroom/ cabbage salad/special sauce ", + "short_description": "", + "category": { + "$oid": "61ac602726d2e0e4fbd9b43f" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:15:45.311Z" + }, + "updated_at": { + "$date": "2025-12-04T12:37:26.481Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ac7564e442f524fe417c5a" + }, + "price": 3950000, + "stock": 0, + "static_discount": 0, + "name": "سالاد سزار(مرغ گریل) .. Caesar salad", + "description": "کاهـــو رســـمی و پیچ/گوجـــه گیلاســـی/زیتون/نان کروتان/پنیـــر پارمزان/همراه با سس سزار..lettuce/tomato/olive/crotan bread/parmesan cheese/ Caesar sauce ", + "short_description": "", + "category": { + "$oid": "61ac606626d2e0e4fbd9b45a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:16:36.821Z" + }, + "updated_at": { + "$date": "2025-12-04T11:55:31.353Z" + }, + "__v": 0, + "active": true, + "image": "food_1715788350856.png" +}, +{ + "_id": { + "$oid": "61ac7599e442f524fe417c67" + }, + "price": 4050000, + "stock": 0, + "static_discount": 0, + "name": "سالاد سزار (فیله سوخار ی با دیپ چدار) .. Caesar salad/Fried chicken", + "description": "کاهـــو رســـمی و پیچ/گوجـــه گیلاســـی/زیتون/نان کروتان/پنیـــر پارمزان/همراه با سس سزار..lettuce/tomato/olive/crotan bread/parmesan cheese/ Caesar sauce ", + "short_description": "", + "category": { + "$oid": "61ac606626d2e0e4fbd9b45a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:17:29.441Z" + }, + "updated_at": { + "$date": "2025-12-04T11:54:56.299Z" + }, + "__v": 0, + "active": true, + "image": "food_1713772878324.png" +}, +{ + "_id": { + "$oid": "61ac7630e442f524fe417c96" + }, + "price": 3300000, + "stock": 0, + "static_discount": 0, + "name": "سالاد فصل .. Iranian salad ", + "description": "کاهـــو رســـمی و پیـــچ /کلـــم قرمـــز /هویج/گوجـــه گیلاسی/زیتون/خیار/همراه با سس رنج..lettuce/red cabbage/ carrot/tomato/olive/cucumber/sis wrench", + "short_description": "", + "category": { + "$oid": "61ac606626d2e0e4fbd9b45a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:20:00.602Z" + }, + "updated_at": { + "$date": "2025-12-04T11:54:29.389Z" + }, + "__v": 0, + "active": true, + "image": "food_1715852971271.png" +}, +{ + "_id": { + "$oid": "61ac76aae442f524fe417cb0" + }, + "price": 2550000, + "stock": 0, + "static_discount": 0, + "name": "سیب زمینی پنیر و قارچ .. Mushroom cheese potatoes", + "description": "سیب زمینی /قارچ/پنیر..potato/mushroom/cheese", + "short_description": "", + "category": { + "$oid": "61ac607926d2e0e4fbd9b465" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:22:02.857Z" + }, + "updated_at": { + "$date": "2025-12-04T12:01:47.573Z" + }, + "__v": 0, + "active": true, + "image": "food_1715934773791.png" +}, +{ + "_id": { + "$oid": "61ac76c7e442f524fe417cbd" + }, + "price": 2750000, + "stock": 0, + "static_discount": 0, + "name": "سیب زمینی پنیرقارچ و ژامبون", + "description": "سیب زمینی/قارچ/ژامبون/پنیر..potato/mushroom/ham/cheese", + "short_description": "", + "category": { + "$oid": "61ac607926d2e0e4fbd9b465" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:22:31.108Z" + }, + "updated_at": { + "$date": "2025-12-04T12:01:23.056Z" + }, + "__v": 0, + "active": true, + "image": "food_1714290894911.png" +}, +{ + "_id": { + "$oid": "61ac76ede442f524fe417cd7" + }, + "price": 3100000, + "stock": 0, + "static_discount": 0, + "name": "نان سیر .. garlic bread", + "description": "گوجه گیلاسی، سس سیر، ذرت، پنیر پیتزا..tomato/garlic sauce/corn/pizza cheese ", + "short_description": "", + "category": { + "$oid": "61ac607926d2e0e4fbd9b465" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:23:09.889Z" + }, + "updated_at": { + "$date": "2025-12-04T12:01:04.214Z" + }, + "__v": 0, + "active": true, + "image": "food_1713773293238.png" +}, +{ + "_id": { + "$oid": "61ac7710e442f524fe417ce4" + }, + "price": 3250000, + "stock": 0, + "static_discount": 0, + "name": "میکس ناچو و فیله سوخاری", + "description": "چیپس تورتیلا/تکه های فیله سوخاری/دیپ پنیر چدار..tortilla chips/fried fillet/cheddar dip cheese ", + "short_description": "", + "category": { + "$oid": "61ac607926d2e0e4fbd9b465" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:23:44.391Z" + }, + "updated_at": { + "$date": "2025-12-04T12:00:33.524Z" + }, + "__v": 0, + "active": true, + "image": "food_1713773138383.png" +}, +{ + "_id": { + "$oid": "61ac7735e442f524fe417cf1" + }, + "price": 2450000, + "stock": 0, + "static_discount": 0, + "name": "قارچ سوخاری .. fried mushroom", + "description": "قارچ سوخاری / سس مخصوص..fried mushroom/special sauce ", + "short_description": "", + "category": { + "$oid": "61ac607926d2e0e4fbd9b465" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:24:21.481Z" + }, + "updated_at": { + "$date": "2025-12-04T11:58:51.021Z" + }, + "__v": 0, + "active": true, + "image": "food_1715934677455.png" +}, +{ + "_id": { + "$oid": "61ac774fe442f524fe417cfe" + }, + "price": 3000000, + "stock": 0, + "static_discount": 0, + "name": "قارچ سوخاری پنیر", + "description": "قارچ سوخاری / پنیر/سیب زمینی/سس قارچ..fried mushroom/cheese/potato/mushroom sauce ", + "short_description": "", + "category": { + "$oid": "61ac607926d2e0e4fbd9b465" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:24:47.726Z" + }, + "updated_at": { + "$date": "2025-12-04T11:58:23.826Z" + }, + "__v": 0, + "active": true, + "image": "food_1713773268030.png" +}, +{ + "_id": { + "$oid": "61ac7768e442f524fe417d0b" + }, + "price": 800000, + "stock": 0, + "static_discount": 0, + "name": "لیموناد lemonade", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1a2fc1eece3d7626383" + }, + "index": 2, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:25:12.952Z" + }, + "updated_at": { + "$date": "2025-09-29T10:36:28.192Z" + }, + "__v": 0, + "active": true, + "image": "food_1715791954744.png" +}, +{ + "_id": { + "$oid": "61ac777ce442f524fe417d18" + }, + "price": 1100000, + "stock": 0, + "static_discount": 0, + "name": "پشن موهیتو passion fruit ", + "description": " پشن فروت نعناع اسپرایت و لیمو", + "short_description": "", + "category": { + "$oid": "61b1a1a2fc1eece3d7626383" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:25:32.286Z" + }, + "updated_at": { + "$date": "2025-09-29T10:35:54.251Z" + }, + "__v": 0, + "active": true, + "image": "food_1715791769702.png" +}, +{ + "_id": { + "$oid": "61ac778de442f524fe417d25" + }, + "price": 900000, + "stock": 0, + "static_discount": 0, + "name": "موهیتو کلاسیک mojito", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1a2fc1eece3d7626383" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:25:49.862Z" + }, + "updated_at": { + "$date": "2025-09-29T10:33:04.711Z" + }, + "__v": 0, + "active": true, + "image": "food_1714291977244.png" +}, +{ + "_id": { + "$oid": "61ac7809e442f524fe417d32" + }, + "price": 1100000, + "stock": 0, + "static_discount": 0, + "name": "ردبری موهیتو redberry mojito", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1a2fc1eece3d7626383" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:27:53.770Z" + }, + "updated_at": { + "$date": "2025-09-29T10:32:39.604Z" + }, + "__v": 0, + "active": true, + "image": "food_1714293126185.png" +}, +{ + "_id": { + "$oid": "61ac7823e442f524fe417d3f" + }, + "price": 950000, + "stock": 0, + "static_discount": 0, + "name": "بلک موهیتو black mojito", + "description": "لیمو.نعنا.کوکاکولا", + "short_description": "", + "category": { + "$oid": "61b1a1a2fc1eece3d7626383" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:28:19.603Z" + }, + "updated_at": { + "$date": "2025-09-29T10:31:57.279Z" + }, + "__v": 0, + "active": true, + "image": "food_1715791641400.png" +}, +{ + "_id": { + "$oid": "61ac7a10e442f524fe417e26" + }, + "price": 440000, + "stock": 0, + "static_discount": 0, + "name": "نوشابه قوطی.. Coca-Cola/Fanta/Sprite", + "description": "", + "short_description": "", + "category": { + "$oid": "61ac60cdabb1b20239abe5bd" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:36:32.098Z" + }, + "updated_at": { + "$date": "2025-10-02T17:29:33.135Z" + }, + "__v": 0, + "active": true, + "image": "food_1715806193784.png" +}, +{ + "_id": { + "$oid": "61ac7a1ee442f524fe417e33" + }, + "price": 520000, + "stock": 0, + "static_discount": 0, + "name": "ماءالشعیر قوطی.. Lemon/Peach/Cactus/Tropical/Classic", + "description": "", + "short_description": "", + "category": { + "$oid": "61ac60cdabb1b20239abe5bd" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:36:46.736Z" + }, + "updated_at": { + "$date": "2025-07-29T11:29:57.045Z" + }, + "__v": 0, + "active": true, + "image": "food_1715806156688.png" +}, +{ + "_id": { + "$oid": "61ac7a2ce442f524fe417e40" + }, + "price": 110000, + "stock": 0, + "static_discount": 0, + "name": "آب معدنی.. Mineral water", + "description": "", + "short_description": "", + "category": { + "$oid": "61ac60cdabb1b20239abe5bd" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:37:00.292Z" + }, + "updated_at": { + "$date": "2024-05-15T20:52:17.278Z" + }, + "__v": 0, + "active": true, + "image": "food_1715806335977.png" +}, +{ + "_id": { + "$oid": "61ac7a3ee442f524fe417e4f" + }, + "price": 490000, + "stock": 0, + "static_discount": 0, + "name": "دوغ لیوانی.. Yoghurt", + "description": "", + "short_description": "", + "category": { + "$oid": "61ac60cdabb1b20239abe5bd" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:37:18.871Z" + }, + "updated_at": { + "$date": "2024-05-15T20:53:41.464Z" + }, + "__v": 0, + "active": true, + "image": "food_1715806418661.png" +}, +{ + "_id": { + "$oid": "61ac7a99e442f524fe417e61" + }, + "price": 4890000, + "stock": 0, + "static_discount": 0, + "name": "ویژه ژیوان(تک نفره).. Zhivan pizza ", + "description": "پنیر/ژامبون مرغ و گوشت/هات داگ/قارچ/فلفل دلمه ای/ارگانو..cheese/chicken & meat ham/hot dog/mushroom/olive/sweet pepper/organo", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:38:49.143Z" + }, + "updated_at": { + "$date": "2025-12-18T08:32:41.254Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ac7ac6e442f524fe417e73" + }, + "price": 6940000, + "stock": 0, + "static_discount": 0, + "name": "ویژه ژیوان(دو نفره).. Zhivan pizza ", + "description": "پنیر/ژامبون مرغ و گوشت/هات داگ/قارچ/فلفل دلمه ای/ارگانو..cheese/chicken & meat ham/hot dog/mushroom/olive/sweet pepper/organo", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:39:34.328Z" + }, + "updated_at": { + "$date": "2025-12-18T08:32:06.125Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ac7b06e442f524fe417e80" + }, + "price": 5690000, + "stock": 0, + "static_discount": 0, + "name": "رست بیف(تک نفره).. Roast beef ", + "description": "پنیر/مغـــز ران گوســـاله مـــزه دار شـــده/قارچ /فلفل دلمه ای/ارگانو..cheese/calf thigh/marrow/mushroom/sweet pepper/olive/organo", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:40:38.777Z" + }, + "updated_at": { + "$date": "2025-12-18T08:31:24.813Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ac7b29e442f524fe417e8d" + }, + "price": 8330000, + "stock": 0, + "static_discount": 0, + "name": "رست بیف(دو نفره).. Roast beef ", + "description": "پنیر/مغـــز ران گوســـاله مـــزه دار شـــده/قارچ /فلفل دلمه ای/ارگانو..cheese/calf thigh marrow/mushroom/sweet pepper/olive/organo", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:41:13.673Z" + }, + "updated_at": { + "$date": "2025-12-18T08:31:14.868Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ac7b66e442f524fe417e9a" + }, + "price": 4990000, + "stock": 0, + "static_discount": 0, + "name": "اسپشیال(تک نفره).. Special ", + "description": "پنیر/ژامبون/کوکتل /قارچ/فلفل دلمه ای/ارگانو..cheese/ham/cocktail/mushroom/sweet pepper/olive/organo", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:42:14.191Z" + }, + "updated_at": { + "$date": "2025-12-18T08:33:26.457Z" + }, + "__v": 0, + "active": true, + "image": "food_1713706544776.png" +}, +{ + "_id": { + "$oid": "61ac7b83e442f524fe417ea7" + }, + "price": 7060000, + "stock": 0, + "static_discount": 0, + "name": "اسپشیال(دو نفره).. Special ", + "description": "پنیر/ژامبون/کوکتل /قارچ/فلفل دلمه ای /ارگانو..cheese/ham/cocktail/mushroom/sweet pepper/olive/organo", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:42:43.608Z" + }, + "updated_at": { + "$date": "2025-12-18T08:30:51.459Z" + }, + "__v": 0, + "active": true, + "image": "food_1713706534918.png" +}, +{ + "_id": { + "$oid": "61ac7baae442f524fe417eb4" + }, + "price": 5140000, + "stock": 0, + "static_discount": 0, + "name": "وایت چیکن(تک نفره).. Chicken Alfredo ", + "description": "پنیر/مرغ مزه دار شده با خامه /قارچ/ارگانو/ذرت..cheese/chicken with cream/mushroom/organo/corn", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:43:22.260Z" + }, + "updated_at": { + "$date": "2025-12-23T09:45:38.574Z" + }, + "__v": 0, + "active": true, + "image": "food_1713706184032.png" +}, +{ + "_id": { + "$oid": "61ac7c74e442f524fe417f03" + }, + "price": 7110000, + "stock": 0, + "static_discount": 0, + "name": "وایت چیکن (دو نفره).. Chicken Alfredo ", + "description": "پنیر/مرغ مزه دار شده با خامه/قارچ/ارگانو/ذرت..cheese/chicken with cream/mushroom/organo/corn", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:46:44.786Z" + }, + "updated_at": { + "$date": "2025-12-23T09:43:14.398Z" + }, + "__v": 0, + "active": true, + "image": "food_1713706161875.png" +}, +{ + "_id": { + "$oid": "61ac7cc0e442f524fe417f14" + }, + "price": 3940000, + "stock": 0, + "static_discount": 0, + "name": "سبزیجات(تک نفره).. Vegetarian ", + "description": "پنیر/ انواع سبزیجات و صیفی جات تازه فصل..cheese/vegetables/summer crops", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:48:00.853Z" + }, + "updated_at": { + "$date": "2025-12-18T08:30:19.695Z" + }, + "__v": 0, + "active": true, + "image": "food_1713773093656.png" +}, +{ + "_id": { + "$oid": "61ac7d24e442f524fe417f2f" + }, + "price": 5100000, + "stock": 0, + "static_discount": 0, + "name": "سبزیجات(دو نفره).. Vegetarian ", + "description": "پنیر/ انواع سبزیجات و صیفی جات تازه فصل..cheese/vegetables/summer crops", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:49:40.052Z" + }, + "updated_at": { + "$date": "2025-12-18T08:30:11.386Z" + }, + "__v": 0, + "active": true, + "image": "food_1713773039190.png" +}, +{ + "_id": { + "$oid": "61ac7d4ae442f524fe417f3c" + }, + "price": 4940000, + "stock": 0, + "static_discount": 0, + "name": "پپرونی ژیوان(Hot)تک نفره.. Pepperoni ", + "description": "پنیر/پپرونی/هالوپینو/ارگانو/..cheese/pepperoni/jalopino/organo/olive", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:50:18.589Z" + }, + "updated_at": { + "$date": "2025-12-18T08:29:57.389Z" + }, + "__v": 0, + "active": true, + "image": "food_1713706642707.png" +}, +{ + "_id": { + "$oid": "61ac7d66e442f524fe417f49" + }, + "price": 7120000, + "stock": 0, + "static_discount": 0, + "name": "پپرونی ژیوان(Hot)دو نفره.. Pepperoni ", + "description": "پنیر/پپرونی/هالوپینو/ارگانو/.cheese/pepperoni/jalopino/organo/olive", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:50:46.488Z" + }, + "updated_at": { + "$date": "2025-12-18T08:29:47.091Z" + }, + "__v": 0, + "active": true, + "image": "food_1713706628691.png" +}, +{ + "_id": { + "$oid": "61ac7e67e442f524fe417f70" + }, + "price": 5340000, + "stock": 0, + "static_discount": 0, + "name": "میت اند مشروم(تک نفره).. Meat & mushroom ", + "description": "پنیر/گوشت چرخ کرده/قارچ/ فلفل دلمه ای/ پیاز/ ارگانو..cheese/mince meat/mushroom/sweet pepper/onion/organo", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:55:03.050Z" + }, + "updated_at": { + "$date": "2025-12-18T08:25:30.392Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ac7e86e442f524fe417f7d" + }, + "price": 7940000, + "stock": 0, + "static_discount": 0, + "name": "میت اند مشروم(دو نفره).. Meat & mushroom ", + "description": "پنیر/گوشت چرخ کرده/قارچ/ فلفل دلمه ای/ پیاز/ ارگانو..cheese/mince meat/mushroom/sweet pepper/onion/organo", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:55:34.986Z" + }, + "updated_at": { + "$date": "2025-12-18T08:29:32.156Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ac7ebee442f524fe417f8a" + }, + "price": 4920000, + "stock": 0, + "static_discount": 0, + "name": "سالامی(تک نفره).. Salami ", + "description": "پنیر/ســـالامی/ فلفـــل دلمـــه ای/ ارگانو/قارچ..cheese/salami/sweet pepper/olive/organo/mushroom", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:56:30.759Z" + }, + "updated_at": { + "$date": "2025-12-18T08:29:20.839Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ac7ee9e442f524fe417fa5" + }, + "price": 7060000, + "stock": 0, + "static_discount": 0, + "name": "سالامی(دو نفره).. Salami ", + "description": "پنیر/ســـالامی/ فلفـــل دلمـــه ای/ارگانو/قارچ..cheese/salami/sweet pepper/olive/organo/mushroom", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-05T08:57:13.410Z" + }, + "updated_at": { + "$date": "2025-12-18T08:25:06.108Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61b1a8defc1eece3d7626414" + }, + "price": 800000, + "stock": 0, + "static_discount": 0, + "name": "دمنوش سیـــــب و دارچیـن تک نفره Apple & Cinnamon", + "description": "", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T06:57:34.397Z" + }, + "updated_at": { + "$date": "2024-05-17T13:19:17.806Z" + }, + "__v": 0, + "active": true, + "image": "food_1715854518650.png" +}, +{ + "_id": { + "$oid": "61b1a8f5fc1eece3d7626421" + }, + "price": 1100000, + "stock": 0, + "static_discount": 0, + "name": "دمنوش سیـــــب و دارچیـن دو نفره Apple & Cinnamon", + "description": "", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T06:57:57.941Z" + }, + "updated_at": { + "$date": "2024-05-17T13:18:50.895Z" + }, + "__v": 0, + "active": true, + "image": "food_1715854419222.png" +}, +{ + "_id": { + "$oid": "61b1a963fc1eece3d762644b" + }, + "price": 600000, + "stock": 0, + "static_discount": 0, + "name": "چای سبـز و لیمو تک نفره green tea& lemon", + "description": "", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T06:59:47.605Z" + }, + "updated_at": { + "$date": "2024-05-16T10:11:48.148Z" + }, + "__v": 0, + "active": true, + "image": "food_1715854304419.png" +}, +{ + "_id": { + "$oid": "61b1a982fc1eece3d7626458" + }, + "price": 1200000, + "stock": 0, + "static_discount": 0, + "name": "جای سبز و لیمو دو نفره green tea & lemon ", + "description": "", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T07:00:18.979Z" + }, + "updated_at": { + "$date": "2024-05-16T10:10:48.830Z" + }, + "__v": 0, + "active": true, + "image": "food_1715854245151.png" +}, +{ + "_id": { + "$oid": "61b1aba9fc1eece3d76264da" + }, + "price": 650000, + "stock": 0, + "static_discount": 0, + "name": "هارمونیا تک نفره harmonies ", + "description": "", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T07:09:29.169Z" + }, + "updated_at": { + "$date": "2024-05-16T10:08:18.393Z" + }, + "__v": 0, + "active": true, + "image": "food_1715854093204.png" +}, +{ + "_id": { + "$oid": "61b1abcdfc1eece3d76264e9" + }, + "price": 1000000, + "stock": 0, + "static_discount": 0, + "name": "هارمونیا دو نفره harmonies", + "description": " گل گا‌و زبان سنبلطیب لیمو عمانی", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T07:10:05.009Z" + }, + "updated_at": { + "$date": "2024-05-16T10:07:41.179Z" + }, + "__v": 0, + "active": true, + "image": "food_1715854057726.png" +}, +{ + "_id": { + "$oid": "61b1acb1fc1eece3d762652b" + }, + "price": 1160000, + "stock": 0, + "static_discount": 0, + "name": "اسپرســــــو دبـــــــــــل().. Double Espresso ", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a16afc1eece3d7626360" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T07:13:53.627Z" + }, + "updated_at": { + "$date": "2025-12-27T09:59:08.054Z" + }, + "__v": 0, + "active": true, + "image": "food_1715711371198.png" +}, +{ + "_id": { + "$oid": "61b1ad21fc1eece3d7626552" + }, + "price": 1300000, + "stock": 0, + "static_discount": 0, + "name": "آمریکانــــــــــــــو.. Americano", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a16afc1eece3d7626360" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T07:15:45.861Z" + }, + "updated_at": { + "$date": "2025-12-27T09:57:19.850Z" + }, + "__v": 0, + "active": true, + "image": "food_1715711236185.png" +}, +{ + "_id": { + "$oid": "61b1ad62fc1eece3d762656e" + }, + "price": 1950000, + "stock": 0, + "static_discount": 0, + "name": "مــــــــوکا(کلاسیک).. Mocha", + "description": "شکلات / قهوه ", + "short_description": "", + "category": { + "$oid": "61b1a16afc1eece3d7626360" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T07:16:50.710Z" + }, + "updated_at": { + "$date": "2025-12-27T09:57:00.659Z" + }, + "__v": 0, + "active": true, + "image": "food_1715711203117.png" +}, +{ + "_id": { + "$oid": "61b1ade7fc1eece3d76265a4" + }, + "price": 2750000, + "stock": 0, + "static_discount": -1, + "name": "قهوه دمی سایفون.. Siphon coffee", + "description": "قهوه اسپشیال ", + "short_description": "", + "category": { + "$oid": "61b1a16afc1eece3d7626360" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T07:19:03.321Z" + }, + "updated_at": { + "$date": "2025-12-27T09:56:24.191Z" + }, + "__v": 0, + "active": true, + "image": "food_1715711089472.png" +}, +{ + "_id": { + "$oid": "61b1aed3fc1eece3d76265c0" + }, + "price": 1300000, + "stock": 0, + "static_discount": 0, + "name": "قهوه ترک.. Turkish coffee", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a16afc1eece3d7626360" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T07:22:59.520Z" + }, + "updated_at": { + "$date": "2025-12-27T09:54:59.448Z" + }, + "__v": 0, + "active": true, + "image": "food_1715711043900.png" +}, +{ + "_id": { + "$oid": "61b1aef5fc1eece3d76265cd" + }, + "price": 1600000, + "stock": 0, + "static_discount": 0, + "name": "شکلات داغ .. Hot Chocolate", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a16afc1eece3d7626360" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-09T07:23:33.390Z" + }, + "updated_at": { + "$date": "2025-12-27T09:54:38.288Z" + }, + "__v": 0, + "active": true, + "image": "food_1715711005802.png" +}, +{ + "_id": { + "$oid": "61b5d866fc1eece3d76267b7" + }, + "price": 1950000, + "stock": 0, + "static_discount": 0, + "name": "اسموتی استوایی tropical smoothie ", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1befc1eece3d7626390" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-12T11:09:26.614Z" + }, + "updated_at": { + "$date": "2025-09-29T10:57:45.111Z" + }, + "__v": 0, + "active": true, + "image": "food_1715855939026.png" +}, +{ + "_id": { + "$oid": "61b5d882fc1eece3d76267c9" + }, + "price": 1800000, + "stock": 0, + "static_discount": 0, + "name": " اسموتی انبه mango smoothie ", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1befc1eece3d7626390" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-12T11:09:54.391Z" + }, + "updated_at": { + "$date": "2025-09-29T10:57:15.223Z" + }, + "__v": 0, + "active": true, + "image": "food_1715855856058.png" +}, +{ + "_id": { + "$oid": "61b5d899fc1eece3d76267d6" + }, + "price": 1500000, + "stock": 0, + "static_discount": 0, + "name": "اسموتی اپلایم apple & lime smoothie ", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1befc1eece3d7626390" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-12T11:10:17.925Z" + }, + "updated_at": { + "$date": "2025-09-29T10:56:46.476Z" + }, + "__v": 0, + "active": true, + "image": "food_1715855800832.png" +}, +{ + "_id": { + "$oid": "61b5d904fc1eece3d76267f0" + }, + "price": 1600000, + "stock": 0, + "static_discount": 0, + "name": "نوتلا شیک nutella miklshake", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1befc1eece3d7626390" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-12T11:12:04.452Z" + }, + "updated_at": { + "$date": "2025-09-29T10:56:00.331Z" + }, + "__v": 0, + "active": true, + "image": "food_1715855573768.png" +}, +{ + "_id": { + "$oid": "61b5d922fc1eece3d76267fd" + }, + "price": 1500000, + "stock": 0, + "static_discount": 0, + "name": "پینات شیک peanut milkshake", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1befc1eece3d7626390" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-12T11:12:34.855Z" + }, + "updated_at": { + "$date": "2025-09-29T10:55:41.790Z" + }, + "__v": 0, + "active": true, + "image": "food_1715855464156.png" +}, +{ + "_id": { + "$oid": "61b5d982fc1eece3d7626824" + }, + "price": 1300000, + "stock": 0, + "static_discount": 0, + "name": "شوکو شیک chocolate milkshake", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1befc1eece3d7626390" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-12T11:14:10.861Z" + }, + "updated_at": { + "$date": "2025-09-29T10:55:10.687Z" + }, + "__v": 0, + "active": true, + "image": "food_1715855404611.png" +}, +{ + "_id": { + "$oid": "61b5d9d8fc1eece3d762683f" + }, + "price": 1830000, + "stock": 0, + "static_discount": 0, + "name": " آفوگاتو.. Affogato", + "description": "بستنی/اسپرسو ", + "short_description": "", + "category": { + "$oid": "61b1a16afc1eece3d7626360" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-12T11:15:36.541Z" + }, + "updated_at": { + "$date": "2025-12-27T09:52:27.127Z" + }, + "__v": 0, + "active": true, + "image": "food_1715710983514.png" +}, +{ + "_id": { + "$oid": "61b5da7bfc1eece3d7626891" + }, + "price": 2050000, + "stock": 0, + "static_discount": 0, + "name": "وافل نوتلا waffle nutella", + "description": "وافل/بستنی/دورچین میوه ایی روز", + "short_description": "", + "category": { + "$oid": "61b1a1e0fc1eece3d762639b" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2021-12-12T11:18:19.852Z" + }, + "updated_at": { + "$date": "2024-05-17T13:23:19.722Z" + }, + "__v": 0, + "active": true, + "image": "food_1715807218334.png" +}, +{ + "_id": { + "$oid": "61d2b9b5513bb64bd71e9ccb" + }, + "price": 100000, + "stock": 0, + "static_discount": 0, + "name": "اسپرسو سینگل", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 1, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T08:54:13.897Z" + }, + "updated_at": { + "$date": "2022-01-03T08:54:13.897Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bd12513bb64bd71e9cf0" + }, + "price": 120000, + "stock": 0, + "static_discount": 0, + "name": "اسپرسو عربیکا", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 2, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:08:34.249Z" + }, + "updated_at": { + "$date": "2022-01-03T09:08:34.249Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61d2bd33513bb64bd71e9cfd" + }, + "price": 140000, + "stock": 0, + "static_discount": 0, + "name": "دوپیو", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 3, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:09:07.080Z" + }, + "updated_at": { + "$date": "2022-01-03T09:09:07.080Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bd52513bb64bd71e9d0a" + }, + "price": 110000, + "stock": 0, + "static_discount": 0, + "name": "آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 4, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:09:38.171Z" + }, + "updated_at": { + "$date": "2022-01-03T09:09:38.171Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bd6f513bb64bd71e9d17" + }, + "price": 170000, + "stock": 0, + "static_discount": 0, + "name": "کافه لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 5, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:10:07.128Z" + }, + "updated_at": { + "$date": "2022-01-03T09:10:07.128Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bd89513bb64bd71e9d24" + }, + "price": 150000, + "stock": 0, + "static_discount": 0, + "name": "کاپوچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 6, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:10:33.588Z" + }, + "updated_at": { + "$date": "2022-01-03T09:10:33.588Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bdae513bb64bd71e9d31" + }, + "price": 180000, + "stock": 0, + "static_discount": 0, + "name": "موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 7, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:11:10.460Z" + }, + "updated_at": { + "$date": "2022-01-03T09:11:10.460Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2be17513bb64bd71e9d4d" + }, + "price": 170000, + "stock": 0, + "static_discount": 0, + "name": "دوپیو عربیکا", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 8, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:12:55.416Z" + }, + "updated_at": { + "$date": "2022-01-03T09:12:55.416Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2be5d513bb64bd71e9d5c" + }, + "price": 150000, + "stock": 0, + "static_discount": 0, + "name": "آفاگاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 9, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:14:05.810Z" + }, + "updated_at": { + "$date": "2022-01-03T09:14:05.810Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2be7b513bb64bd71e9d69" + }, + "price": 140000, + "stock": 0, + "static_discount": 0, + "name": "اسپرسو رومانو ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 10, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:14:35.066Z" + }, + "updated_at": { + "$date": "2022-01-03T09:14:35.066Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2beb567a7c86145ed716d" + }, + "price": 140000, + "stock": 0, + "static_discount": 0, + "name": "آیس کافی", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 11, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:15:33.421Z" + }, + "updated_at": { + "$date": "2022-01-03T09:15:33.421Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bed267a7c86145ed7185" + }, + "price": 170000, + "stock": 0, + "static_discount": 0, + "name": "آیس لاته ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 12, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:16:02.768Z" + }, + "updated_at": { + "$date": "2022-01-03T09:16:02.768Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2beec67a7c86145ed719b" + }, + "price": 180000, + "stock": 0, + "static_discount": 0, + "name": "آیس موکا ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 13, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:16:28.870Z" + }, + "updated_at": { + "$date": "2022-01-03T09:16:28.870Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bf0b67a7c86145ed71b2" + }, + "price": 150000, + "stock": 0, + "static_discount": 0, + "name": "فرنچ پرس ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 14, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:16:59.494Z" + }, + "updated_at": { + "$date": "2022-01-03T09:16:59.494Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bf2c5c48ecb13a43f28a" + }, + "price": 120000, + "stock": 0, + "static_discount": 0, + "name": "ترکیش کافی", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 15, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:17:32.260Z" + }, + "updated_at": { + "$date": "2022-01-03T09:17:32.260Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bf455c48ecb13a43f2a6" + }, + "price": 140000, + "stock": 0, + "static_discount": 0, + "name": "کن پانا ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 16, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:17:57.781Z" + }, + "updated_at": { + "$date": "2022-01-03T09:17:57.781Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bf645c48ecb13a43f2c2" + }, + "price": 200000, + "stock": 0, + "static_discount": 0, + "name": "قهوه دمی", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 17, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:18:28.724Z" + }, + "updated_at": { + "$date": "2022-01-03T09:18:28.724Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bf825c48ecb13a43f2d7" + }, + "price": 200000, + "stock": 0, + "static_discount": 0, + "name": "کلد برو", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 18, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:18:58.220Z" + }, + "updated_at": { + "$date": "2022-01-03T09:18:58.220Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bf9e5c48ecb13a43f2eb" + }, + "price": 170000, + "stock": 0, + "static_discount": 0, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 19, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:19:26.851Z" + }, + "updated_at": { + "$date": "2022-01-03T09:19:26.851Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bfbe5c48ecb13a43f2ff" + }, + "price": 170000, + "stock": 0, + "static_discount": 0, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 20, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:19:58.711Z" + }, + "updated_at": { + "$date": "2022-01-03T09:19:58.711Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bfde5c48ecb13a43f317" + }, + "price": 140000, + "stock": 0, + "static_discount": 0, + "name": "شیر کاکائو", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 21, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:20:30.889Z" + }, + "updated_at": { + "$date": "2022-01-03T09:20:30.889Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2bfff5c48ecb13a43f32e" + }, + "price": 160000, + "stock": 0, + "static_discount": 0, + "name": "شیر نسکافه", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 22, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:21:03.601Z" + }, + "updated_at": { + "$date": "2022-01-03T09:21:03.601Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c0175c48ecb13a43f340" + }, + "price": 160000, + "stock": 0, + "static_discount": 0, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 23, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:21:27.757Z" + }, + "updated_at": { + "$date": "2022-01-03T09:21:27.757Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c0305c48ecb13a43f352" + }, + "price": 140000, + "stock": 0, + "static_discount": 0, + "name": "شیر عسل", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 24, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:21:52.998Z" + }, + "updated_at": { + "$date": "2022-01-03T09:21:52.998Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c0745c48ecb13a43f37a" + }, + "price": 170000, + "stock": 0, + "static_discount": 0, + "name": "رپنیک چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2b988513bb64bd71e9cb2" + }, + "index": 25, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:23:00.959Z" + }, + "updated_at": { + "$date": "2022-01-03T09:23:00.959Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c0e05c48ecb13a43f3c1" + }, + "price": 300000, + "stock": 0, + "static_discount": 0, + "name": "شیک نوتلا ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c0ae5c48ecb13a43f39f" + }, + "index": 1, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:24:48.484Z" + }, + "updated_at": { + "$date": "2022-01-03T09:24:48.484Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c1015c48ecb13a43f3da" + }, + "price": 250000, + "stock": 0, + "static_discount": 0, + "name": "شیک موز ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c0ae5c48ecb13a43f39f" + }, + "index": 2, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:25:21.218Z" + }, + "updated_at": { + "$date": "2022-01-03T09:25:21.218Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c1245c48ecb13a43f3f7" + }, + "price": 250000, + "stock": 0, + "static_discount": 0, + "name": "شیک توت فرنگی", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c0ae5c48ecb13a43f39f" + }, + "index": 3, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:25:56.180Z" + }, + "updated_at": { + "$date": "2022-01-03T09:25:56.180Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c14b5c48ecb13a43f412" + }, + "price": 250000, + "stock": 0, + "static_discount": 0, + "name": "شیک کاپوچینو ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c0ae5c48ecb13a43f39f" + }, + "index": 4, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:26:35.490Z" + }, + "updated_at": { + "$date": "2022-01-03T09:26:35.490Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c1685c48ecb13a43f42a" + }, + "price": 300000, + "stock": 0, + "static_discount": 0, + "name": "شیک بادام زمینی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c0ae5c48ecb13a43f39f" + }, + "index": 5, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:27:04.814Z" + }, + "updated_at": { + "$date": "2022-01-03T09:27:04.814Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c1845c48ecb13a43f441" + }, + "price": 250000, + "stock": 0, + "static_discount": 0, + "name": "شیک انبه ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c0ae5c48ecb13a43f39f" + }, + "index": 6, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:27:32.660Z" + }, + "updated_at": { + "$date": "2022-01-03T09:27:32.660Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c1a65c48ecb13a43f460" + }, + "price": 300000, + "stock": 0, + "static_discount": 0, + "name": "شیک اسپرسو ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c0ae5c48ecb13a43f39f" + }, + "index": 7, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:28:06.748Z" + }, + "updated_at": { + "$date": "2022-01-03T09:28:06.748Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c1c25c48ecb13a43f47c" + }, + "price": 250000, + "stock": 0, + "static_discount": 0, + "name": "شیک شکلات ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c0ae5c48ecb13a43f39f" + }, + "index": 8, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:28:34.673Z" + }, + "updated_at": { + "$date": "2022-01-03T09:28:34.673Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c2075c48ecb13a43f4b9" + }, + "price": 300000, + "stock": 0, + "static_discount": 0, + "name": "کیک بستنی", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c1e85c48ecb13a43f49e" + }, + "index": 1, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:29:43.688Z" + }, + "updated_at": { + "$date": "2022-01-03T09:29:43.688Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c2255c48ecb13a43f4d4" + }, + "price": 140000, + "stock": 0, + "static_discount": 0, + "name": "کیک شکلاتی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c1e85c48ecb13a43f49e" + }, + "index": 2, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:30:13.459Z" + }, + "updated_at": { + "$date": "2022-01-03T09:30:13.459Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c2415c48ecb13a43f4eb" + }, + "price": 150000, + "stock": 0, + "static_discount": 0, + "name": "کیک موز گردو ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c1e85c48ecb13a43f49e" + }, + "index": 3, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:30:41.186Z" + }, + "updated_at": { + "$date": "2022-01-03T09:30:41.186Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c2895c48ecb13a43f525" + }, + "price": 180000, + "stock": 0, + "static_discount": 0, + "name": "شربت نعنا", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c25e5c48ecb13a43f506" + }, + "index": 1, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:31:53.528Z" + }, + "updated_at": { + "$date": "2022-01-03T09:31:53.528Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c2aa5c48ecb13a43f53d" + }, + "price": 180000, + "stock": 0, + "static_discount": 0, + "name": "شربت بیدمشک ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c25e5c48ecb13a43f506" + }, + "index": 2, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:32:26.018Z" + }, + "updated_at": { + "$date": "2022-01-03T09:32:26.018Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c2c95c48ecb13a43f551" + }, + "price": 180000, + "stock": 0, + "static_discount": 0, + "name": "شربت زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c25e5c48ecb13a43f506" + }, + "index": 3, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:32:57.298Z" + }, + "updated_at": { + "$date": "2022-01-03T09:32:57.298Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c2ec5c48ecb13a43f564" + }, + "price": 200000, + "stock": 0, + "static_discount": 0, + "name": "فلامینگو", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c25e5c48ecb13a43f506" + }, + "index": 4, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:33:32.691Z" + }, + "updated_at": { + "$date": "2022-01-03T09:33:32.691Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c3055c48ecb13a43f576" + }, + "price": 200000, + "stock": 0, + "static_discount": 0, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c25e5c48ecb13a43f506" + }, + "index": 5, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:33:57.938Z" + }, + "updated_at": { + "$date": "2022-01-03T09:33:57.938Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c3255c48ecb13a43f589" + }, + "price": 200000, + "stock": 0, + "static_discount": 0, + "name": "پاستیلی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c25e5c48ecb13a43f506" + }, + "index": 6, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:34:29.041Z" + }, + "updated_at": { + "$date": "2022-01-03T09:34:29.041Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c3465c48ecb13a43f59c" + }, + "price": 20000, + "stock": 0, + "static_discount": 0, + "name": "کرن لاین", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c25e5c48ecb13a43f506" + }, + "index": 7, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:35:02.577Z" + }, + "updated_at": { + "$date": "2022-01-03T09:35:02.577Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c37b5c48ecb13a43f5c6" + }, + "price": 150000, + "stock": 0, + "static_discount": 0, + "name": "آرامش", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 1, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:35:55.761Z" + }, + "updated_at": { + "$date": "2022-01-03T09:35:55.761Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c3945c48ecb13a43f5d7" + }, + "price": 150000, + "stock": 0, + "static_discount": 0, + "name": "ژالان", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 2, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:36:20.180Z" + }, + "updated_at": { + "$date": "2022-01-03T09:36:20.180Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c3b65c48ecb13a43f5eb" + }, + "price": 220000, + "stock": 0, + "static_discount": 0, + "name": "میکس بری", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 3, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:36:54.556Z" + }, + "updated_at": { + "$date": "2022-01-03T09:36:54.556Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c3d45c48ecb13a43f5fd" + }, + "price": 220000, + "stock": 0, + "static_discount": 0, + "name": "آفرینش", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 4, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:37:24.088Z" + }, + "updated_at": { + "$date": "2022-01-03T09:37:24.088Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c3ee5c48ecb13a43f60f" + }, + "price": 150000, + "stock": 0, + "static_discount": 0, + "name": "رویا", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 5, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:37:50.818Z" + }, + "updated_at": { + "$date": "2022-01-03T09:37:50.818Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c4075c48ecb13a43f621" + }, + "price": 200000, + "stock": 0, + "static_discount": 0, + "name": "شهنوش", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 6, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:38:15.127Z" + }, + "updated_at": { + "$date": "2022-01-03T09:38:15.127Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c4235c48ecb13a43f633" + }, + "price": 150000, + "stock": 0, + "static_discount": 0, + "name": "پرسیکا", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 7, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:38:43.578Z" + }, + "updated_at": { + "$date": "2022-01-03T09:38:43.578Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c43f5c48ecb13a43f645" + }, + "price": 200000, + "stock": 0, + "static_discount": 0, + "name": "لمونکس", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 8, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:39:11.090Z" + }, + "updated_at": { + "$date": "2022-01-03T09:39:11.090Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c45f5c48ecb13a43f658" + }, + "price": 200000, + "stock": 0, + "static_discount": 0, + "name": "آنیل", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 9, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:39:43.766Z" + }, + "updated_at": { + "$date": "2022-01-03T09:39:43.766Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c47e5c48ecb13a43f66b" + }, + "price": 220000, + "stock": 0, + "static_discount": 0, + "name": "دمنوش سال", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 10, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:40:14.344Z" + }, + "updated_at": { + "$date": "2022-01-03T09:40:14.344Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c4a05c48ecb13a43f67e" + }, + "price": 220000, + "stock": 0, + "static_discount": 0, + "name": "دمنوش هارمونی", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 11, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:40:48.517Z" + }, + "updated_at": { + "$date": "2022-01-03T09:40:48.517Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c4bb5c48ecb13a43f690" + }, + "price": 220000, + "stock": 0, + "static_discount": 0, + "name": "دمنوش پراگ ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 12, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:41:15.644Z" + }, + "updated_at": { + "$date": "2022-01-03T09:41:15.644Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c4db5c48ecb13a43f6a3" + }, + "price": 150000, + "stock": 0, + "static_discount": 0, + "name": "چای پوئر", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 13, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:41:47.240Z" + }, + "updated_at": { + "$date": "2022-01-03T09:41:47.240Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c4f85c48ecb13a43f6b6" + }, + "price": 120000, + "stock": 0, + "static_discount": 0, + "name": "چای سبز", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 14, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:42:16.440Z" + }, + "updated_at": { + "$date": "2022-01-03T09:42:16.440Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c5125c48ecb13a43f6c7" + }, + "price": 120000, + "stock": 0, + "static_discount": 0, + "name": "چای دارچین ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 15, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:42:42.690Z" + }, + "updated_at": { + "$date": "2022-01-03T09:42:42.690Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c5455c48ecb13a43f6de" + }, + "price": 120000, + "stock": 0, + "static_discount": 0, + "name": "چای به لیمو ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 16, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:43:33.096Z" + }, + "updated_at": { + "$date": "2022-01-03T09:43:33.096Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c55e5c48ecb13a43f6f0" + }, + "price": 120000, + "stock": 0, + "static_discount": 0, + "name": "چای زعفران ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 17, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:43:58.759Z" + }, + "updated_at": { + "$date": "2022-01-03T09:43:58.759Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c5805c48ecb13a43f703" + }, + "price": 150000, + "stock": 0, + "static_discount": 0, + "name": "چای مروارید چینی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 18, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:44:32.818Z" + }, + "updated_at": { + "$date": "2022-01-03T09:44:32.818Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d2c5a45c48ecb13a43f716" + }, + "price": 120000, + "stock": 0, + "static_discount": 0, + "name": "چای بلومینگ ", + "description": "", + "short_description": "", + "category": { + "$oid": "61d2c35d5c48ecb13a43f5b0" + }, + "index": 19, + "storeId": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "created_at": { + "$date": "2022-01-03T09:45:08.536Z" + }, + "updated_at": { + "$date": "2022-01-03T09:45:08.536Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61d5559dcbd2de185c5f6c9a" + }, + "price": 100000, + "stock": 0, + "static_discount": 0, + "name": "test", + "description": "adssad", + "short_description": "", + "category": { + "$oid": "61d5519955249f031c7e5d1b" + }, + "index": 1, + "storeId": { + "$oid": "61d2ab31fa054b3d183cfd06" + }, + "created_at": { + "$date": "2022-01-05T08:23:57.571Z" + }, + "updated_at": { + "$date": "2022-01-05T08:23:57.571Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61ee42984a8d41eae80b0e6c" + }, + "price": 520000, + "stock": 0, + "static_discount": 0, + "name": "تست فرانسه ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d3d4a8d41eae80b0cf0" + }, + "index": 1, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:09:28.462Z" + }, + "updated_at": { + "$date": "2022-05-17T15:31:18.070Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee42bb4a8d41eae80b0e7b" + }, + "price": 480000, + "stock": 0, + "static_discount": 0, + "name": "املت فرانسه ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d3d4a8d41eae80b0cf0" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:10:03.709Z" + }, + "updated_at": { + "$date": "2022-05-17T15:30:27.727Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee42f54a8d41eae80b0e8b" + }, + "price": 860000, + "stock": 0, + "static_discount": 0, + "name": "بشقاب ایرانی", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d3d4a8d41eae80b0cf0" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:11:01.033Z" + }, + "updated_at": { + "$date": "2022-05-17T15:29:56.175Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee43084a8d41eae80b0e98" + }, + "price": 1150000, + "stock": 0, + "static_discount": 0, + "name": "بشقاب انگلیسی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d3d4a8d41eae80b0cf0" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:11:20.144Z" + }, + "updated_at": { + "$date": "2022-05-17T15:29:13.025Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee43214a8d41eae80b0eab" + }, + "price": 480000, + "stock": 0, + "static_discount": 0, + "name": "املت قارچ ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d3d4a8d41eae80b0cf0" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:11:45.151Z" + }, + "updated_at": { + "$date": "2022-05-17T15:28:12.338Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee43324a8d41eae80b0eb8" + }, + "price": 430000, + "stock": 0, + "static_discount": 0, + "name": "املت ایرانی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d3d4a8d41eae80b0cf0" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:12:02.180Z" + }, + "updated_at": { + "$date": "2022-05-17T15:27:34.519Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee44614a8d41eae80b0f50" + }, + "price": 720000, + "stock": 0, + "static_discount": 0, + "name": "پاستا پنه چیکن آلفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3dcb4a8d41eae80b0d21" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:17:05.324Z" + }, + "updated_at": { + "$date": "2022-05-09T13:44:37.442Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee449f4a8d41eae80b0f73" + }, + "price": 820000, + "stock": 0, + "static_discount": 0, + "name": "پاستا پنه آلفردو با فیله گوساله ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3dcb4a8d41eae80b0d21" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:18:07.231Z" + }, + "updated_at": { + "$date": "2022-05-09T13:57:27.623Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee44b44a8d41eae80b0f80" + }, + "price": 750000, + "stock": 0, + "static_discount": 0, + "name": "برگر کلاسیک ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3dcb4a8d41eae80b0d21" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:18:28.161Z" + }, + "updated_at": { + "$date": "2022-05-09T14:01:02.842Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee44c64a8d41eae80b0f8d" + }, + "price": 830000, + "stock": 0, + "static_discount": 0, + "name": "چیز برگر ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3dcb4a8d41eae80b0d21" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:18:46.113Z" + }, + "updated_at": { + "$date": "2022-05-09T14:33:20.417Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee44d84a8d41eae80b0f9a" + }, + "price": 1180000, + "stock": 0, + "static_discount": 0, + "name": "دابل چیز برگر ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3dcb4a8d41eae80b0d21" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:19:04.290Z" + }, + "updated_at": { + "$date": "2022-05-09T14:40:03.284Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee44e74a8d41eae80b0fa7" + }, + "price": 990000, + "stock": 0, + "static_discount": 0, + "name": "چوریتسو برگر ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3dcb4a8d41eae80b0d21" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:19:19.610Z" + }, + "updated_at": { + "$date": "2022-05-09T14:44:10.229Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee44f84a8d41eae80b0fb4" + }, + "price": 870000, + "stock": 0, + "static_discount": 0, + "name": "برگر با سس قارچ ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3dcb4a8d41eae80b0d21" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:19:36.364Z" + }, + "updated_at": { + "$date": "2022-05-09T14:45:56.854Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee45234a8d41eae80b0fce" + }, + "price": 1280000, + "stock": 0, + "static_discount": 0, + "name": "بشقاب استیک گوساله", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3dcb4a8d41eae80b0d21" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:20:19.304Z" + }, + "updated_at": { + "$date": "2022-01-24T06:20:19.304Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee45324a8d41eae80b0fdb" + }, + "price": 580000, + "stock": 0, + "static_discount": 0, + "name": "بشقاب سبزیجات ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3db44a8d41eae80b0d16" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:20:34.381Z" + }, + "updated_at": { + "$date": "2022-05-09T13:42:51.327Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee45e44a8d41eae80b1063" + }, + "price": 430000, + "stock": 0, + "static_discount": 0, + "name": "جینجر لایم ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:23:32.164Z" + }, + "updated_at": { + "$date": "2022-06-22T16:50:36.803Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee45f64a8d41eae80b1070" + }, + "price": 380000, + "stock": 0, + "static_discount": 0, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:23:50.644Z" + }, + "updated_at": { + "$date": "2022-06-22T19:08:27.924Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee460f4a8d41eae80b107d" + }, + "price": 450000, + "stock": 0, + "static_discount": 0, + "name": "رِد موهیتو ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:24:15.101Z" + }, + "updated_at": { + "$date": "2022-06-22T16:55:07.629Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee46204a8d41eae80b108a" + }, + "price": 380000, + "stock": 0, + "static_discount": 0, + "name": "لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:24:32.283Z" + }, + "updated_at": { + "$date": "2022-06-22T19:09:02.629Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee46404a8d41eae80b1099" + }, + "price": 420000, + "stock": 0, + "static_discount": 0, + "name": "خاکشیر بهارنارنج ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:25:04.640Z" + }, + "updated_at": { + "$date": "2022-06-22T16:59:21.991Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee46524a8d41eae80b10a6" + }, + "price": 460000, + "stock": 0, + "static_discount": 0, + "name": "زعفران آلوئه ورا ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:25:22.834Z" + }, + "updated_at": { + "$date": "2022-06-22T17:02:22.670Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee46624a8d41eae80b10b3" + }, + "price": 450000, + "stock": 0, + "static_discount": 0, + "name": "لیمو زعفران ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:25:38.400Z" + }, + "updated_at": { + "$date": "2022-06-22T17:03:16.937Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee46754a8d41eae80b10c0" + }, + "price": 420000, + "stock": 0, + "static_discount": 0, + "name": "بیدمشک نسترن ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:25:57.929Z" + }, + "updated_at": { + "$date": "2022-06-22T19:10:34.998Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee46894a8d41eae80b10cd" + }, + "price": 490000, + "stock": 0, + "static_discount": 0, + "name": "رز چینی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:26:17.361Z" + }, + "updated_at": { + "$date": "2022-06-22T17:06:45.751Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee46a14a8d41eae80b10da" + }, + "price": 400000, + "stock": 0, + "static_discount": 0, + "name": "اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:26:41.771Z" + }, + "updated_at": { + "$date": "2022-05-16T14:44:18.990Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee46b14a8d41eae80b10e7" + }, + "price": 430000, + "stock": 0, + "static_discount": 0, + "name": "موز کارامل ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:26:57.061Z" + }, + "updated_at": { + "$date": "2022-05-16T14:43:35.346Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee46bf4a8d41eae80b10f4" + }, + "price": 460000, + "stock": 0, + "static_discount": 0, + "name": "موز شکلات ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:27:11.891Z" + }, + "updated_at": { + "$date": "2022-05-16T14:42:03.862Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee46cc4a8d41eae80b1101" + }, + "price": 430000, + "stock": 0, + "static_discount": 0, + "name": "شکلات فندق ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:27:24.894Z" + }, + "updated_at": { + "$date": "2022-05-16T14:42:57.911Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee46db4a8d41eae80b110e" + }, + "price": 520000, + "stock": 0, + "static_discount": 0, + "name": "پسته زعفران اعلا ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:27:39.701Z" + }, + "updated_at": { + "$date": "2022-05-16T14:40:37.167Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47004a8d41eae80b1128" + }, + "price": 600000, + "stock": 0, + "static_discount": 0, + "name": "کیت کت ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:28:16.944Z" + }, + "updated_at": { + "$date": "2022-05-24T13:42:45.238Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47164a8d41eae80b1135" + }, + "price": 480000, + "stock": 0, + "static_discount": 0, + "name": "اوریو", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:28:38.880Z" + }, + "updated_at": { + "$date": "2022-05-16T14:35:24.229Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47274a8d41eae80b1142" + }, + "price": 460000, + "stock": 0, + "static_discount": 0, + "name": "نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:28:55.854Z" + }, + "updated_at": { + "$date": "2022-05-16T14:34:43.861Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47364a8d41eae80b114f" + }, + "price": 530000, + "stock": 0, + "static_discount": 0, + "name": "لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:29:10.522Z" + }, + "updated_at": { + "$date": "2022-05-16T14:32:31.346Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47464a8d41eae80b115c" + }, + "price": 490000, + "stock": 0, + "static_discount": 0, + "name": "کره بادام زمینی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:29:26.254Z" + }, + "updated_at": { + "$date": "2022-05-16T14:24:23.838Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee475b4a8d41eae80b116b" + }, + "price": 600000, + "stock": 0, + "static_discount": 0, + "name": "ویژه (نوتلا،کره بادام زمینی) ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e164a8d41eae80b0d44" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:29:47.793Z" + }, + "updated_at": { + "$date": "2022-05-16T14:18:18.461Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47774a8d41eae80b1178" + }, + "price": 310000, + "stock": 0, + "static_discount": 0, + "name": "اسپرسو ", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:30:15.731Z" + }, + "updated_at": { + "$date": "2022-06-22T16:31:49.689Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47904a8d41eae80b1187" + }, + "price": 290000, + "stock": 0, + "static_discount": 0, + "name": "اسپرسو ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:30:40.118Z" + }, + "updated_at": { + "$date": "2022-06-22T16:31:08.384Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47a14a8d41eae80b1194" + }, + "price": 270000, + "stock": 0, + "static_discount": 0, + "name": "اسپرسو ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:30:57.373Z" + }, + "updated_at": { + "$date": "2022-06-22T16:28:35.022Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47b54a8d41eae80b11a1" + }, + "price": 320000, + "stock": 0, + "static_discount": 0, + "name": "امریکانو", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:31:17.662Z" + }, + "updated_at": { + "$date": "2022-06-22T16:41:07.906Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47ca4a8d41eae80b11b0" + }, + "price": 300000, + "stock": 0, + "static_discount": 0, + "name": "امریکانو ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:31:38.294Z" + }, + "updated_at": { + "$date": "2022-06-22T16:34:21.980Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47de4a8d41eae80b11bf" + }, + "price": 280000, + "stock": 0, + "static_discount": 0, + "name": "امریکانو ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:31:58.394Z" + }, + "updated_at": { + "$date": "2022-06-22T16:33:48.232Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee47f44a8d41eae80b11cc" + }, + "price": 260000, + "stock": 0, + "static_discount": 0, + "name": "کُن هیلو", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:32:20.936Z" + }, + "updated_at": { + "$date": "2022-01-24T06:32:20.936Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee480b4a8d41eae80b11db" + }, + "price": 250000, + "stock": 0, + "static_discount": 0, + "name": "کُن هیلو ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:32:43.049Z" + }, + "updated_at": { + "$date": "2022-01-24T06:32:43.049Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee48214a8d41eae80b11e8" + }, + "price": 240000, + "stock": 0, + "static_discount": 0, + "name": "کُن هیلو ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:33:05.364Z" + }, + "updated_at": { + "$date": "2022-01-24T06:33:05.364Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee48454a8d41eae80b11f5" + }, + "price": 340000, + "stock": 0, + "static_discount": 0, + "name": "رومانو", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:33:41.970Z" + }, + "updated_at": { + "$date": "2022-06-22T16:46:08.948Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee48554a8d41eae80b1202" + }, + "price": 320000, + "stock": 0, + "static_discount": 0, + "name": "رومانو ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:33:57.971Z" + }, + "updated_at": { + "$date": "2022-06-22T16:46:56.667Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee486b4a8d41eae80b120f" + }, + "price": 310000, + "stock": 0, + "static_discount": 0, + "name": "رومانو ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:34:19.012Z" + }, + "updated_at": { + "$date": "2022-06-22T16:46:37.423Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee48854a8d41eae80b121c" + }, + "price": 330000, + "stock": 0, + "static_discount": 0, + "name": "کوبانو", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:34:45.689Z" + }, + "updated_at": { + "$date": "2022-06-22T19:46:11.144Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee48964a8d41eae80b1229" + }, + "price": 310000, + "stock": 0, + "static_discount": 0, + "name": "کوبانو ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:35:02.205Z" + }, + "updated_at": { + "$date": "2022-06-22T19:33:48.890Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee48ec4a8d41eae80b1247" + }, + "price": 300000, + "stock": 0, + "static_discount": 0, + "name": "کوبانو ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:36:28.813Z" + }, + "updated_at": { + "$date": "2022-06-22T19:33:19.999Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee49124a8d41eae80b1254" + }, + "price": 500000, + "stock": 0, + "static_discount": 0, + "name": "ترونگ کافی ", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:37:06.032Z" + }, + "updated_at": { + "$date": "2022-06-23T15:40:05.006Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee49274a8d41eae80b1261" + }, + "price": 490000, + "stock": 0, + "static_discount": 0, + "name": "ترونگ کافی ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:37:27.091Z" + }, + "updated_at": { + "$date": "2022-06-23T15:39:34.163Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee493a4a8d41eae80b126e" + }, + "price": 480000, + "stock": 0, + "static_discount": 0, + "name": "ترونگ کافی ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:37:46.183Z" + }, + "updated_at": { + "$date": "2022-06-23T15:39:18.190Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee495a4a8d41eae80b127b" + }, + "price": 260000, + "stock": 0, + "static_discount": 0, + "name": "کورتادو", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:38:18.663Z" + }, + "updated_at": { + "$date": "2022-01-24T06:38:18.663Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee496c4a8d41eae80b1288" + }, + "price": 250000, + "stock": 0, + "static_discount": 0, + "name": "کورتادو ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:38:36.153Z" + }, + "updated_at": { + "$date": "2022-01-24T06:38:36.153Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee49844a8d41eae80b1297" + }, + "price": 240000, + "stock": 0, + "static_discount": 0, + "name": "کورتادو ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:39:00.449Z" + }, + "updated_at": { + "$date": "2022-01-24T06:39:00.449Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee49a24a8d41eae80b12a4" + }, + "price": 380000, + "stock": 0, + "static_discount": 0, + "name": "ماکیاتو", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:39:30.283Z" + }, + "updated_at": { + "$date": "2022-09-04T14:25:08.349Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee49db4a8d41eae80b12be" + }, + "price": 370000, + "stock": 0, + "static_discount": 0, + "name": "ماکیاتو ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:40:27.433Z" + }, + "updated_at": { + "$date": "2022-09-04T14:24:22.140Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee49f94a8d41eae80b12cb" + }, + "price": 360000, + "stock": 0, + "static_discount": 0, + "name": "ماکیاتو ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:40:57.018Z" + }, + "updated_at": { + "$date": "2022-09-04T14:23:17.056Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4b364a8d41eae80b1396" + }, + "price": 420000, + "stock": 0, + "static_discount": 0, + "name": "موکاتلا", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:46:14.084Z" + }, + "updated_at": { + "$date": "2022-06-23T15:21:05.120Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4b474a8d41eae80b13a5" + }, + "price": 400000, + "stock": 0, + "static_discount": 0, + "name": "موکاتلا ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:46:31.244Z" + }, + "updated_at": { + "$date": "2022-06-23T15:20:31.479Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4b5d4a8d41eae80b13b2" + }, + "price": 390000, + "stock": 0, + "static_discount": 0, + "name": "موکاتلا ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:46:53.778Z" + }, + "updated_at": { + "$date": "2022-06-23T15:19:44.011Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4b774a8d41eae80b13bf" + }, + "price": 410000, + "stock": 0, + "static_discount": 0, + "name": "لاته ماکیاتو", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:47:19.338Z" + }, + "updated_at": { + "$date": "2022-06-22T18:00:29.712Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4b874a8d41eae80b13cc" + }, + "price": 390000, + "stock": 0, + "static_discount": 0, + "name": " لاته ماکیاتو ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:47:35.003Z" + }, + "updated_at": { + "$date": "2022-06-22T18:02:08.373Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4b9d4a8d41eae80b13d9" + }, + "price": 380000, + "stock": 0, + "static_discount": 0, + "name": "لاته ماکیاتو ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:47:57.262Z" + }, + "updated_at": { + "$date": "2022-06-22T17:58:12.133Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4bb44a8d41eae80b13e6" + }, + "price": 480000, + "stock": 0, + "static_discount": 0, + "name": "بیچیرین", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:48:20.202Z" + }, + "updated_at": { + "$date": "2022-06-23T15:26:09.511Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4bcc4a8d41eae80b13f5" + }, + "price": 470000, + "stock": 0, + "static_discount": 0, + "name": " بیچیرین", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:48:44.510Z" + }, + "updated_at": { + "$date": "2022-06-23T15:26:47.917Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4bdd4a8d41eae80b1402" + }, + "price": 460000, + "stock": 0, + "static_discount": 0, + "name": "بیچیرین ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:49:01.495Z" + }, + "updated_at": { + "$date": "2022-06-23T15:28:05.343Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4c0c4a8d41eae80b140f" + }, + "price": 420000, + "stock": 0, + "static_discount": 0, + "name": "اورجینال آفوگاتو ", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:49:48.432Z" + }, + "updated_at": { + "$date": "2022-06-22T19:03:21.760Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4c214a8d41eae80b141e" + }, + "price": 400000, + "stock": 0, + "static_discount": 0, + "name": " اورجینال آفوگاتو ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:50:09.352Z" + }, + "updated_at": { + "$date": "2022-06-22T18:47:35.429Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4c354a8d41eae80b142d" + }, + "price": 390000, + "stock": 0, + "static_discount": 0, + "name": "اورجینال آفوگاتو ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:50:29.620Z" + }, + "updated_at": { + "$date": "2022-06-22T18:47:02.221Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4c5a4a8d41eae80b143a" + }, + "price": 450000, + "stock": 0, + "static_discount": 0, + "name": "سفرون آفوگاتو ", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:51:06.354Z" + }, + "updated_at": { + "$date": "2022-06-22T19:24:21.373Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4c6d4a8d41eae80b1449" + }, + "price": 440000, + "stock": 0, + "static_discount": 0, + "name": "سفرون آفوگاتو ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:51:25.373Z" + }, + "updated_at": { + "$date": "2022-06-22T19:22:04.348Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4c7e4a8d41eae80b1458" + }, + "price": 430000, + "stock": 0, + "static_discount": 0, + "name": "سفرون آفوگاتو ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:51:42.641Z" + }, + "updated_at": { + "$date": "2022-06-22T19:21:29.004Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4c934a8d41eae80b1465" + }, + "price": 360000, + "stock": 0, + "static_discount": 0, + "name": "آیسد آمریکانو", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:52:03.407Z" + }, + "updated_at": { + "$date": "2022-06-22T19:20:54.423Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4ca94a8d41eae80b1474" + }, + "price": 340000, + "stock": 0, + "static_discount": 0, + "name": "آیسد آمریکانو ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:52:25.673Z" + }, + "updated_at": { + "$date": "2022-06-22T19:17:59.217Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4cba4a8d41eae80b1481" + }, + "price": 320000, + "stock": 0, + "static_discount": 0, + "name": "آیسد آمریکانو ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:52:42.095Z" + }, + "updated_at": { + "$date": "2022-06-22T19:16:39.317Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4cda4a8d41eae80b1499" + }, + "price": 400000, + "stock": 0, + "static_discount": 0, + "name": "اسپرسو تونیک ", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:53:14.482Z" + }, + "updated_at": { + "$date": "2022-06-22T19:32:43.720Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4ce94a8d41eae80b14a6" + }, + "price": 380000, + "stock": 0, + "static_discount": 0, + "name": "اسپرسو تونیک ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:53:29.122Z" + }, + "updated_at": { + "$date": "2022-06-22T19:28:16.352Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4d024a8d41eae80b14b7" + }, + "price": 360000, + "stock": 0, + "static_discount": 0, + "name": "اسپرسو تونیک ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:53:54.962Z" + }, + "updated_at": { + "$date": "2022-06-22T19:27:11.290Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4d154a8d41eae80b14c4" + }, + "price": 430000, + "stock": 0, + "static_discount": 0, + "name": "آیسد لاته", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:54:13.442Z" + }, + "updated_at": { + "$date": "2022-06-22T17:45:45.519Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4d284a8d41eae80b14d3" + }, + "price": 420000, + "stock": 0, + "static_discount": 0, + "name": "آیسد لاته ", + "description": "80%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:54:32.061Z" + }, + "updated_at": { + "$date": "2022-06-22T17:45:23.299Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4d3a4a8d41eae80b14e2" + }, + "price": 410000, + "stock": 0, + "static_discount": 0, + "name": "آیسد لاته ", + "description": "50%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:54:50.972Z" + }, + "updated_at": { + "$date": "2022-06-22T17:42:44.358Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4d534a8d41eae80b14ef" + }, + "price": 280000, + "stock": 0, + "static_discount": 0, + "name": "والتون", + "description": "100%", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:55:15.464Z" + }, + "updated_at": { + "$date": "2022-01-24T06:55:15.464Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4dc84a8d41eae80b151a" + }, + "price": 340000, + "stock": 0, + "static_discount": 0, + "name": "هات چاکلت کلاسیک ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:57:12.080Z" + }, + "updated_at": { + "$date": "2022-06-22T17:10:52.260Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4e534a8d41eae80b1539" + }, + "price": 400000, + "stock": 0, + "static_discount": 0, + "name": "هات چاکلت ویژه ( شکلات ریئل) ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:59:31.542Z" + }, + "updated_at": { + "$date": "2022-06-22T17:12:45.660Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4e614a8d41eae80b1546" + }, + "price": 280000, + "stock": 0, + "static_discount": 0, + "name": "وایت چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:59:45.394Z" + }, + "updated_at": { + "$date": "2022-02-02T16:04:29.690Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4e6e4a8d41eae80b1553" + }, + "price": 300000, + "stock": 0, + "static_discount": 0, + "name": "دارک چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T06:59:58.432Z" + }, + "updated_at": { + "$date": "2022-02-02T16:29:17.027Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4e7b4a8d41eae80b1560" + }, + "price": 300000, + "stock": 0, + "static_discount": 0, + "name": "افترایت چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:00:11.412Z" + }, + "updated_at": { + "$date": "2022-02-02T16:06:00.366Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4e934a8d41eae80b156d" + }, + "price": 360000, + "stock": 0, + "static_discount": 0, + "name": "هات فندقی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:00:35.737Z" + }, + "updated_at": { + "$date": "2022-06-22T19:10:58.262Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4ea24a8d41eae80b157a" + }, + "price": 450000, + "stock": 0, + "static_discount": 0, + "name": "ماچا لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:00:50.365Z" + }, + "updated_at": { + "$date": "2022-06-22T17:08:38.450Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4eb14a8d41eae80b1587" + }, + "price": 350000, + "stock": 0, + "static_discount": 0, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:01:05.172Z" + }, + "updated_at": { + "$date": "2022-06-22T17:08:17.457Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4ec14a8d41eae80b1594" + }, + "price": 400000, + "stock": 0, + "static_discount": 0, + "name": "ماسالا رژیمی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:01:21.845Z" + }, + "updated_at": { + "$date": "2022-06-22T15:08:15.314Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4ed24a8d41eae80b15a1" + }, + "price": 400000, + "stock": 0, + "static_discount": 0, + "name": "ماسالا چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:01:38.483Z" + }, + "updated_at": { + "$date": "2022-06-22T15:07:35.671Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4ee04a8d41eae80b15ae" + }, + "price": 360000, + "stock": 0, + "static_discount": 0, + "name": "سلپ ترکی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e6c4a8d41eae80b0d65" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:01:52.612Z" + }, + "updated_at": { + "$date": "2022-06-22T15:13:27.093Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4ef94a8d41eae80b15bb" + }, + "price": 250000, + "stock": 0, + "static_discount": 0, + "name": " کمر باریک (شارژ نا محدود ) به همراه کوکی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:02:17.532Z" + }, + "updated_at": { + "$date": "2022-01-24T07:02:17.532Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4f124a8d41eae80b15c8" + }, + "price": 300000, + "stock": 0, + "static_discount": 0, + "name": "مراکشی (شارژ رایگان )", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:02:42.831Z" + }, + "updated_at": { + "$date": "2022-06-22T15:12:09.573Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4f204a8d41eae80b15d5" + }, + "price": 250000, + "stock": 0, + "static_discount": 0, + "name": " سیاه هل ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:02:56.642Z" + }, + "updated_at": { + "$date": "2022-06-22T15:14:00.247Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4f324a8d41eae80b15e2" + }, + "price": 250000, + "stock": 0, + "static_discount": 0, + "name": "هل و دارچین ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:03:14.493Z" + }, + "updated_at": { + "$date": "2022-06-22T15:14:39.272Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4f4c4a8d41eae80b1602" + }, + "price": 300000, + "stock": 0, + "static_discount": 0, + "name": "ویژه", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:03:40.603Z" + }, + "updated_at": { + "$date": "2022-06-22T15:12:49.374Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4f5f4a8d41eae80b160f" + }, + "price": 300000, + "stock": 0, + "static_discount": 0, + "name": "لیمو عسل ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:03:59.379Z" + }, + "updated_at": { + "$date": "2022-06-22T15:15:18.269Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4f6e4a8d41eae80b161c" + }, + "price": 330000, + "stock": 0, + "static_discount": 0, + "name": "زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:04:14.164Z" + }, + "updated_at": { + "$date": "2022-06-22T15:16:19.372Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4f7c4a8d41eae80b1629" + }, + "price": 280000, + "stock": 0, + "static_discount": 0, + "name": " دودی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:04:28.674Z" + }, + "updated_at": { + "$date": "2022-06-22T15:16:53.823Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4f8d4a8d41eae80b1638" + }, + "price": 280000, + "stock": 0, + "static_discount": 0, + "name": "سبز و دارچین ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:04:45.394Z" + }, + "updated_at": { + "$date": "2022-06-22T15:17:25.300Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4f9c4a8d41eae80b1645" + }, + "price": 290000, + "stock": 0, + "static_discount": 0, + "name": "کوهی و لوندر ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:05:00.924Z" + }, + "updated_at": { + "$date": "2022-06-22T15:18:00.094Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4fbc4a8d41eae80b1652" + }, + "price": 360000, + "stock": 0, + "static_discount": 0, + "name": "آرامبخش", + "description": " (نا مناسب برای افراد با فشار خون پایین ،بانوان بارداری افراد دارای کم خونی)", + "short_description": "", + "category": { + "$oid": "61ee3f954a8d41eae80b0e1c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:05:32.022Z" + }, + "updated_at": { + "$date": "2022-09-04T16:16:49.918Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4fd94a8d41eae80b165f" + }, + "price": 340000, + "stock": 0, + "static_discount": 0, + "name": "گل گاوزبان", + "description": "(نا مناسب برای افراد با فشار خون پایین ،بانوان بارداری افراد دارای کم خونی)", + "short_description": "", + "category": { + "$oid": "61ee3f954a8d41eae80b0e1c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:06:01.224Z" + }, + "updated_at": { + "$date": "2022-09-04T16:17:27.861Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee4fed4a8d41eae80b166c" + }, + "price": 340000, + "stock": 0, + "static_discount": 0, + "name": "به لیمو بهار نارنج", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f954a8d41eae80b0e1c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:06:21.853Z" + }, + "updated_at": { + "$date": "2022-09-04T16:19:56.578Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee50954a8d41eae80b1679" + }, + "price": 380000, + "stock": 0, + "static_discount": 0, + "name": "ویژه ٱ کافه ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f954a8d41eae80b0e1c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:09:09.562Z" + }, + "updated_at": { + "$date": "2022-09-04T16:22:34.268Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee50ad4a8d41eae80b1686" + }, + "price": 380000, + "stock": 0, + "static_discount": 0, + "name": "پرتقال گل محمدی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f954a8d41eae80b0e1c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:09:33.470Z" + }, + "updated_at": { + "$date": "2022-09-04T16:23:21.868Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee50c44a8d41eae80b1693" + }, + "price": 360000, + "stock": 0, + "static_discount": 0, + "name": "سیب و به ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f954a8d41eae80b0e1c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:09:56.411Z" + }, + "updated_at": { + "$date": "2022-09-04T16:24:05.300Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee50da4a8d41eae80b16a0" + }, + "price": 360000, + "stock": 0, + "static_discount": 0, + "name": "سیب و دارچین ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f954a8d41eae80b0e1c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:10:18.598Z" + }, + "updated_at": { + "$date": "2022-09-04T16:26:37.696Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee50ef4a8d41eae80b16ad" + }, + "price": 370000, + "stock": 0, + "static_discount": 0, + "name": "سیب و وانیل ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f954a8d41eae80b0e1c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:10:39.410Z" + }, + "updated_at": { + "$date": "2022-09-04T16:27:59.474Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee510a4a8d41eae80b16ba" + }, + "price": 380000, + "stock": 0, + "static_discount": 0, + "name": "میکس بری", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f954a8d41eae80b0e1c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:11:06.669Z" + }, + "updated_at": { + "$date": "2022-09-04T16:27:06.885Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee51214a8d41eae80b16c7" + }, + "price": 350000, + "stock": 0, + "static_discount": 0, + "name": "ترک کلاسیک ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f9e4a8d41eae80b0e27" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:11:29.071Z" + }, + "updated_at": { + "$date": "2022-06-22T18:29:15.351Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee51314a8d41eae80b16d4" + }, + "price": 380000, + "stock": 0, + "static_discount": 0, + "name": "ترکیش وایت کافی ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f9e4a8d41eae80b0e27" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:11:45.610Z" + }, + "updated_at": { + "$date": "2022-06-22T18:28:49.909Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee51454a8d41eae80b16e1" + }, + "price": 390000, + "stock": 0, + "static_discount": 0, + "name": "ترکیش وایت کافی هل و دارچین ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f9e4a8d41eae80b0e27" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:12:05.713Z" + }, + "updated_at": { + "$date": "2022-06-22T18:28:18.751Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee51614a8d41eae80b16ee" + }, + "price": 400000, + "stock": 0, + "static_discount": 0, + "name": "ترکیش وایت کافی زعفران ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f9e4a8d41eae80b0e27" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:12:33.122Z" + }, + "updated_at": { + "$date": "2022-06-22T18:27:51.380Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee51734a8d41eae80b16fb" + }, + "price": 490000, + "stock": 0, + "static_discount": 0, + "name": "اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3fab4a8d41eae80b0e32" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:12:51.589Z" + }, + "updated_at": { + "$date": "2022-06-22T18:35:28.550Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee51864a8d41eae80b1708" + }, + "price": 400000, + "stock": 0, + "static_discount": 0, + "name": "های کافئین ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3fab4a8d41eae80b0e32" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:13:10.490Z" + }, + "updated_at": { + "$date": "2022-06-22T18:35:57.361Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee519b4a8d41eae80b1715" + }, + "price": 400000, + "stock": 0, + "static_discount": 0, + "name": "سوپر کافئین ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3fab4a8d41eae80b0e32" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:13:31.473Z" + }, + "updated_at": { + "$date": "2022-06-22T18:36:40.003Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee52174a8d41eae80b1722" + }, + "price": 460000, + "stock": 0, + "static_discount": 0, + "name": "اسپرسو +انرژی زا ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3fab4a8d41eae80b0e32" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:15:35.979Z" + }, + "updated_at": { + "$date": "2022-06-22T17:01:24.633Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee52294a8d41eae80b172f" + }, + "price": 450000, + "stock": 0, + "static_discount": 0, + "name": "کوکا+کلدبرو ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3fab4a8d41eae80b0e32" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:15:53.653Z" + }, + "updated_at": { + "$date": "2022-06-22T16:59:46.273Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee523b4a8d41eae80b173c" + }, + "price": 350000, + "stock": 0, + "static_discount": 0, + "name": "V_60", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3fbd4a8d41eae80b0e3d" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:16:11.670Z" + }, + "updated_at": { + "$date": "2022-01-24T07:16:11.670Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee524a4a8d41eae80b1749" + }, + "price": 330000, + "stock": 0, + "static_discount": 0, + "name": "ایروپرس", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3fbd4a8d41eae80b0e3d" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:16:26.804Z" + }, + "updated_at": { + "$date": "2022-01-24T07:16:26.804Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee525e4a8d41eae80b1756" + }, + "price": 330000, + "stock": 0, + "static_discount": 0, + "name": "کِمکس ۱کاپ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3fbd4a8d41eae80b0e3d" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:16:47.001Z" + }, + "updated_at": { + "$date": "2022-01-24T07:16:47.001Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee526e4a8d41eae80b1763" + }, + "price": 360000, + "stock": 0, + "static_discount": 0, + "name": "کِمکس ۳ کاپ ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3fbd4a8d41eae80b0e3d" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:17:02.712Z" + }, + "updated_at": { + "$date": "2022-01-24T07:17:02.712Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee52864a8d41eae80b1770" + }, + "price": 360000, + "stock": 0, + "static_discount": 0, + "name": "سایفون", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3fbd4a8d41eae80b0e3d" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:17:26.525Z" + }, + "updated_at": { + "$date": "2022-01-24T07:17:26.525Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee52994a8d41eae80b177d" + }, + "price": 50000, + "stock": 0, + "static_discount": 0, + "name": "سیروپ ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee40f54a8d41eae80b0e4a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:17:45.989Z" + }, + "updated_at": { + "$date": "2022-01-24T07:17:45.989Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee52a84a8d41eae80b178a" + }, + "price": 30000, + "stock": 0, + "static_discount": 0, + "name": "عسل ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee40f54a8d41eae80b0e4a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:18:00.842Z" + }, + "updated_at": { + "$date": "2022-01-24T07:18:00.842Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee52bc4a8d41eae80b1799" + }, + "price": 50000, + "stock": 0, + "static_discount": 0, + "name": "نوتلا ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee40f54a8d41eae80b0e4a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:18:20.079Z" + }, + "updated_at": { + "$date": "2022-01-24T07:18:20.079Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61ee52db4a8d41eae80b17b3" + }, + "price": 150000, + "stock": 0, + "static_discount": 0, + "name": "پنیر اضافه ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee40f54a8d41eae80b0e4a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-01-24T07:18:51.844Z" + }, + "updated_at": { + "$date": "2022-07-06T14:42:12.707Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61fa83e901319e8e5cfe82dd" + }, + "price": 60000, + "stock": 0, + "static_discount": 0, + "name": "کوکی شکلاتی", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3ddf4a8d41eae80b0d2c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T13:15:21.871Z" + }, + "updated_at": { + "$date": "2022-02-02T13:15:21.871Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61fa871b01319e8e5cfe8356" + }, + "price": 950000, + "stock": 0, + "static_discount": 0, + "name": "سالاد سزار گریل", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3db44a8d41eae80b0d16" + }, + "index": 3, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T13:28:59.677Z" + }, + "updated_at": { + "$date": "2022-06-10T13:33:43.502Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61fa882501319e8e5cfe837c" + }, + "price": 110000, + "stock": 0, + "static_discount": 0, + "name": "کوکا/فانتا", + "description": "", + "short_description": "", + "category": { + "$oid": "61fa87da01319e8e5cfe836f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T13:33:25.319Z" + }, + "updated_at": { + "$date": "2022-02-02T13:33:25.319Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61fa890901319e8e5cfe8397" + }, + "price": 110000, + "stock": 0, + "static_discount": 0, + "name": "اسپرایت", + "description": "", + "short_description": "", + "category": { + "$oid": "61fa87da01319e8e5cfe836f" + }, + "index": 2, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T13:37:13.086Z" + }, + "updated_at": { + "$date": "2022-02-02T13:37:13.086Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61fa896301319e8e5cfe83a1" + }, + "price": 120000, + "stock": 0, + "static_discount": 0, + "name": "دلستر(هلو/لیمو)", + "description": "", + "short_description": "", + "category": { + "$oid": "61fa87da01319e8e5cfe836f" + }, + "index": 4, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T13:38:43.830Z" + }, + "updated_at": { + "$date": "2022-02-02T13:38:43.830Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61fa899401319e8e5cfe83ab" + }, + "price": 60000, + "stock": 500, + "static_discount": 0, + "name": "آب معدنی", + "description": "", + "short_description": "", + "category": { + "$oid": "61fa87da01319e8e5cfe836f" + }, + "index": 5, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T13:39:32.117Z" + }, + "updated_at": { + "$date": "2022-05-17T15:18:11.247Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61fa96d119f66a77ced06b2a" + }, + "price": 390000, + "stock": 0, + "static_discount": 0, + "name": "لاته %100", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 7, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T14:36:01.111Z" + }, + "updated_at": { + "$date": "2022-06-22T15:02:17.851Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61fa96f319f66a77ced06b34" + }, + "price": 370000, + "stock": 0, + "static_discount": 0, + "name": "لاته %80", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 8, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T14:36:35.411Z" + }, + "updated_at": { + "$date": "2022-06-22T15:01:09.692Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61fa971319f66a77ced06b3e" + }, + "price": 360000, + "stock": 0, + "static_discount": 0, + "name": "لاته %50", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 9, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T14:37:07.519Z" + }, + "updated_at": { + "$date": "2022-06-22T14:57:40.621Z" + }, + "__v": 0, + "active": true +}, +{ + "_id": { + "$oid": "61fa9dcf95502c4192a405d4" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو%100", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 10, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T15:05:51.763Z" + }, + "updated_at": { + "$date": "2022-06-22T15:43:27.998Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61fa9df695502c4192a405df" + }, + "price": 360000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو%80", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 11, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T15:06:30.501Z" + }, + "updated_at": { + "$date": "2022-06-22T15:42:52.613Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61fa9e4995502c4192a405f6" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو%50", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 12, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T15:07:53.545Z" + }, + "updated_at": { + "$date": "2022-06-22T15:42:25.822Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61fa9ed995502c4192a4060e" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا %100", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 16, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T15:10:17.328Z" + }, + "updated_at": { + "$date": "2022-06-22T15:45:40.602Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61fa9fe11ee4b0270db496dd" + }, + "price": 390000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا%80", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 17, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T15:14:41.801Z" + }, + "updated_at": { + "$date": "2022-06-22T15:45:19.522Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61faa0161ee4b0270db496e9" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا%50", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 18, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T15:15:34.338Z" + }, + "updated_at": { + "$date": "2022-06-22T15:44:58.548Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61faa0ff1ee4b0270db49710" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته زفرون %100", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 19, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T15:19:27.901Z" + }, + "updated_at": { + "$date": "2022-06-22T15:44:33.458Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61faa12c1ee4b0270db4971f" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته زفرون %80", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 20, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T15:20:12.260Z" + }, + "updated_at": { + "$date": "2022-06-22T15:44:07.626Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61faa14d1ee4b0270db4972b" + }, + "price": 370000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته زفرون %50", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 21, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T15:20:45.892Z" + }, + "updated_at": { + "$date": "2022-06-22T15:43:52.928Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61fabc561ee4b0270db49921" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک دبل چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3ddf4a8d41eae80b0d2c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T17:16:06.658Z" + }, + "updated_at": { + "$date": "2022-05-24T13:37:53.638Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "61fabc7a1ee4b0270db4992e" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک هویج", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3ddf4a8d41eae80b0d2c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-02T17:16:42.566Z" + }, + "updated_at": { + "$date": "2022-05-24T13:51:07.180Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62014cd31ee4b0270db4abf3" + }, + "price": 530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تومیتو پاستا", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3dcb4a8d41eae80b0d21" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-07T16:46:11.334Z" + }, + "updated_at": { + "$date": "2022-02-07T16:46:11.334Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b46e1ee4b0270db4b33b" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دیزی کلاسیک", + "description": "گوشت گوسفندی اعلاء ، دنبه ،‌ نخود ، لوبیا ، گوجه ، پیاز ادویه مخصوص ایزی دیزی", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:32:46.628Z" + }, + "updated_at": { + "$date": "2022-02-09T12:57:47.154Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b4da1ee4b0270db4b346" + }, + "price": 700000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "دیزی تند", + "description": "گوشت گوسفندی اعلاء ، دنبه ،‌ نخود ، لوبیا ، گوجه ، پیاز، فلفل چیلی ، قرمز ، پاپریکا، ادویه مخصوص ایزی دیزی", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:34:34.336Z" + }, + "updated_at": { + "$date": "2022-02-09T12:59:07.374Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b5641ee4b0270db4b35e" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دیزی کشک", + "description": "گوشت گوسفندی اعلاء ، دنبه ،‌ نخود ، لوبیا ، کشک محلی ساییده شده ، نعنا داغ، گل زرد ، بادمجان یا چغندر در صورت سفارش ، ادویه مخصوص ایزی دیزی", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:36:52.874Z" + }, + "updated_at": { + "$date": "2022-02-09T13:01:28.286Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b5881ee4b0270db4b368" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قورمه بلوچی", + "description": "گوشت راسته مزه دار شده در سس ماست ، پیاز ، ادویه های هندی", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:37:28.528Z" + }, + "updated_at": { + "$date": "2022-02-09T13:02:59.298Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b5ac1ee4b0270db4b372" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوفته آبی", + "description": "گوشت چرخ کرده مخلوط ، آرد نخودچی ،آرد سوخاری ،سبزیجات معطر ، رب گوجه، پیاز، ادویه مخصوص", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:38:04.506Z" + }, + "updated_at": { + "$date": "2022-02-09T13:04:56.488Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b6bb1ee4b0270db4b37d" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بریانی", + "description": "گوشت قلوهگاه گوسفندی و ادویه مخصوص به همراه آب گوشت", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:42:35.767Z" + }, + "updated_at": { + "$date": "2022-02-09T13:05:55.663Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b6f31ee4b0270db4b389" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "حلیم بادمجان", + "description": "بادمجان ، کوشت گردن ، لوبیا سفید ، کشک محلی ساییده شده ،پیاز داغ ، ادویه مخصوص", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:43:31.634Z" + }, + "updated_at": { + "$date": "2022-02-09T13:09:18.397Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b7231ee4b0270db4b393" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میرزاقاسمی", + "description": "بادمجان کبابی ، گوجه کبابی ، سیر ،پیاز داغ ، ادویه مخصوص", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:44:19.356Z" + }, + "updated_at": { + "$date": "2022-02-09T13:10:19.433Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b7431ee4b0270db4b39f" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کشک بادمجان", + "description": "بادمجان ، کشک محلی ساییده شده ،پیاز داغ ، ادویه مخصوص", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:44:51.845Z" + }, + "updated_at": { + "$date": "2022-02-09T13:11:07.188Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b75c1ee4b0270db4b3ab" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بزقرمه", + "description": "گوشت گوسفندی ، نخود ، لوبیا ، سیر ، کشک ساییده شده ، زعفران ، ادویه مخصوص", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:45:16.455Z" + }, + "updated_at": { + "$date": "2022-02-09T13:12:20.936Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b7811ee4b0270db4b3b7" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سرداغی", + "description": "گوشت گوسفندی چرخ شده ، عدس ، کنجد ، تخم خرفه ، پیاز ، کشک محلی ساییده شده ، سیر ، زعفران ، ادویه مخصوص", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:45:53.785Z" + }, + "updated_at": { + "$date": "2022-02-09T13:20:32.245Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b7a81ee4b0270db4b3c3" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سرداشی", + "description": "گوشت مخلوط گوساله و گوسفند ، گوجه ، فلفل سبز ، ادویه مخصوص", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:46:32.586Z" + }, + "updated_at": { + "$date": "2022-02-09T13:21:17.139Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b7d21ee4b0270db4b3cf" + }, + "price": 120000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بورانی بادمجان", + "description": "", + "short_description": "", + "category": { + "$oid": "6203b2531ee4b0270db4b30a" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:47:14.488Z" + }, + "updated_at": { + "$date": "2022-02-09T12:47:14.488Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b7ea1ee4b0270db4b3db" + }, + "price": 120000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماست و خیار", + "description": "", + "short_description": "", + "category": { + "$oid": "6203b2531ee4b0270db4b30a" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:47:38.314Z" + }, + "updated_at": { + "$date": "2022-02-09T12:47:38.314Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b8091ee4b0270db4b3e7" + }, + "price": 120000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "انواع ترشی", + "description": "", + "short_description": "", + "category": { + "$oid": "6203b2531ee4b0270db4b30a" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:48:09.995Z" + }, + "updated_at": { + "$date": "2022-02-09T12:48:09.995Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b8261ee4b0270db4b3f3" + }, + "price": 50000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماست چکیده کوزه ای", + "description": "", + "short_description": "", + "category": { + "$oid": "6203b2531ee4b0270db4b30a" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:48:38.553Z" + }, + "updated_at": { + "$date": "2022-02-09T12:48:38.553Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b8441ee4b0270db4b3fd" + }, + "price": 100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوشیدنی های گازدار", + "description": "", + "short_description": "", + "category": { + "$oid": "6203b27d1ee4b0270db4b32b" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:49:08.596Z" + }, + "updated_at": { + "$date": "2022-02-09T12:49:08.596Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b8641ee4b0270db4b407" + }, + "price": 70000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دوغ کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6203b27d1ee4b0270db4b32b" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:49:40.435Z" + }, + "updated_at": { + "$date": "2022-02-09T12:49:40.435Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b87f1ee4b0270db4b413" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دوغ بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6203b27d1ee4b0270db4b32b" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:50:07.069Z" + }, + "updated_at": { + "$date": "2022-02-09T12:50:07.069Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b8a01ee4b0270db4b422" + }, + "price": 80000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دوغ آبعلی", + "description": "", + "short_description": "", + "category": { + "$oid": "6203b27d1ee4b0270db4b32b" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:50:40.516Z" + }, + "updated_at": { + "$date": "2022-02-09T12:50:40.516Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203b8ba1ee4b0270db4b42e" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دوغ محلی", + "description": "", + "short_description": "", + "category": { + "$oid": "6203b27d1ee4b0270db4b32b" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T12:51:06.807Z" + }, + "updated_at": { + "$date": "2022-02-09T12:51:06.807Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6203c0101ee4b0270db4b4f1" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تاس کباب", + "description": "گوشت گوسفندی ، پیاز ، سیب زمینی ، به ، هویج", + "short_description": "", + "category": { + "$oid": "6203b1de1ee4b0270db4b2fb" + }, + "index": 0, + "storeId": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "created_at": { + "$date": "2022-02-09T13:22:24.639Z" + }, + "updated_at": { + "$date": "2022-02-09T13:22:24.639Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6204c3b31ee4b0270db4b88f" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنکیک", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d3d4a8d41eae80b0cf0" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-10T07:50:11.768Z" + }, + "updated_at": { + "$date": "2022-05-17T15:25:48.888Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208a8e61ee4b0270db4c6f1" + }, + "price": 3970000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد آنتروکت مخصوص بوته", + "description": "کاهو پیچ ، مغز گردو ، جعفری ،گوجه چری ،سس آنتروکت فرانسه", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 1, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T06:44:54.804Z" + }, + "updated_at": { + "$date": "2025-12-25T12:19:07.272Z" + }, + "__v": 0, + "image": "food_1729757443896.png" +}, +{ + "_id": { + "$oid": "6208aad71ee4b0270db4c75c" + }, + "price": 5350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد بیف", + "description": "کاهورسمی کاهو فرانسه بنفش،سورل،روکولا،میکروگرین ،توت فرنگی،فیله گوساله،گردوکاراملی ،چیپس هویج،سس زرشک", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 6, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T06:53:11.160Z" + }, + "updated_at": { + "$date": "2025-12-25T12:19:51.474Z" + }, + "__v": 0, + "image": "food_1728303279211.png" +}, +{ + "_id": { + "$oid": "6208ab321ee4b0270db4c766" + }, + "price": 4390000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار سوخاری", + "description": "کاهو، مرغ سوخاری با پنیر ، نان کروتانز ، گوجه چری ، پنیر پارمسان ، سس سزار مخصوص", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 4, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T06:54:42.139Z" + }, + "updated_at": { + "$date": "2025-12-25T12:20:04.941Z" + }, + "__v": 0, + "image": "food_1729758275074.png" +}, +{ + "_id": { + "$oid": "6208ab8b1ee4b0270db4c780" + }, + "price": 4530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار گریل ", + "description": "کاهو، مرغ گریل شده ، نان کروتانز ، گوجه چری ، پنیر پارمسان ، سس سزار مخصوص", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 5, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T06:56:11.413Z" + }, + "updated_at": { + "$date": "2025-12-25T12:22:21.749Z" + }, + "__v": 0, + "image": "food_1729757571328.png" +}, +{ + "_id": { + "$oid": "6208acc31ee4b0270db4c7ad" + }, + "price": 2590000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی با دیپ کافه دوپاری(new)", + "description": "سیب زمینی وجز ، دیپ کافه دوپاری، پولبیبر، میکرو گرین، گرین اویل، پنیر پارمسان", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 10, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:01:23.153Z" + }, + "updated_at": { + "$date": "2025-12-25T12:22:34.163Z" + }, + "__v": 0, + "image": "food_1728331073193.png" +}, +{ + "_id": { + "$oid": "6208ad161ee4b0270db4c7cf" + }, + "price": 3230000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن اسپایسی(new)", + "description": "سینه مرغ، سالاد روکولا، سس باربیکیو", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 16, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:02:46.801Z" + }, + "updated_at": { + "$date": "2025-12-25T12:23:00.606Z" + }, + "__v": 0, + "image": "food_1729757914158.png" +}, +{ + "_id": { + "$oid": "6208ad361ee4b0270db4c7db" + }, + "price": 1310000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوپ روز", + "description": "", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 17, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:03:18.483Z" + }, + "updated_at": { + "$date": "2025-12-25T12:23:44.459Z" + }, + "__v": 0, + "image": "food_1729755496336.png" +}, +{ + "_id": { + "$oid": "6208ae301ee4b0270db4c804" + }, + "price": 6530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست بیف", + "description": "گوشت ریش شده، سس آیولی روی پیتزا، قارچ،زیتون اسلایس ، پنیر، سس مخصوص کف پیتزا", + "short_description": "", + "category": { + "$oid": "6207a1c11ee4b0270db4c3da" + }, + "index": 4, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:07:28.413Z" + }, + "updated_at": { + "$date": "2025-12-25T12:24:14.060Z" + }, + "__v": 0, + "image": "food_1729756171799.png" +}, +{ + "_id": { + "$oid": "6208ae821ee4b0270db4c80e" + }, + "price": 5210000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن نیویورکر", + "description": "مرغ ماسالا، قارچ، فلفل دلمه، سس گوجه، دیپ پنیر", + "short_description": "", + "category": { + "$oid": "6207a1c11ee4b0270db4c3da" + }, + "index": 3, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:08:50.039Z" + }, + "updated_at": { + "$date": "2025-12-25T12:24:47.650Z" + }, + "__v": 0, + "image": "food_1729756321754.png" +}, +{ + "_id": { + "$oid": "6208af8ffa922c7fd13637d4" + }, + "price": 5370000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپشیال", + "description": "میکس ژامبون، سوسیس، قارچ، فلفل دلمه،زیتون", + "short_description": "", + "category": { + "$oid": "6207a1c11ee4b0270db4c3da" + }, + "index": 2, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:13:19.220Z" + }, + "updated_at": { + "$date": "2025-12-25T12:24:56.693Z" + }, + "__v": 0, + "image": "food_1731413338758.png" +}, +{ + "_id": { + "$oid": "6208b09e81751aaffbf65db4" + }, + "price": 5850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کواترو استاجونی", + "description": "پیتزا چهار فصل شامل: پپرونی، استیک، فیله مرغ و سبزیجات", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 4, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:17:50.822Z" + }, + "updated_at": { + "$date": "2025-12-25T12:25:15.114Z" + }, + "__v": 0, + "image": "food_1729756471445.png" +}, +{ + "_id": { + "$oid": "6208b11e81751aaffbf65dca" + }, + "price": 5570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دیاولا (پپرونی)", + "description": "پپرونی، سس مخصوص، موتزارلا", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 6, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:19:58.798Z" + }, + "updated_at": { + "$date": "2025-12-25T12:25:24.690Z" + }, + "__v": 0, + "image": "food_1729758594732.png" +}, +{ + "_id": { + "$oid": "6208b18981751aaffbf65dd4" + }, + "price": 4350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وردورا (سبزیجات)", + "description": "بادمجان، کدو، فلفل دلمه، پیار، قارچ، زیتون، اسفناج، سس گوجه", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 3, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:21:45.862Z" + }, + "updated_at": { + "$date": "2025-12-25T12:25:35.931Z" + }, + "__v": 0, + "image": "food_1729758629130.png" +}, +{ + "_id": { + "$oid": "6208b1f081751aaffbf65dde" + }, + "price": 5570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کواترو فور ماجی(new)", + "description": "خمیر ایتالیایی، سس مارینارا، پنیر میکس، ژامبون بوقلمون، گوجه گیلاسی، دیپ کافه دوپاری،اوریگانو، ریحان، قارچ", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 5, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:23:28.083Z" + }, + "updated_at": { + "$date": "2025-12-25T12:25:55.902Z" + }, + "__v": 0, + "image": "food_1728330406509.png" +}, +{ + "_id": { + "$oid": "6208b27881751aaffbf65df4" + }, + "price": 6450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوله میو", + "description": "فیله گوساله، پیاز کاراملی، سس گوجه، خمیر مخصوص ایتالیایی", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 11, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:25:44.492Z" + }, + "updated_at": { + "$date": "2025-12-25T12:26:10.236Z" + }, + "__v": 0, + "image": "food_1729755229649.png" +}, +{ + "_id": { + "$oid": "6208b31c81751aaffbf65e02" + }, + "price": 5610000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پولو", + "description": "فیله مرغ، قارچ، گردو، سس پستوروی پیتزا، موتزارلا، دیپ پنیر، سس گوجه، پارمسان", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 9, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:28:28.093Z" + }, + "updated_at": { + "$date": "2025-12-25T12:26:22.333Z" + }, + "__v": 0, + "image": "food_1729756261349.png" +}, +{ + "_id": { + "$oid": "6208b36d81751aaffbf65e0c" + }, + "price": 6350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیر و استیک", + "description": "فیله مزه دار شده، قارچ ، زیتون، سس سیر روی پیتزا، پنیر", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 10, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:29:49.204Z" + }, + "updated_at": { + "$date": "2025-12-25T12:26:35.077Z" + }, + "__v": 0, + "image": "food_1729756530319.png" +}, +{ + "_id": { + "$oid": "6208b40881751aaffbf65e16" + }, + "price": 4070000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مارگریتا", + "description": "سس گوجه فرنگی، موتزارلا، گوجه خشک، بازیلیکو، پارمسان", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 2, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:32:24.784Z" + }, + "updated_at": { + "$date": "2025-12-25T12:26:50.853Z" + }, + "__v": 0, + "image": "food_1729756652007.png" +}, +{ + "_id": { + "$oid": "6208b86f81751aaffbf65e55" + }, + "price": 4250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن آلفردو", + "description": "پنه ، فیله مرغ ، قارچ ، سس آلفردو", + "short_description": "", + "category": { + "$oid": "6207a1f81ee4b0270db4c3ef" + }, + "index": 2, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:51:11.022Z" + }, + "updated_at": { + "$date": "2025-12-25T12:27:06.257Z" + }, + "__v": 0, + "image": "food_1696945630526.png" +}, +{ + "_id": { + "$oid": "6208b90181751aaffbf65e69" + }, + "price": 4290000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فور چیز(new)", + "description": "پنه، سس آلفردو، سس مارینارا، دیپ کافه دوپاری، پنیر پارمسان، پنیر خامه ای، سینه مرغ، چیپس بادمجان، ریحان ایتالیایی", + "short_description": "", + "category": { + "$oid": "6207a1f81ee4b0270db4c3ef" + }, + "index": 3, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:53:37.658Z" + }, + "updated_at": { + "$date": "2025-12-25T12:27:14.836Z" + }, + "__v": 0, + "image": "food_1728306961819.png" +}, +{ + "_id": { + "$oid": "6208b9612cf0cf6959b13aaf" + }, + "price": 4450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیف آرابیاتا(new)", + "description": "فتو چینی، سس آرابیاتا، پنیر پارمسان، فیله گوساله، میکرو گرین، چیپس بادمجان، هالوپینو(تند)", + "short_description": "", + "category": { + "$oid": "6207a1f81ee4b0270db4c3ef" + }, + "index": 4, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:55:13.313Z" + }, + "updated_at": { + "$date": "2025-12-25T12:27:23.878Z" + }, + "__v": 0, + "image": "food_1728306836636.png" +}, +{ + "_id": { + "$oid": "6208ba302cf0cf6959b13b0a" + }, + "price": 7930000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کته استیک", + "description": "فیله گوساله با برنج ایرانی ، گوجه فرنگی، سس سماق، پیاز کبابی، ساید سالاد", + "short_description": "", + "category": { + "$oid": "6207a2141ee4b0270db4c3f8" + }, + "index": 7, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T07:58:40.170Z" + }, + "updated_at": { + "$date": "2025-12-25T12:27:38.760Z" + }, + "__v": 0, + "image": "food_1728330109953.png" +}, +{ + "_id": { + "$oid": "6208bac12cf0cf6959b13b3e" + }, + "price": 5690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کته سبزی با ماهی", + "description": "برنج ایرانی، سیر، سبزی، ماهی قزل آلا سرخ شده", + "short_description": "", + "category": { + "$oid": "6207a2141ee4b0270db4c3f8" + }, + "index": 8, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T08:01:05.272Z" + }, + "updated_at": { + "$date": "2025-12-25T12:27:51.160Z" + }, + "__v": 0, + "image": "food_1728301711620.png" +}, +{ + "_id": { + "$oid": "6208baf12cf0cf6959b13b52" + }, + "price": 5650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کباب تابه ای", + "description": "کته، گوشت گوساله، سس گوجه، چیپس هویج به همراه سس مخصوص", + "short_description": "", + "category": { + "$oid": "6207a2141ee4b0270db4c3f8" + }, + "index": 6, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T08:01:53.788Z" + }, + "updated_at": { + "$date": "2025-12-25T12:28:02.469Z" + }, + "__v": 0, + "image": "food_1728300683426.png" +}, +{ + "_id": { + "$oid": "6208bd262cf0cf6959b13be7" + }, + "price": 9850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله استیک(new)", + "description": "فیله گوساله ، سیب زمینی تنوری، کافه دوپاری، هویج، چری دمی گلس", + "short_description": "", + "category": { + "$oid": "6207a2421ee4b0270db4c40b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T08:11:18.732Z" + }, + "updated_at": { + "$date": "2025-12-25T12:28:22.523Z" + }, + "__v": 0, + "image": "food_1732099203488.png" +}, +{ + "_id": { + "$oid": "6208bda52cf0cf6959b13bfb" + }, + "price": 5750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن استیک", + "description": "سینه مرغ گریل شده ، پوره سیب زمینی ، سبزیجات ، سس پیازچه", + "short_description": "", + "category": { + "$oid": "6207a2421ee4b0270db4c40b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T08:13:25.721Z" + }, + "updated_at": { + "$date": "2025-12-25T12:28:32.032Z" + }, + "__v": 0, + "image": "food_1728331458194.png" +}, +{ + "_id": { + "$oid": "6208c8962cf0cf6959b13d37" + }, + "price": 4750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیکن لاورز", + "description": "برگر ۱۵۰ گرمی،بیکن ،پنبر،کاهو لوتوس ،گوجه فرنگی ،خیارشور، پیاز کاراملی، سس مخصوص، ساید سالاد و سیب زمینی (سرو سالن)", + "short_description": "", + "category": { + "$oid": "6207a2681ee4b0270db4c429" + }, + "index": 3, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T09:00:06.683Z" + }, + "updated_at": { + "$date": "2025-12-25T12:28:47.607Z" + }, + "__v": 0, + "image": "food_1729754952099.png" +}, +{ + "_id": { + "$oid": "6208c9102cf0cf6959b13d41" + }, + "price": 4390000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلاسیک برگر", + "description": "نان برگر، برگر ۱۵۰ گرمی، گوجه فرنگی، کاهو لوتوس، پیازکاراملی، خیار، سس مخصوص، ساید سالاد و سیب زمینی(سرو سالن)", + "short_description": "", + "category": { + "$oid": "6207a2681ee4b0270db4c429" + }, + "index": 1, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T09:02:08.902Z" + }, + "updated_at": { + "$date": "2025-12-25T12:28:56.686Z" + }, + "__v": 0, + "image": "food_1729758171518.png" +}, +{ + "_id": { + "$oid": "6208c98e2cf0cf6959b13d63" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو سینگل", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:04:14.541Z" + }, + "updated_at": { + "$date": "2022-06-06T12:06:55.364Z" + }, + "__v": 0, + "image": "food_1645017478067.png" +}, +{ + "_id": { + "$oid": "6208c9a52cf0cf6959b13d78" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو دبل", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:04:37.492Z" + }, + "updated_at": { + "$date": "2022-06-06T12:06:39.141Z" + }, + "__v": 0, + "image": "food_1645017517499.png" +}, +{ + "_id": { + "$oid": "6208c9d92cf0cf6959b13d91" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:05:29.681Z" + }, + "updated_at": { + "$date": "2022-08-21T07:40:25.431Z" + }, + "__v": 0, + "image": "food_1645017556188.png" +}, +{ + "_id": { + "$oid": "6208c9f22cf0cf6959b13d9b" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ترک دمی", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:05:54.240Z" + }, + "updated_at": { + "$date": "2022-06-06T12:05:54.403Z" + }, + "__v": 0, + "image": "food_1645017579932.png" +}, +{ + "_id": { + "$oid": "6208ca042cf0cf6959b13db0" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لته", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:06:12.514Z" + }, + "updated_at": { + "$date": "2022-08-21T07:40:05.012Z" + }, + "__v": 0, + "image": "food_1645017618831.png" +}, +{ + "_id": { + "$oid": "6208ca1a2cf0cf6959b13dbc" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:06:34.073Z" + }, + "updated_at": { + "$date": "2022-08-21T07:39:49.708Z" + }, + "__v": 0, + "image": "food_1645017667092.png" +}, +{ + "_id": { + "$oid": "6208ca322cf0cf6959b13dc6" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:06:58.300Z" + }, + "updated_at": { + "$date": "2022-08-21T07:39:31.221Z" + }, + "__v": 0, + "image": "food_1645017705127.png" +}, +{ + "_id": { + "$oid": "6208ca4a2cf0cf6959b13dd5" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه یونانی", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:07:22.573Z" + }, + "updated_at": { + "$date": "2022-06-06T12:04:30.443Z" + }, + "__v": 0, + "image": "food_1645017753302.png" +}, +{ + "_id": { + "$oid": "6208ca692cf0cf6959b13dec" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:07:53.981Z" + }, + "updated_at": { + "$date": "2022-08-21T07:38:56.194Z" + }, + "__v": 0, + "image": "food_1645017778152.png" +}, +{ + "_id": { + "$oid": "6208ca872cf0cf6959b13dfc" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:08:23.537Z" + }, + "updated_at": { + "$date": "2022-08-21T07:38:41.719Z" + }, + "__v": 0, + "image": "food_1645017814380.png" +}, +{ + "_id": { + "$oid": "6208ca9d2cf0cf6959b13e08" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر عسل دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:08:45.453Z" + }, + "updated_at": { + "$date": "2022-06-06T12:03:37.702Z" + }, + "__v": 0, + "image": "food_1645017958798.png" +}, +{ + "_id": { + "$oid": "6208cab12cf0cf6959b13e12" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سایفون ", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:09:05.343Z" + }, + "updated_at": { + "$date": "2022-06-06T12:03:23.681Z" + }, + "__v": 0, + "image": "food_1645017999993.png" +}, +{ + "_id": { + "$oid": "6208cab22cf0cf6959b13e19" + }, + "price": 4190000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن پستو(new)", + "description": "نان چیاباتا، سینه مرغ گریل، پستو ریحان، گوجه خشک، دیپ کافه دوپاری، ریحان ایتالیایی، سیب زمینی", + "short_description": "", + "category": { + "$oid": "6207a2681ee4b0270db4c429" + }, + "index": 9, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T09:09:06.003Z" + }, + "updated_at": { + "$date": "2025-12-25T12:29:13.126Z" + }, + "__v": 0, + "image": "food_1728331220150.png" +}, +{ + "_id": { + "$oid": "6208cac42cf0cf6959b13e30" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فرانسه", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:09:24.129Z" + }, + "updated_at": { + "$date": "2022-06-06T12:03:09.193Z" + }, + "__v": 0, + "image": "food_1645018036872.png" +}, +{ + "_id": { + "$oid": "6208cae62cf0cf6959b13e3a" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کافی", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:09:58.501Z" + }, + "updated_at": { + "$date": "2022-08-21T07:38:19.301Z" + }, + "__v": 0, + "image": "food_1645018080298.png" +}, +{ + "_id": { + "$oid": "6208cafc2cf0cf6959b13e44" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آيس کارامل", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:10:20.614Z" + }, + "updated_at": { + "$date": "2022-06-06T12:02:35.623Z" + }, + "__v": 0, + "image": "food_1645018126527.png" +}, +{ + "_id": { + "$oid": "6208cb892cf0cf6959b13e8c" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:12:41.502Z" + }, + "updated_at": { + "$date": "2022-06-06T12:02:15.399Z" + }, + "__v": 0, + "image": "food_1645018189433.png" +}, +{ + "_id": { + "$oid": "6208cba62cf0cf6959b13e98" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هویج گلاسه", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:13:10.481Z" + }, + "updated_at": { + "$date": "2022-06-06T12:01:57.451Z" + }, + "__v": 0, + "image": "food_1645018225650.png" +}, +{ + "_id": { + "$oid": "6208cbbc2cf0cf6959b13ea2" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آناناس گلاسه", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:13:32.332Z" + }, + "updated_at": { + "$date": "2022-06-06T12:01:32.332Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6208cbde2cf0cf6959b13eb8" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گرین لایف", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-13T09:14:06.800Z" + }, + "updated_at": { + "$date": "2022-06-06T12:01:19.471Z" + }, + "__v": 0, + "image": "food_1645018352272.png" +}, +{ + "_id": { + "$oid": "6208cf932cf0cf6959b13f1f" + }, + "price": 5650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پولد بیف(new)", + "description": "پولد بیف، قارچ، سس چری دنی گلس ، سیب زمینی، نان چیاباتا، روکولا، سس کوکتل", + "short_description": "", + "category": { + "$oid": "6207a2681ee4b0270db4c429" + }, + "index": 6, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T09:29:55.180Z" + }, + "updated_at": { + "$date": "2025-12-25T12:29:24.305Z" + }, + "__v": 0, + "image": "food_1728331686617.png" +}, +{ + "_id": { + "$oid": "6208ecb59f0f86e3387c591c" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تیرامیسو", + "description": "پنیر خامه ای،خامه،لیدی فینگر", + "short_description": "", + "category": { + "$oid": "6208a93b1ee4b0270db4c715" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T11:34:13.864Z" + }, + "updated_at": { + "$date": "2025-11-13T11:36:12.980Z" + }, + "__v": 0, + "image": "food_1729759180680.png" +}, +{ + "_id": { + "$oid": "6208ed289f0f86e3387c5938" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وافل", + "description": "دو عدد وافل،دورچین میوه", + "short_description": "", + "category": { + "$oid": "6208a93b1ee4b0270db4c715" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T11:36:08.213Z" + }, + "updated_at": { + "$date": "2025-11-13T11:36:23.267Z" + }, + "__v": 0, + "image": "food_1729756586757.png" +}, +{ + "_id": { + "$oid": "6208edfc9f0f86e3387c5982" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بستنی مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "6208a93b1ee4b0270db4c715" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-13T11:39:40.852Z" + }, + "updated_at": { + "$date": "2025-11-13T11:36:32.637Z" + }, + "__v": 0, + "image": "food_1729759056825.png" +}, +{ + "_id": { + "$oid": "6209f06b9f0f86e3387c5ef4" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سایفون ۱ کاپ", + "description": "در دهه سی قرن هجدهم میلادی توسط لوف در آلمان طراحی شد،وسیله ای است که به کمک خلاء هوا در دو مخزن که روی هم سوار می شوند کار می کند", + "short_description": "", + "category": { + "$oid": "6207a2d91ee4b0270db4c445" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-14T06:02:19.346Z" + }, + "updated_at": { + "$date": "2025-09-27T10:13:41.279Z" + }, + "__v": 0, + "image": "food_1728374457341.png" +}, +{ + "_id": { + "$oid": "6209f0ef9f0f86e3387c5efe" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سایفون ۲ کاپ", + "description": "در دهه سی قرن هجدهم میلادی توسط لوف در آلمان طراحی شد،وسیله ای است که به کمک خلاء هوا در دو مخزن که روی هم سوار می شوند کار می کند", + "short_description": "", + "category": { + "$oid": "6207a2d91ee4b0270db4c445" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-14T06:04:31.726Z" + }, + "updated_at": { + "$date": "2025-09-27T10:13:46.546Z" + }, + "__v": 0, + "image": "food_1728374458345.png" +}, +{ + "_id": { + "$oid": "6209f2d49f0f86e3387c5f14" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کمکس ۲ کاپ ", + "description": "در سال ۱۹۴ توسط پیتر شلمبوم اختراع شد،در این روش قهوه داخل فیلتر ریخته شده و آب جوش از روی آن عبور کرده و قهوه دم کشیده داخل ظرف شیشه ای می ریزد", + "short_description": "", + "category": { + "$oid": "6207a2d91ee4b0270db4c445" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-14T06:12:36.427Z" + }, + "updated_at": { + "$date": "2025-09-27T10:13:54.528Z" + }, + "__v": 0, + "image": "food_1728374428131.png" +}, +{ + "_id": { + "$oid": "6209f30d9f0f86e3387c5f1e" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کمکس ۴ کاپ", + "description": "در سال ۱۹۴ توسط پیتر شلمبوم اختراع شد،در این روش قهوه داخل فیلتر ریخته شده و آب جوش از روی آن عبور کرده و قهوه دم کشیده داخل ظرف شیشه ای می ریزد", + "short_description": "", + "category": { + "$oid": "6207a2d91ee4b0270db4c445" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-14T06:13:33.327Z" + }, + "updated_at": { + "$date": "2025-09-27T10:14:03.637Z" + }, + "__v": 0, + "image": "food_1728374433041.png" +}, +{ + "_id": { + "$oid": "6209f4459f0f86e3387c5f28" + }, + "price": 1690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایروپرس", + "description": "توسط اروبی به مدریت آلن آدلر در سال ۲۰۰۵ اختراع شد، در این روش قهوه آسیاب شده همراه آب داغ داخل سیلندر ریخته شده و با فشار سرنگ از فیلتر عبور داده می شود", + "short_description": "", + "category": { + "$oid": "6207a2d91ee4b0270db4c445" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-14T06:18:45.446Z" + }, + "updated_at": { + "$date": "2025-09-27T10:14:09.818Z" + }, + "__v": 0, + "image": "food_1729759018128.png" +}, +{ + "_id": { + "$oid": "6209f4d79f0f86e3387c5f32" + }, + "price": 1690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وی۶۰", + "description": "کارکردی مشابه کمکس داشته با این تفاوت که طعمی غنی تر نسبت به کمکس دارد", + "short_description": "", + "category": { + "$oid": "6207a2d91ee4b0270db4c445" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-02-14T06:21:11.485Z" + }, + "updated_at": { + "$date": "2025-09-27T10:14:17.527Z" + }, + "__v": 0, + "image": "food_1728374474365.png" +}, +{ + "_id": { + "$oid": "620a374d9f0f86e3387c62a7" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سان شاین", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:04:45.897Z" + }, + "updated_at": { + "$date": "2022-08-21T07:37:50.096Z" + }, + "__v": 0, + "image": "food_1645018390978.png" +}, +{ + "_id": { + "$oid": "620a37629f0f86e3387c62b4" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:05:06.177Z" + }, + "updated_at": { + "$date": "2022-06-06T11:57:16.441Z" + }, + "__v": 0, + "image": "food_1645018438471.png" +}, +{ + "_id": { + "$oid": "620a37779f0f86e3387c62be" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفاگاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:05:27.885Z" + }, + "updated_at": { + "$date": "2022-06-06T11:55:00.042Z" + }, + "__v": 0, + "image": "food_1645018483060.png" +}, +{ + "_id": { + "$oid": "620a37989f0f86e3387c62c8" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپرینا", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:06:00.578Z" + }, + "updated_at": { + "$date": "2022-06-06T11:54:40.232Z" + }, + "__v": 0, + "image": "food_1645018530231.png" +}, +{ + "_id": { + "$oid": "620a37bb9f0f86e3387c62d4" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:06:35.239Z" + }, + "updated_at": { + "$date": "2022-08-21T07:37:12.899Z" + }, + "__v": 0, + "image": "food_1645018603413.png" +}, +{ + "_id": { + "$oid": "620a37d79f0f86e3387c62de" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فروت رول", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:07:03.658Z" + }, + "updated_at": { + "$date": "2022-06-06T11:53:36.892Z" + }, + "__v": 0, + "image": "food_1645018627969.png" +}, +{ + "_id": { + "$oid": "620a37f29f0f86e3387c62ea" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "واترملون", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:07:30.914Z" + }, + "updated_at": { + "$date": "2022-06-06T11:53:09.963Z" + }, + "__v": 0, + "image": "food_1645018661219.png" +}, +{ + "_id": { + "$oid": "620a383a9f0f86e3387c62f4" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیپس و پنیر", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:08:42.499Z" + }, + "updated_at": { + "$date": "2022-06-06T11:52:52.854Z" + }, + "__v": 0, + "image": "food_1645193702676.png" +}, +{ + "_id": { + "$oid": "620a38599f0f86e3387c62fe" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیپس و پنیر ۲ نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:09:13.409Z" + }, + "updated_at": { + "$date": "2022-06-06T11:52:36.691Z" + }, + "__v": 0, + "image": "food_1645193668341.png" +}, +{ + "_id": { + "$oid": "620a388f9f0f86e3387c630a" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:10:07.876Z" + }, + "updated_at": { + "$date": "2022-08-21T07:36:27.000Z" + }, + "__v": 0, + "image": "food_1645193637610.png" +}, +{ + "_id": { + "$oid": "620a38bb9f0f86e3387c6319" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی با پنیر", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:10:51.124Z" + }, + "updated_at": { + "$date": "2022-08-21T07:35:54.803Z" + }, + "__v": 0, + "image": "food_1645193598058.png" +}, +{ + "_id": { + "$oid": "620a38d59f0f86e3387c6323" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی با پنیر دو نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:11:17.788Z" + }, + "updated_at": { + "$date": "2022-08-21T07:35:18.729Z" + }, + "__v": 0, + "image": "food_1645193558686.png" +}, +{ + "_id": { + "$oid": "620a39059f0f86e3387c6330" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی ویژه", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:12:05.598Z" + }, + "updated_at": { + "$date": "2022-08-21T07:34:58.760Z" + }, + "__v": 0, + "image": "food_1645193521047.png" +}, +{ + "_id": { + "$oid": "620a39249f0f86e3387c633c" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی ویژه دو نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:12:36.197Z" + }, + "updated_at": { + "$date": "2022-08-21T07:34:37.949Z" + }, + "__v": 0, + "image": "food_1645193485198.png" +}, +{ + "_id": { + "$oid": "620a39689f0f86e3387c6346" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی هات داگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:13:44.994Z" + }, + "updated_at": { + "$date": "2022-06-06T11:49:09.555Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "620a39889f0f86e3387c6350" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی ژامبون", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:14:16.547Z" + }, + "updated_at": { + "$date": "2022-06-06T11:47:51.904Z" + }, + "__v": 0, + "image": "food_1645193428118.png" +}, +{ + "_id": { + "$oid": "620a39a69f0f86e3387c635a" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شنیسل مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:14:46.809Z" + }, + "updated_at": { + "$date": "2022-06-06T11:47:08.350Z" + }, + "__v": 0, + "image": "food_1645193401471.png" +}, +{ + "_id": { + "$oid": "620a39d69f0f86e3387c6364" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسنک", + "description": "سوسیس، پنیر، قارچ، فلفل دلمه، سس کچاپ و فرانسه", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:15:34.128Z" + }, + "updated_at": { + "$date": "2022-08-21T07:33:49.537Z" + }, + "__v": 0, + "image": "food_1645018726223.png" +}, +{ + "_id": { + "$oid": "620a39ee9f0f86e3387c636e" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:15:58.724Z" + }, + "updated_at": { + "$date": "2022-06-06T11:34:32.144Z" + }, + "__v": 0, + "image": "food_1645018748768.png" +}, +{ + "_id": { + "$oid": "620a3a0c9f0f86e3387c6378" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "توت فرنگی", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:16:28.337Z" + }, + "updated_at": { + "$date": "2022-08-21T07:33:28.999Z" + }, + "__v": 0, + "image": "food_1645018704529.png" +}, +{ + "_id": { + "$oid": "620a3a219f0f86e3387c6382" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شاتوت", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:16:49.179Z" + }, + "updated_at": { + "$date": "2022-08-21T07:33:08.757Z" + }, + "__v": 0, + "image": "food_1645193275929.png" +}, +{ + "_id": { + "$oid": "620a3a369f0f86e3387c638c" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سنتی", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:17:10.322Z" + }, + "updated_at": { + "$date": "2022-06-06T11:42:28.319Z" + }, + "__v": 0, + "image": "food_1645193187571.png" +}, +{ + "_id": { + "$oid": "620a3a459f0f86e3387c6396" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:17:25.380Z" + }, + "updated_at": { + "$date": "2022-08-21T07:32:51.077Z" + }, + "__v": 0, + "image": "food_1645193106675.png" +}, +{ + "_id": { + "$oid": "620a3a5b9f0f86e3387c63a2" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مخلوط", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:17:47.916Z" + }, + "updated_at": { + "$date": "2022-06-06T11:41:51.615Z" + }, + "__v": 0, + "image": "food_1645193071691.png" +}, +{ + "_id": { + "$oid": "620a3a6f9f0f86e3387c63ac" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "معجون", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:18:07.649Z" + }, + "updated_at": { + "$date": "2022-08-21T07:32:20.312Z" + }, + "__v": 0, + "image": "food_1645193040976.png" +}, +{ + "_id": { + "$oid": "620a3a9d9f0f86e3387c63b6" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بستنی ایتالیایی", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:18:53.666Z" + }, + "updated_at": { + "$date": "2022-06-06T11:41:19.442Z" + }, + "__v": 0, + "image": "food_1645193010587.png" +}, +{ + "_id": { + "$oid": "620a3aae9f0f86e3387c63c0" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:19:10.518Z" + }, + "updated_at": { + "$date": "2022-08-21T07:32:00.138Z" + }, + "__v": 0, + "image": "food_1645192964012.png" +}, +{ + "_id": { + "$oid": "620a3abf9f0f86e3387c63ca" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:19:27.577Z" + }, + "updated_at": { + "$date": "2022-08-21T07:31:43.286Z" + }, + "__v": 0, + "image": "food_1645192930977.png" +}, +{ + "_id": { + "$oid": "620a3ad79f0f86e3387c63d4" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وانیل", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:19:51.308Z" + }, + "updated_at": { + "$date": "2022-08-21T07:31:17.910Z" + }, + "__v": 0, + "image": "food_1645192904361.png" +}, +{ + "_id": { + "$oid": "620a3b299f0f86e3387c63df" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شاتوت ", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:21:13.225Z" + }, + "updated_at": { + "$date": "2022-08-21T07:30:56.790Z" + }, + "__v": 0, + "image": "food_1645192850800.png" +}, +{ + "_id": { + "$oid": "620a3b409f0f86e3387c63ed" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "توت فرنگی ", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:21:36.467Z" + }, + "updated_at": { + "$date": "2022-08-21T07:30:38.916Z" + }, + "__v": 0, + "image": "food_1645192828049.png" +}, +{ + "_id": { + "$oid": "620a3b999f0f86e3387c6402" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوتلا ", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:23:05.595Z" + }, + "updated_at": { + "$date": "2022-08-21T07:30:21.086Z" + }, + "__v": 0, + "image": "food_1645192677552.png" +}, +{ + "_id": { + "$oid": "620a3bb49f0f86e3387c640d" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شکلات ", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:23:32.126Z" + }, + "updated_at": { + "$date": "2022-08-21T07:30:04.415Z" + }, + "__v": 0, + "image": "food_1645192651340.png" +}, +{ + "_id": { + "$oid": "620a3bf89f0f86e3387c6417" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شکلات موز", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:24:40.554Z" + }, + "updated_at": { + "$date": "2022-08-21T07:29:39.088Z" + }, + "__v": 0, + "image": "food_1645192568861.png" +}, +{ + "_id": { + "$oid": "620a3c2d9f0f86e3387c6421" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:25:33.900Z" + }, + "updated_at": { + "$date": "2022-08-21T07:29:19.816Z" + }, + "__v": 0, + "image": "food_1645192541740.png" +}, +{ + "_id": { + "$oid": "620a3c7d9f0f86e3387c642b" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "M&M", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:26:53.097Z" + }, + "updated_at": { + "$date": "2022-06-06T11:37:54.372Z" + }, + "__v": 0, + "image": "food_1645192458431.png" +}, +{ + "_id": { + "$oid": "620a3ca39f0f86e3387c6435" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وانیل ", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:27:31.296Z" + }, + "updated_at": { + "$date": "2022-08-21T07:28:57.279Z" + }, + "__v": 0, + "image": "food_1645192380780.png" +}, +{ + "_id": { + "$oid": "620a3ce49f0f86e3387c643f" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نارگیل", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:28:36.878Z" + }, + "updated_at": { + "$date": "2022-06-06T11:37:24.633Z" + }, + "__v": 0, + "image": "food_1645192357817.png" +}, +{ + "_id": { + "$oid": "620a3d0b9f0f86e3387c6449" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بادام زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:29:15.178Z" + }, + "updated_at": { + "$date": "2022-08-21T07:28:25.660Z" + }, + "__v": 0, + "image": "food_1645192328640.png" +}, +{ + "_id": { + "$oid": "620a3d5c9f0f86e3387c645b" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "معجون ", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:30:36.499Z" + }, + "updated_at": { + "$date": "2022-08-21T07:28:03.173Z" + }, + "__v": 0, + "image": "food_1645192304289.png" +}, +{ + "_id": { + "$oid": "620a3d829f0f86e3387c6469" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه ", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:31:14.175Z" + }, + "updated_at": { + "$date": "2022-06-06T11:36:37.938Z" + }, + "__v": 0, + "image": "food_1645192242107.png" +}, +{ + "_id": { + "$oid": "620a3db99f0f86e3387c6473" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c5e32cf0cf6959b13cdc" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-02-14T11:32:09.150Z" + }, + "updated_at": { + "$date": "2022-06-06T11:36:18.663Z" + }, + "__v": 0, + "image": "food_1645192150150.png" +}, +{ + "_id": { + "$oid": "6215fa46ee45f61f3a6972a4" + }, + "price": 4500000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "استیک فیله مینیون", + "description": "فیله گوساله،سبزیجات بخارپز طعم دار شده،پوره سیب زمینی،سس قارچ", + "short_description": "", + "category": { + "$oid": "6215f9c1ee45f61f3a69728c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T09:11:34.701Z" + }, + "updated_at": { + "$date": "2024-08-06T14:30:47.410Z" + }, + "__v": 0, + "image": "food_1674240746571.png" +}, +{ + "_id": { + "$oid": "6215fad1ee45f61f3a6972b9" + }, + "price": 4600000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "استیک باربی کیو", + "description": "فیله گوساله دودی،سبزیجات بخارپز طعم دار شده،پوره سیب زمینی،سس دودی دست ساز", + "short_description": "", + "category": { + "$oid": "6215f9c1ee45f61f3a69728c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T09:13:53.810Z" + }, + "updated_at": { + "$date": "2024-08-06T14:30:26.474Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6215fbdeee45f61f3a6972e2" + }, + "price": 4900000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "کته استیک", + "description": "فیله گوساله،شنسل مرغ طعم دار شد۰،سبزیجات بخارپز،پوره سیب زمینی،سس قارچ،سس هاووس،برنج کته", + "short_description": "", + "category": { + "$oid": "6215f9c1ee45f61f3a69728c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T09:18:22.351Z" + }, + "updated_at": { + "$date": "2024-08-06T14:30:13.894Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6215fc60ee45f61f3a6972f4" + }, + "price": 3350000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "چیکن استیک", + "description": "شنسل مرغ گریل شده،سبزیجات بخارپز طعم دار شده،پوره سیب زمینی،سس قارچ", + "short_description": "", + "category": { + "$oid": "6215f9c1ee45f61f3a69728c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T09:20:32.831Z" + }, + "updated_at": { + "$date": "2024-08-06T14:30:01.515Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62160f62ee45f61f3a6973a7" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "برگر کلاسیک", + "description": "گوشت خالص،گوجه،خیارشور،کاهو،سیب زمینی سرخ شده", + "short_description": "", + "category": { + "$oid": "6215fe09ee45f61f3a69731e" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T10:41:38.308Z" + }, + "updated_at": { + "$date": "2024-08-06T14:29:51.298Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62161010ee45f61f3a6973b1" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "برگر هاوایی", + "description": "گوشت خالص،گوجه،خیارشور،کاهو،پنیر گودا،ژامبون گوشت،آناناس تفت داده شده،پنیر کاراملی،سس دودی،سیب زمینی سرخ شده", + "short_description": "", + "category": { + "$oid": "6215fe09ee45f61f3a69731e" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T10:44:32.871Z" + }, + "updated_at": { + "$date": "2024-08-06T14:29:37.229Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62161173ee45f61f3a6973e4" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "جورجیا برگر", + "description": "گوشت خالص،شنسل مرغ سوخاری،پنیر گودا،پنیر کاراملی،کاهو،خیارشور،گوجه،سس مخصوص دودی", + "short_description": "", + "category": { + "$oid": "6215fe09ee45f61f3a69731e" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T10:50:27.448Z" + }, + "updated_at": { + "$date": "2024-08-06T14:29:26.033Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6216125dee45f61f3a6973ee" + }, + "price": 2050000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "چیز برگر", + "description": "گوشت خالص،پنیر گودا،پنیر کاراملی،کاهو،خیارشو،گوجه،سیب زمینی سرخ شده", + "short_description": "", + "category": { + "$oid": "6215fe09ee45f61f3a69731e" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T10:54:21.601Z" + }, + "updated_at": { + "$date": "2024-08-06T14:29:09.789Z" + }, + "__v": 0, + "image": "food_1674240800071.png" +}, +{ + "_id": { + "$oid": "62161316ee45f61f3a6973f8" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "دبل برگر", + "description": "۲ تیکه گوشن خالص،پنیر گودا،پنیر کاراملی،گوجه،خیارشور،کاهو،سس دودی،سیب زمینی سرخ شده", + "short_description": "", + "category": { + "$oid": "6215fe09ee45f61f3a69731e" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T10:57:26.696Z" + }, + "updated_at": { + "$date": "2024-08-06T14:28:37.161Z" + }, + "__v": 0, + "image": "food_1674240855648.png" +}, +{ + "_id": { + "$oid": "62161407ee45f61f3a697405" + }, + "price": 2850000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "شف برگر", + "description": "۲ تیکه گوشت خالص،شنسل مرغ سوخاری،مغزران رشته رشته شده،دو عدد پنیر گودا،گوجه،خیارشور،کاهو،پنیر کاراملی،سس دودی،سیب زمینی سرخ شده", + "short_description": "", + "category": { + "$oid": "6215fe09ee45f61f3a69731e" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T11:01:27.919Z" + }, + "updated_at": { + "$date": "2024-08-06T14:28:28.052Z" + }, + "__v": 0, + "image": "food_1674241006305.png" +}, +{ + "_id": { + "$oid": "62161582ee45f61f3a697429" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "کوبیده", + "description": "۲ سیخ کوبیده و دورچین", + "short_description": "", + "category": { + "$oid": "62161535ee45f61f3a69741c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T11:07:46.128Z" + }, + "updated_at": { + "$date": "2024-08-06T14:28:05.954Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "621615eaee45f61f3a697433" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "جوجه کلاسیک", + "description": "سینه فیله تازه مرینت شده با زعفران ناب ایرانی،سس مخصوص و دورچین", + "short_description": "", + "category": { + "$oid": "62161535ee45f61f3a69741c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T11:09:30.202Z" + }, + "updated_at": { + "$date": "2024-08-06T14:27:32.070Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62161655ee45f61f3a697440" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "جوجه ترش گیلانی", + "description": "سینه فیله تازه مرینت شده با سس مخصوص و دورچین", + "short_description": "", + "category": { + "$oid": "62161535ee45f61f3a69741c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T11:11:17.151Z" + }, + "updated_at": { + "$date": "2024-08-06T14:27:09.425Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62161989ee45f61f3a6974cb" + }, + "price": 2600000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "میکس وزیری", + "description": "۱سیخ جوجه کلاسیک،۱سیخ کوبیده و دورچین", + "short_description": "", + "category": { + "$oid": "62161535ee45f61f3a69741c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T11:24:57.670Z" + }, + "updated_at": { + "$date": "2024-08-06T14:27:00.046Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62161b9fee45f61f3a69750d" + }, + "price": 3200000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "کباب برگ مجلسی", + "description": "فیله گوساله تازه و دورچین", + "short_description": "", + "category": { + "$oid": "62161535ee45f61f3a69741c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T11:33:51.300Z" + }, + "updated_at": { + "$date": "2024-08-06T14:26:35.891Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62161cdcee45f61f3a69751f" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "کباب سلطانی مخصوص", + "description": "یک سیخ کباب برگ به همراه یک سیخ کوبیده و دورچین", + "short_description": "", + "category": { + "$oid": "62161535ee45f61f3a69741c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T11:39:08.839Z" + }, + "updated_at": { + "$date": "2024-08-06T14:26:19.794Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62161d89ee45f61f3a697532" + }, + "price": 3400000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "بختیاری", + "description": "۱/۲ چنجه،۱/۲جوجه کلاسیک و دورچین", + "short_description": "", + "category": { + "$oid": "62161535ee45f61f3a69741c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-02-23T11:42:01.261Z" + }, + "updated_at": { + "$date": "2024-08-06T14:26:02.575Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62165ed3ee45f61f3a697984" + }, + "price": 460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e5d4a8d41eae80b0d5a" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-02-23T16:20:35.089Z" + }, + "updated_at": { + "$date": "2022-06-23T15:16:06.476Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6223896ea03b80e0a44eee18" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "سالاد سزار گریل", + "description": "کاهو،مرغ گریل شده،کروئانز،گوجه چری،پنیر پارمسان،سس سزار مخصوص،سالاد سزار یک رول", + "short_description": "", + "category": { + "$oid": "621e6021a03b80e0a44edd72" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-05T16:01:50.734Z" + }, + "updated_at": { + "$date": "2024-08-06T14:25:52.859Z" + }, + "__v": 0, + "image": "food_1674240050149.png" +}, +{ + "_id": { + "$oid": "6223ab43a03b80e0a44eefe3" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "سالاد سزار یک رول", + "description": "کاهو،مرغ سوخاری با پنیر،نان کروتانز،گوجه چری،پنیر پارمسان،سس سزار مخصوص", + "short_description": "", + "category": { + "$oid": "621e6021a03b80e0a44edd72" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-05T18:26:11.303Z" + }, + "updated_at": { + "$date": "2024-08-06T14:25:38.225Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250ad3a03b80e0a44ef783" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "ماست چکیده موسیر ", + "description": "", + "short_description": "", + "category": { + "$oid": "6225095ca03b80e0a44ef756" + }, + "index": 3, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:26:11.699Z" + }, + "updated_at": { + "$date": "2024-08-06T14:25:19.297Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250b4aa03b80e0a44ef79a" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "زیتون پرورده", + "description": "", + "short_description": "", + "category": { + "$oid": "6225095ca03b80e0a44ef756" + }, + "index": 5, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:28:10.443Z" + }, + "updated_at": { + "$date": "2024-08-06T14:24:53.275Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250caca03b80e0a44ef7c2" + }, + "price": 195000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "نوشابه کوکا ", + "description": "", + "short_description": "", + "category": { + "$oid": "62250c18a03b80e0a44ef7b2" + }, + "index": 1, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:34:04.102Z" + }, + "updated_at": { + "$date": "2024-08-06T14:24:37.313Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250ce7a03b80e0a44ef7cf" + }, + "price": 195000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "نوشابه فانتا", + "description": "", + "short_description": "", + "category": { + "$oid": "62250c18a03b80e0a44ef7b2" + }, + "index": 2, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:35:03.625Z" + }, + "updated_at": { + "$date": "2024-08-06T14:24:20.477Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250d1aa03b80e0a44ef7dc" + }, + "price": 195000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "نوشابه اسپرایت", + "description": "", + "short_description": "", + "category": { + "$oid": "62250c18a03b80e0a44ef7b2" + }, + "index": 3, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:35:54.359Z" + }, + "updated_at": { + "$date": "2024-08-06T14:24:10.177Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250d36a03b80e0a44ef7e6" + }, + "price": 195000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "نوشابه زیرو", + "description": "", + "short_description": "", + "category": { + "$oid": "62250c18a03b80e0a44ef7b2" + }, + "index": 4, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:36:22.468Z" + }, + "updated_at": { + "$date": "2024-08-06T14:23:38.169Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250d5da03b80e0a44ef7f4" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "دلستر (لیمو)", + "description": "", + "short_description": "", + "category": { + "$oid": "62250c18a03b80e0a44ef7b2" + }, + "index": 14, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:37:01.174Z" + }, + "updated_at": { + "$date": "2024-08-06T14:23:23.406Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250da9a03b80e0a44ef807" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "دلستر استوایی ", + "description": "", + "short_description": "", + "category": { + "$oid": "62250c18a03b80e0a44ef7b2" + }, + "index": 5, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:38:17.291Z" + }, + "updated_at": { + "$date": "2024-08-06T14:23:13.377Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250dfda03b80e0a44ef81e" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "دلستر هلو", + "description": "", + "short_description": "", + "category": { + "$oid": "62250c18a03b80e0a44ef7b2" + }, + "index": 6, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:39:41.436Z" + }, + "updated_at": { + "$date": "2024-08-06T14:22:57.026Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250e2ca03b80e0a44ef828" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "دلستر کلاسیک ", + "description": "", + "short_description": "", + "category": { + "$oid": "62250c18a03b80e0a44ef7b2" + }, + "index": 7, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:40:28.453Z" + }, + "updated_at": { + "$date": "2024-08-06T14:22:37.862Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62250e6fa03b80e0a44ef835" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "دوغ محلی", + "description": "پارچی", + "short_description": "", + "category": { + "$oid": "62250c18a03b80e0a44ef7b2" + }, + "index": 8, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-06T19:41:35.418Z" + }, + "updated_at": { + "$date": "2024-08-06T14:22:28.259Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "623091901cc95a37f0d6ac98" + }, + "price": 50000, + "stock": 98, + "static_discount": 0, + "active": true, + "name": "test", + "description": "test", + "short_description": "", + "category": { + "$oid": "6211ff10c647562f307ebada" + }, + "index": 1, + "storeId": { + "$oid": "61f7db200f1d12950f8ba1c9" + }, + "created_at": { + "$date": "2022-03-15T13:16:00.369Z" + }, + "updated_at": { + "$date": "2022-05-02T23:08:50.603Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238a6d893241795e82cdc84" + }, + "price": 2750000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "موکاورده (medium)", + "description": "سس پستو،ترکیبی از بهترین پنیرها،،شنسل مرغ،قارچ،فلفل دلمه رنگی،زیتون سیاه", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 8, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:24:56.447Z" + }, + "updated_at": { + "$date": "2024-08-06T14:22:17.369Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238a74193241795e82cdc91" + }, + "price": 3250000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "موکاورده (large)", + "description": "سس پستو،ترکیبی از بهترین پنیرها،،شنسل مرغ،قارچ،فلفل دلمه رنگی،زیتون سیاه", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 9, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:26:41.988Z" + }, + "updated_at": { + "$date": "2024-08-06T14:22:08.452Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238a80993241795e82cdc9e" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "اسپیشیال(medium)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،ژامبون مرغ و گوشت۹۰٪،کوکتل،یارچ،فلفل دلمه رنگی و ذرت", + "short_description": "", + "category": { + "$oid": "6215e2d2ee45f61f3a696e7b" + }, + "index": 1, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:30:01.840Z" + }, + "updated_at": { + "$date": "2024-08-06T14:21:50.499Z" + }, + "__v": 0, + "image": "food_1674240678726.png" +}, +{ + "_id": { + "$oid": "6238a89493241795e82cdcae" + }, + "price": 3400000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "اسپیشیال(large)", + "description": "سس ناپولتین،ترکیبی از بهترین پنیرها،ژامبون مرغ و گوشت۹۰٪،،کوکتل،قارچ،فلفل دلمه رنگی و ذرت", + "short_description": "", + "category": { + "$oid": "6215e2d2ee45f61f3a696e7b" + }, + "index": 2, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:32:20.893Z" + }, + "updated_at": { + "$date": "2024-08-06T14:21:39.355Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238aa2593241795e82cdcfc" + }, + "price": 2300000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "هالو پیتزا (medium)(hot)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،پپرونی،قارچ،فلفل هالو‌پینو", + "short_description": "", + "category": { + "$oid": "6215e2d2ee45f61f3a696e7b" + }, + "index": 5, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:39:01.993Z" + }, + "updated_at": { + "$date": "2024-08-06T14:21:29.099Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238aac193241795e82cdd09" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "هالو پیتزا(large)(hot)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،پپرونی،قارچ،فلفل هالوپینو", + "short_description": "", + "category": { + "$oid": "6215e2d2ee45f61f3a696e7b" + }, + "index": 6, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:41:37.315Z" + }, + "updated_at": { + "$date": "2024-08-06T14:21:17.619Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238ac0c93241795e82cdd33" + }, + "price": 2300000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "کانتونی (medium)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،مرغ فرآوری شده دودی،قارچ،فلفل دلمه رنگی،زیتون سیاه", + "short_description": "", + "category": { + "$oid": "6215e2d2ee45f61f3a696e7b" + }, + "index": 9, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:47:08.888Z" + }, + "updated_at": { + "$date": "2024-08-06T14:21:04.325Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238ac6993241795e82cdd3d" + }, + "price": 3550000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "کانتونی (large)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،مرغ فرآوری شده ،قارچ،فلفل دلمه رنگی،زیتون سیاه", + "short_description": "", + "category": { + "$oid": "6215e2d2ee45f61f3a696e7b" + }, + "index": 10, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:48:41.350Z" + }, + "updated_at": { + "$date": "2024-08-06T14:20:48.795Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238ad1c93241795e82cdd51" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "پیتزا سبزیجات (large)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،سبزیجان فصل،هویج کریسپی", + "short_description": "", + "category": { + "$oid": "6215e2d2ee45f61f3a696e7b" + }, + "index": 12, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:51:40.955Z" + }, + "updated_at": { + "$date": "2024-08-06T14:20:22.522Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238ad6e93241795e82cdd64" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "سبزیجات(medium)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،سبزیجات فصل،هویج کریسپی", + "short_description": "", + "category": { + "$oid": "6215e2d2ee45f61f3a696e7b" + }, + "index": 11, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:53:02.832Z" + }, + "updated_at": { + "$date": "2024-08-06T14:19:44.960Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238addc93241795e82cdd78" + }, + "price": 2650000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "سیرو استیک(medium)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،راسته گوساله طعم دارشده", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 1, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:54:52.120Z" + }, + "updated_at": { + "$date": "2024-08-06T14:19:27.734Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238ae2693241795e82cdd8b" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "سیرواستبک (large)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،راسته گوساله طعم دارشده", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 2, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:56:06.090Z" + }, + "updated_at": { + "$date": "2024-08-06T14:19:08.487Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238ae9d93241795e82cdda5" + }, + "price": 2600000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "سیسیلی(medium)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،شنسل مرغ طعم دار شده،قارچ ،فلفل هالوپینو،فلفل دلمه رنگی ،زیتون سیاه", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 3, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T16:58:05.331Z" + }, + "updated_at": { + "$date": "2024-08-06T14:18:49.930Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238af1793241795e82cddb8" + }, + "price": 3200000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "سیسیلی (large)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها، شنسل مرغ طعم دار شده،قارچ،فلفل هالوپینو،،فلفل دلمه رنگی،زیتون سیاه", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 4, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T17:00:07.604Z" + }, + "updated_at": { + "$date": "2024-08-06T14:18:34.154Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238afb993241795e82cddd0" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "پپرونی(medium)", + "description": " سس ناپولیتن،ترکیبی از بهترین پنیرها،پپرونی مرغوب،هالوپینو", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 5, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T17:02:49.484Z" + }, + "updated_at": { + "$date": "2024-08-06T14:17:44.077Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238b00093241795e82cdde3" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "پپرونی(large)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،پپرونی مرغوب،هالوپینو", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 10, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T17:04:00.649Z" + }, + "updated_at": { + "$date": "2024-08-06T14:17:06.793Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238b1d693241795e82cde30" + }, + "price": 2850000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "فورسیزن(medium)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،۱/۴راسته گوساله،۱/۴شنسل مرغ،۱/۴ژامبون،فلفل دلمه رنگی،زیتون سیاه", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 13, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T17:11:50.974Z" + }, + "updated_at": { + "$date": "2024-08-06T14:09:53.641Z" + }, + "__v": 0, + "image": "food_1674240292136.png" +}, +{ + "_id": { + "$oid": "6238b27993241795e82cde3d" + }, + "price": 3750000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "فورسیزن (large)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،۱/۴راسته گوساله،۱/۴شنسل مرغ،۱/۴ژامبون،فلفل دلمه رنگی،زیتون سیاه", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 14, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T17:14:33.350Z" + }, + "updated_at": { + "$date": "2024-08-06T14:09:40.725Z" + }, + "__v": 0, + "image": "food_1674240090739.png" +}, +{ + "_id": { + "$oid": "6238b32993241795e82cde65" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "پنه چیکن آلفردو", + "description": "فیله مرغ،پنه،پیازچه،قارچ،سس آلفردو،پنیر پارمسان", + "short_description": "", + "category": { + "$oid": "6215f665ee45f61f3a69723d" + }, + "index": 1, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T17:17:29.519Z" + }, + "updated_at": { + "$date": "2024-08-06T14:09:00.304Z" + }, + "__v": 0, + "image": "food_1674240144984.png" +}, +{ + "_id": { + "$oid": "6238b40693241795e82cde82" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "پنه پستو", + "description": "فیله مرغ،پنه،پیازچه،قارچ،سس پستو ،پنیر پارمسان", + "short_description": "", + "category": { + "$oid": "6215f665ee45f61f3a69723d" + }, + "index": 3, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T17:21:10.493Z" + }, + "updated_at": { + "$date": "2024-08-06T14:08:47.305Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238b48993241795e82cde8f" + }, + "price": 2600000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "خوراک اسپانیایی", + "description": "فیله کوساله تفت داده شده،فیله مرغ،فلفل دلمه،پیاز ژولین،قارچ،سس مخصوص،نان بروچن", + "short_description": "", + "category": { + "$oid": "6215f665ee45f61f3a69723d" + }, + "index": 4, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T17:23:21.869Z" + }, + "updated_at": { + "$date": "2024-08-06T14:07:25.085Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238b4f593241795e82cdea1" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "بیف استراگانف", + "description": "فیله گوساله،پیازچه،قارچ،سس آلفردو،سیب زمینی بیفی،پنیر پارمسان", + "short_description": "", + "category": { + "$oid": "6215f665ee45f61f3a69723d" + }, + "index": 5, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T17:25:09.126Z" + }, + "updated_at": { + "$date": "2023-12-14T17:09:21.478Z" + }, + "__v": 0, + "image": "food_1674240174016.png" +}, +{ + "_id": { + "$oid": "6238b5e393241795e82cdedf" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "پنه بیف آلفردو", + "description": "فیله گوساله،پیازچه،قارچ،سس آلفردو،گوجه گیلاسی تفت داده شده،پوره لبو", + "short_description": "", + "category": { + "$oid": "6215f665ee45f61f3a69723d" + }, + "index": 2, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T17:29:07.764Z" + }, + "updated_at": { + "$date": "2024-08-06T14:06:52.747Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238be9c93241795e82ce006" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "مارگریتا(medium)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،گوجه اسلایس ،برگ رییحان", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 6, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T18:06:20.408Z" + }, + "updated_at": { + "$date": "2024-08-06T14:06:35.840Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6238c04d93241795e82ce028" + }, + "price": 1690000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "مارگریتا(large)", + "description": "سس ناپولیتن،ترکیبی از بهترین پنیرها،گوجه اسلایس ، برگ ریحان", + "short_description": "", + "category": { + "$oid": "6215e29cee45f61f3a696e71" + }, + "index": 7, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-03-21T18:13:33.334Z" + }, + "updated_at": { + "$date": "2024-08-06T14:06:09.330Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6239bfac93241795e82ce30f" + }, + "price": 290000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ریسترتو کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T12:23:08.597Z" + }, + "updated_at": { + "$date": "2022-04-16T12:54:21.219Z" + }, + "__v": 0, + "image": "food_1650113391211.png" +}, +{ + "_id": { + "$oid": "6239bfea93241795e82ce31c" + }, + "price": 390000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": " ریسترتو اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T12:24:10.873Z" + }, + "updated_at": { + "$date": "2022-04-16T12:54:33.242Z" + }, + "__v": 0, + "image": "food_1650113429909.png" +}, +{ + "_id": { + "$oid": "6239c00993241795e82ce326" + }, + "price": 290000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T12:24:41.047Z" + }, + "updated_at": { + "$date": "2022-04-16T12:48:20.781Z" + }, + "__v": 0, + "image": "food_1649615265281.png" +}, +{ + "_id": { + "$oid": "6239c04193241795e82ce333" + }, + "price": 390000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T12:25:37.210Z" + }, + "updated_at": { + "$date": "2022-04-10T18:26:50.647Z" + }, + "__v": 0, + "image": "food_1649615208910.png" +}, +{ + "_id": { + "$oid": "6239c06793241795e82ce33f" + }, + "price": 290000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لونگو کامرشیال", + "description": "60 میلی لیتر عصاره‌ی قهوه‌ با ترکیب کامرشیال", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T12:26:15.958Z" + }, + "updated_at": { + "$date": "2022-04-16T12:53:55.213Z" + }, + "__v": 0, + "image": "food_1650113477508.png" +}, +{ + "_id": { + "$oid": "6239c08393241795e82ce34a" + }, + "price": 390000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لونگو اسپشیال", + "description": "60 میلی لیتر عصاره‌ی قهوه‌ با ترکیب اسپشیال", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T12:26:43.903Z" + }, + "updated_at": { + "$date": "2022-04-16T12:53:17.718Z" + }, + "__v": 0, + "image": "food_1650113526078.png" +}, +{ + "_id": { + "$oid": "6239c0bc93241795e82ce368" + }, + "price": 310000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو کومپانو", + "description": "310000", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T12:27:40.191Z" + }, + "updated_at": { + "$date": "2022-04-10T18:25:00.829Z" + }, + "__v": 0, + "image": "food_1649615098733.png" +}, +{ + "_id": { + "$oid": "6239c10a93241795e82ce381" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو پیکولو", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T12:28:58.408Z" + }, + "updated_at": { + "$date": "2022-04-10T18:24:21.760Z" + }, + "__v": 0, + "image": "food_1649615060222.png" +}, +{ + "_id": { + "$oid": "623a113f93241795e82ceefe" + }, + "price": 440000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مگنوم پرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:11:11.670Z" + }, + "updated_at": { + "$date": "2022-03-22T18:15:11.201Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "623a117b93241795e82cef0f" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "أفاگاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:12:11.144Z" + }, + "updated_at": { + "$date": "2022-03-22T18:12:11.144Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "623a119593241795e82cef1c" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:12:37.405Z" + }, + "updated_at": { + "$date": "2022-04-10T18:18:27.259Z" + }, + "__v": 0, + "image": "food_1649614627379.png" +}, +{ + "_id": { + "$oid": "623a11ab93241795e82cef27" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": " آمریکانو اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:12:59.930Z" + }, + "updated_at": { + "$date": "2022-04-10T18:17:52.769Z" + }, + "__v": 0, + "image": "food_1649614589917.png" +}, +{ + "_id": { + "$oid": "623a11d193241795e82cef36" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فلت وایت", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:13:37.146Z" + }, + "updated_at": { + "$date": "2022-04-10T18:16:10.619Z" + }, + "__v": 0, + "image": "food_1649614568101.png" +}, +{ + "_id": { + "$oid": "623a11ea93241795e82cef40" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:14:02.835Z" + }, + "updated_at": { + "$date": "2022-04-10T18:15:47.192Z" + }, + "__v": 0, + "image": "food_1649614545113.png" +}, +{ + "_id": { + "$oid": "623a125a93241795e82cef63" + }, + "price": 490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:15:54.177Z" + }, + "updated_at": { + "$date": "2022-04-10T18:15:18.419Z" + }, + "__v": 0, + "image": "food_1649614515360.png" +}, +{ + "_id": { + "$oid": "623a129493241795e82cef70" + }, + "price": 530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته + سیروپ(کارامل ، فندوق ، وانیل)", + "description": "سیروپ‌های انتخابی: ۱.وانیل ۲.کارامل ۳.شکلات ۴.فندق ۵.کوکی ۶.شکلات سفید ۷.آیریش", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:16:52.060Z" + }, + "updated_at": { + "$date": "2022-04-10T18:14:40.150Z" + }, + "__v": 0, + "image": "food_1649614477212.png" +}, +{ + "_id": { + "$oid": "623a12b693241795e82cef7f" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:17:26.922Z" + }, + "updated_at": { + "$date": "2022-03-22T18:17:26.922Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "623a12d093241795e82cef89" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پینات باتر لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:17:52.938Z" + }, + "updated_at": { + "$date": "2022-04-10T18:11:58.663Z" + }, + "__v": 0, + "image": "food_1649614316580.png" +}, +{ + "_id": { + "$oid": "623a12f193241795e82cef95" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چاکلت کوکی لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:18:25.275Z" + }, + "updated_at": { + "$date": "2022-03-22T18:18:25.275Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "623a130e93241795e82cefa5" + }, + "price": 630000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لوتوس لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:18:54.468Z" + }, + "updated_at": { + "$date": "2022-04-10T18:11:26.832Z" + }, + "__v": 0, + "image": "food_1649614283859.png" +}, +{ + "_id": { + "$oid": "623a132c93241795e82cefaf" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته کارامل نمکی", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:19:24.757Z" + }, + "updated_at": { + "$date": "2022-04-10T18:10:46.239Z" + }, + "__v": 0, + "image": "food_1649614243191.png" +}, +{ + "_id": { + "$oid": "623a136293241795e82cefc8" + }, + "price": 520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا فندوقی", + "description": "", + "short_description": "", + "category": { + "$oid": "62379461c1bb048b321cd974" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:20:18.941Z" + }, + "updated_at": { + "$date": "2022-04-10T18:07:08.799Z" + }, + "__v": 0, + "image": "food_1649613980682.png" +}, +{ + "_id": { + "$oid": "623a138a93241795e82cefd7" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پن شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "623794dbc1bb048b321cd99d" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:20:58.607Z" + }, + "updated_at": { + "$date": "2022-04-10T18:05:03.634Z" + }, + "__v": 0, + "image": "food_1649613901192.png" +}, +{ + "_id": { + "$oid": "623a13ad93241795e82cefe1" + }, + "price": 330000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کروسان ساده", + "description": "", + "short_description": "", + "category": { + "$oid": "623794dbc1bb048b321cd99d" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:21:33.741Z" + }, + "updated_at": { + "$date": "2022-04-10T18:04:18.516Z" + }, + "__v": 0, + "image": "food_1649613856633.png" +}, +{ + "_id": { + "$oid": "623a13cb93241795e82cefeb" + }, + "price": 420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کروسان بادام", + "description": "", + "short_description": "", + "category": { + "$oid": "623794dbc1bb048b321cd99d" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:22:03.597Z" + }, + "updated_at": { + "$date": "2022-04-10T18:03:19.322Z" + }, + "__v": 0, + "image": "food_1649613797467.png" +}, +{ + "_id": { + "$oid": "623a140293241795e82ceffb" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "62379490c1bb048b321cd980" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:22:58.184Z" + }, + "updated_at": { + "$date": "2022-04-10T18:02:48.332Z" + }, + "__v": 0, + "image": "food_1649613765932.png" +}, +{ + "_id": { + "$oid": "623a142093241795e82cf005" + }, + "price": 390000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "62379490c1bb048b321cd980" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:23:28.878Z" + }, + "updated_at": { + "$date": "2022-04-10T18:02:05.551Z" + }, + "__v": 0, + "image": "food_1649613723673.png" +}, +{ + "_id": { + "$oid": "623a144093241795e82cf00f" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مارشمالو چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "62379490c1bb048b321cd980" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:24:00.163Z" + }, + "updated_at": { + "$date": "2022-04-10T18:01:44.648Z" + }, + "__v": 0, + "image": "food_1649613702548.png" +}, +{ + "_id": { + "$oid": "623a145893241795e82cf019" + }, + "price": 390000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "62379490c1bb048b321cd980" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:24:24.153Z" + }, + "updated_at": { + "$date": "2022-04-10T18:01:18.494Z" + }, + "__v": 0, + "image": "food_1649613676302.png" +}, +{ + "_id": { + "$oid": "623a148193241795e82cf023" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیگنیچر شکر سیاه", + "description": "", + "short_description": "", + "category": { + "$oid": "62379490c1bb048b321cd980" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:25:05.023Z" + }, + "updated_at": { + "$date": "2022-03-22T18:25:05.023Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "623a14a293241795e82cf02f" + }, + "price": 430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلدبرو", + "description": "قهوه‌ی سرد عصاره‌گیری شده؛ در طعم‌های لیمو، بلوبری، آیریش و مالت", + "short_description": "", + "category": { + "$oid": "6237949ec1bb048b321cd989" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:25:38.597Z" + }, + "updated_at": { + "$date": "2022-04-10T17:59:51.062Z" + }, + "__v": 0, + "image": "food_1649613589300.png" +}, +{ + "_id": { + "$oid": "623a14bf93241795e82cf04b" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نیتروژن کافی", + "description": "", + "short_description": "", + "category": { + "$oid": "6237949ec1bb048b321cd989" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:26:07.175Z" + }, + "updated_at": { + "$date": "2022-03-22T18:27:11.266Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "623a14f193241795e82cf062" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "6237949ec1bb048b321cd989" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:26:57.641Z" + }, + "updated_at": { + "$date": "2022-04-10T17:58:32.461Z" + }, + "__v": 0, + "image": "food_1649613510872.png" +}, +{ + "_id": { + "$oid": "623a153a93241795e82cf088" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "6237949ec1bb048b321cd989" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:28:10.244Z" + }, + "updated_at": { + "$date": "2022-04-10T17:58:00.208Z" + }, + "__v": 0, + "image": "food_1649613478658.png" +}, +{ + "_id": { + "$oid": "623a156893241795e82cf093" + }, + "price": 490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته+ سیروپ", + "description": "", + "short_description": "", + "category": { + "$oid": "6237949ec1bb048b321cd989" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:28:56.279Z" + }, + "updated_at": { + "$date": "2022-04-10T17:57:35.589Z" + }, + "__v": 0, + "image": "food_1649613453945.png" +}, +{ + "_id": { + "$oid": "623a159693241795e82cf0a0" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیگنیچر شکر سیاه ", + "description": "", + "short_description": "", + "category": { + "$oid": "6237949ec1bb048b321cd989" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:29:42.158Z" + }, + "updated_at": { + "$date": "2022-03-22T18:29:42.158Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "623a15b393241795e82cf0ad" + }, + "price": 430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "V60", + "description": "", + "short_description": "", + "category": { + "$oid": "623794afc1bb048b321cd993" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:30:11.477Z" + }, + "updated_at": { + "$date": "2022-04-10T17:57:04.099Z" + }, + "__v": 0, + "image": "food_1649613422061.png" +}, +{ + "_id": { + "$oid": "623a15cb93241795e82cf0ba" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جینا", + "description": "", + "short_description": "", + "category": { + "$oid": "623794afc1bb048b321cd993" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:30:35.064Z" + }, + "updated_at": { + "$date": "2022-04-10T17:56:40.410Z" + }, + "__v": 0, + "image": "food_1649613398668.png" +}, +{ + "_id": { + "$oid": "623a15f993241795e82cf0c4" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کمکس", + "description": "", + "short_description": "", + "category": { + "$oid": "623794afc1bb048b321cd993" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:31:21.899Z" + }, + "updated_at": { + "$date": "2022-04-10T17:56:14.703Z" + }, + "__v": 0, + "image": "food_1649613372112.png" +}, +{ + "_id": { + "$oid": "623a161993241795e82cf0ce" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فرنچ پرس", + "description": "", + "short_description": "", + "category": { + "$oid": "623794afc1bb048b321cd993" + }, + "index": 0, + "storeId": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "created_at": { + "$date": "2022-03-22T18:31:53.149Z" + }, + "updated_at": { + "$date": "2022-04-10T17:55:50.022Z" + }, + "__v": 0, + "image": "food_1649613348050.png" +}, +{ + "_id": { + "$oid": "6241c0e193241795e82d185b" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فلت وایت %100", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e304a8d41eae80b0d4f" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-03-28T14:06:25.442Z" + }, + "updated_at": { + "$date": "2022-03-28T14:06:25.442Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6241c81793241795e82d18f5" + }, + "price": 280000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای نعنا", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3e794a8d41eae80b0d70" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-03-28T14:37:11.821Z" + }, + "updated_at": { + "$date": "2022-06-22T15:41:42.112Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "624b309d93241795e82d4733" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "چیکن برگر", + "description": "شنسل مرغ گریل شده،گوجه،خیارشور،کاهو،پنیرگودا،سس دودی،سیب زمینی سرخ شده", + "short_description": "", + "category": { + "$oid": "6215fe09ee45f61f3a69731e" + }, + "index": 1, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-04-04T17:53:33.291Z" + }, + "updated_at": { + "$date": "2024-08-06T14:05:50.682Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "624c755693241795e82d4a51" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اوشن", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-04-05T16:59:02.513Z" + }, + "updated_at": { + "$date": "2022-06-22T17:04:18.529Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6274067b3b0eb949b49c7708" + }, + "price": 5000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "test2", + "description": "", + "short_description": "", + "category": { + "$oid": "621202be7d3b1d322849e684" + }, + "index": 1, + "storeId": { + "$oid": "61f7db200f1d12950f8ba1c9" + }, + "created_at": { + "$date": "2022-05-05T17:16:43.948Z" + }, + "updated_at": { + "$date": "2022-05-05T17:16:43.948Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627a6da52353df2fe650f3f2" + }, + "price": 960000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هالومی چیز برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3dcb4a8d41eae80b0d21" + }, + "index": 7, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-05-10T13:50:29.637Z" + }, + "updated_at": { + "$date": "2022-05-10T13:50:29.637Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627bf55f2353df2fe6510866" + }, + "price": 490000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "کته برنج زعفرانی", + "description": "", + "short_description": "", + "category": { + "$oid": "62161535ee45f61f3a69741c" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-11T17:41:51.355Z" + }, + "updated_at": { + "$date": "2024-08-06T14:05:26.418Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627d242e2353df2fe6511d15" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی سرخ شده", + "description": "", + "short_description": "", + "category": { + "$oid": "6225095ca03b80e0a44ef756" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-12T15:13:50.430Z" + }, + "updated_at": { + "$date": "2025-08-19T09:08:58.419Z" + }, + "__v": 0, + "image": "food_1674240260019.png" +}, +{ + "_id": { + "$oid": "627d24662353df2fe6511d2b" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "اسکوپ بستنی", + "description": "", + "short_description": "", + "category": { + "$oid": "628119add65610bd301c5919" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-12T15:14:46.560Z" + }, + "updated_at": { + "$date": "2025-08-19T09:12:33.734Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f581fec44ae525a15240d" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی سرخ کرده", + "description": "", + "short_description": "", + "category": { + "$oid": "627f52d2ec44ae525a1522db" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:19:59.584Z" + }, + "updated_at": { + "$date": "2023-05-30T17:05:20.828Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f58acec44ae525a152427" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی مخصوص پیانو", + "description": "سیب زمینی ، ژامبون ، قارچ ، ذرت", + "short_description": "", + "category": { + "$oid": "627f52d2ec44ae525a1522db" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:22:20.979Z" + }, + "updated_at": { + "$date": "2023-05-30T17:06:07.844Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f613fec44ae525a152497" + }, + "price": 780000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قارچ سوخاری", + "description": "دوازده عدد قارچ سوخاری شده", + "short_description": "", + "category": { + "$oid": "627f52d2ec44ae525a1522db" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:58:55.701Z" + }, + "updated_at": { + "$date": "2023-04-30T13:27:54.520Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f6160ec44ae525a1524a4" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیاز حلقه ای", + "description": "شش عدد پیاز حلقه ای", + "short_description": "", + "category": { + "$oid": "627f52d2ec44ae525a1522db" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T07:59:28.371Z" + }, + "updated_at": { + "$date": "2023-02-15T13:28:50.118Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f6185ec44ae525a1524ae" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نان سیر", + "description": "نان طعم دار شده با کره و سیر تازه", + "short_description": "", + "category": { + "$oid": "627f52d2ec44ae525a1522db" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T08:00:05.771Z" + }, + "updated_at": { + "$date": "2023-03-09T16:25:18.530Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f61a9ec44ae525a1524b8" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رول پنیری", + "description": "نام طعم دار شده، پنیر چدار، ژامبون", + "short_description": "", + "category": { + "$oid": "627f52d2ec44ae525a1522db" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T08:00:41.862Z" + }, + "updated_at": { + "$date": "2023-02-15T13:28:06.650Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f6256ec44ae525a152507" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت فرایز", + "description": "سیب زمینی ، سس قارچ", + "short_description": "", + "category": { + "$oid": "627f52d2ec44ae525a1522db" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T08:03:34.970Z" + }, + "updated_at": { + "$date": "2023-05-30T17:05:47.370Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f6bf0ec44ae525a1525d0" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": " برگر ایتالیایی", + "description": "برگر 200 گرمی ، سیب زمینی چدار، پنیر، قارچ، ژامبون", + "short_description": "", + "category": { + "$oid": "627f5634ec44ae525a152397" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T08:44:32.979Z" + }, + "updated_at": { + "$date": "2023-06-17T10:53:03.726Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f6c31ec44ae525a1525ea" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ مخصوص پیانو", + "description": "ژامبون ، هات داگ ، قارچ ، پنیر", + "short_description": "", + "category": { + "$oid": "627f5634ec44ae525a152397" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T08:45:37.231Z" + }, + "updated_at": { + "$date": "2023-06-17T10:52:51.678Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f6caeec44ae525a152604" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله مرغ", + "description": "دوعدد فیله سوخاری ، گوجه ، کاهو ، پنیر ورقه ای", + "short_description": "", + "category": { + "$oid": "627f5634ec44ae525a152397" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T08:47:42.999Z" + }, + "updated_at": { + "$date": "2023-06-17T10:52:41.278Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f6cd2ec44ae525a15260e" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مایتی برگر", + "description": "یکی عدد زینگر، یک عدد برگر، دولایه پنیر ورقه ای ، قارچ", + "short_description": "", + "category": { + "$oid": "627f5634ec44ae525a152397" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T08:48:18.911Z" + }, + "updated_at": { + "$date": "2023-06-17T10:52:28.885Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f6cf1ec44ae525a152622" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رستبیف", + "description": "فیله گوساله، پنیر پیتزا، پنیر ورقه ای", + "short_description": "", + "category": { + "$oid": "627f5634ec44ae525a152397" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T08:48:49.481Z" + }, + "updated_at": { + "$date": "2023-06-17T10:52:16.379Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f80e4ec44ae525a1527b2" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استیک", + "description": "فیله گوساله،قارچ ، پنیر ورقه ای", + "short_description": "", + "category": { + "$oid": "627f5634ec44ae525a152397" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T10:13:56.124Z" + }, + "updated_at": { + "$date": "2023-06-17T10:51:59.995Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f8108ec44ae525a1527c4" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ژامبون تنوری", + "description": "ژامبون سه لایه، پنیر پیتزا، قارچ ، کاهو، گوجه", + "short_description": "", + "category": { + "$oid": "627f5634ec44ae525a152397" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T10:14:32.350Z" + }, + "updated_at": { + "$date": "2023-06-17T10:51:47.275Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f8167ec44ae525a1527f8" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ تنوری", + "description": "هات داگ، پنیر، کاهو، گوجه", + "short_description": "", + "category": { + "$oid": "627f5634ec44ae525a152397" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T10:16:07.094Z" + }, + "updated_at": { + "$date": "2023-06-17T10:51:35.485Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f81a0ec44ae525a15280c" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر تک", + "description": "یک عدد برگر، کاهو ، گوجه ، پنیر ورقه ای، خیارشور", + "short_description": "", + "category": { + "$oid": "627f5634ec44ae525a152397" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T10:17:04.131Z" + }, + "updated_at": { + "$date": "2023-06-17T10:51:22.368Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f81c0ec44ae525a152819" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر دبل", + "description": "دو عدد برگر150 گرمی، قارچ ، پنیر، کاهو ، گوجه ، خیارشور", + "short_description": "", + "category": { + "$oid": "627f5634ec44ae525a152397" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T10:17:36.520Z" + }, + "updated_at": { + "$date": "2023-06-17T10:51:09.495Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f959fec44ae525a15298e" + }, + "price": 2050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مخصوص پیانو", + "description": "ژامبون گوشت ۸۰٪، فیله مرغ، فلفل، زیتون، قارچ", + "short_description": "", + "category": { + "$oid": "627f5657ec44ae525a1523a3" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T11:42:23.591Z" + }, + "updated_at": { + "$date": "2023-06-17T10:45:13.583Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f95f9ec44ae525a1529a8" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مخلوط", + "description": "ژامبون گوشت، هات داگ ، فلفل دلمه، قارچ", + "short_description": "", + "category": { + "$oid": "627f5657ec44ae525a1523a3" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T11:43:53.516Z" + }, + "updated_at": { + "$date": "2023-06-17T10:45:01.806Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f97d9ec44ae525a1529f8" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا رست بیف", + "description": "گوشت گوساله، پنیر ورقه ای، فلفل دلمه، قارچ", + "short_description": "", + "category": { + "$oid": "627f5657ec44ae525a1523a3" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T11:51:53.144Z" + }, + "updated_at": { + "$date": "2023-06-17T10:44:48.723Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f980eec44ae525a152a02" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گریل چیکن", + "description": "فیله مرغ، فلفل دلمه ، قارچ", + "short_description": "", + "category": { + "$oid": "627f5657ec44ae525a1523a3" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T11:52:46.003Z" + }, + "updated_at": { + "$date": "2023-06-17T10:44:33.899Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f9888ec44ae525a152a1f" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "یونانی", + "description": "گوشت چرخ کرده طعم دار شده، گوجه ، قارچ", + "short_description": "", + "category": { + "$oid": "627f5657ec44ae525a1523a3" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T11:54:48.782Z" + }, + "updated_at": { + "$date": "2023-06-17T10:44:20.899Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f994dec44ae525a152a30" + }, + "price": 1730000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوپریم", + "description": "ژامبون گوشت، ژامبون مرغ، قارچ", + "short_description": "", + "category": { + "$oid": "627f5657ec44ae525a1523a3" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T11:58:05.950Z" + }, + "updated_at": { + "$date": "2023-06-17T10:44:08.976Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f9976ec44ae525a152a3a" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ویکتوریا", + "description": "ژامبون مرغ، فلفل دلمه ای، قارچ", + "short_description": "", + "category": { + "$oid": "627f5657ec44ae525a1523a3" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T11:58:46.203Z" + }, + "updated_at": { + "$date": "2023-06-17T10:43:55.529Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f99e6ec44ae525a152a61" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پپرونی", + "description": "ژامبون پپرونی، قارچ ، فلفل دلمه ای", + "short_description": "", + "category": { + "$oid": "627f5657ec44ae525a1523a3" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T12:00:38.988Z" + }, + "updated_at": { + "$date": "2023-06-17T10:43:44.379Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f9a0eec44ae525a152a71" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سبزیجات", + "description": "زیتون، ذرت، قارچ، گوجه ، فلفل دلمه", + "short_description": "", + "category": { + "$oid": "627f5657ec44ae525a1523a3" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T12:01:18.536Z" + }, + "updated_at": { + "$date": "2023-06-17T10:43:14.249Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627f9b26ec44ae525a152a96" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کالزیا", + "description": "دولایه خمیر ، ژامبون گوشت ، فیله مرغ، قارچ ، پنیر ورقه ای", + "short_description": "", + "category": { + "$oid": "627f5657ec44ae525a1523a3" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T12:05:58.072Z" + }, + "updated_at": { + "$date": "2023-06-17T10:43:01.876Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fa0e0ec44ae525a152ac7" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیده گوشت", + "description": "خمیر مخصوص پیده ، گوشت گوساله، پنیر، گوجه، فلفل چارلستون", + "short_description": "", + "category": { + "$oid": "627f56fdec44ae525a1523e8" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T12:30:24.918Z" + }, + "updated_at": { + "$date": "2023-06-17T10:42:13.826Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fa2e8ec44ae525a152ae7" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیده مرغ", + "description": "خمیر مخصوص پیده، سینه مرغ، پنیر ، گوجه ، فلفل چارلستون", + "short_description": "", + "category": { + "$oid": "627f56fdec44ae525a1523e8" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T12:39:04.713Z" + }, + "updated_at": { + "$date": "2023-06-17T10:42:23.979Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fa30cec44ae525a152af1" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیده قارچ و بادمجان", + "description": "خمیر مخصوص پیده، قارچ و بادمجان ، پنیر، گوجه ، فلفل چارلستون", + "short_description": "", + "category": { + "$oid": "627f56fdec44ae525a1523e8" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T12:39:40.264Z" + }, + "updated_at": { + "$date": "2023-06-17T10:42:49.453Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fa35fec44ae525a152b0b" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب برگر", + "description": "خمیر مخصوص،۱ لایه ژامبون ، پ عدد برگر مزه دار شده ، پنیر ، سیب زمینی سرخ شده", + "short_description": "", + "category": { + "$oid": "627f56c3ec44ae525a1523d9" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T12:41:03.993Z" + }, + "updated_at": { + "$date": "2023-06-17T11:00:56.926Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fa39dec44ae525a152b32" + }, + "price": 2050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب رست بیف", + "description": "خمیر مخصوص، گوشت گوساله، قارچ مزه دار شده ، پنیر، سیب زمینی سرخ شده", + "short_description": "", + "category": { + "$oid": "627f56c3ec44ae525a1523d9" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T12:42:05.062Z" + }, + "updated_at": { + "$date": "2023-06-17T11:00:44.139Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fa56dec44ae525a152b58" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب ژامبون", + "description": "خمیر مخصوص، ژامبون گوشت، قارچ مزه دار شده ، پنیر، سیب زمینی سرخ شده", + "short_description": "", + "category": { + "$oid": "627f56c3ec44ae525a1523d9" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T12:49:49.902Z" + }, + "updated_at": { + "$date": "2023-06-17T11:00:32.025Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fa6f2ec44ae525a152b9f" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب سبزیجات", + "description": "خمیر مخصوص، انواع سبزیجات، سس مخصوص ، پنیر، سیب زمینی سرخ شده", + "short_description": "", + "category": { + "$oid": "627f56c3ec44ae525a1523d9" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T12:56:18.931Z" + }, + "updated_at": { + "$date": "2023-06-17T11:00:21.329Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fb734ec44ae525a152da3" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سه تیکه (نرمال / اسپایسی)", + "description": "سه عدد فیله مرغ سوخاری ، سیب زمینی ، سالاد مکزیکی", + "short_description": "", + "category": { + "$oid": "627f56a4ec44ae525a1523c7" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:05:40.521Z" + }, + "updated_at": { + "$date": "2023-06-17T11:48:32.705Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fb751ec44ae525a152dad" + }, + "price": 2450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنج تیکه (نرمال / اسپایسی)", + "description": "پنج عدد فیله مرغ سوخاری ، سیب زمینی ، سالاد مکزیکی", + "short_description": "", + "category": { + "$oid": "627f56a4ec44ae525a1523c7" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:06:09.697Z" + }, + "updated_at": { + "$date": "2023-06-17T10:59:19.282Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fb785ec44ae525a152dc8" + }, + "price": 2050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیزا پیزا", + "description": "دو عدد شنیسل مرغ تند ، پپرونی ، فلفل دلمه ای ، پنیر", + "short_description": "", + "category": { + "$oid": "627f56a4ec44ae525a1523c7" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:07:01.931Z" + }, + "updated_at": { + "$date": "2023-06-17T10:59:03.807Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fb7beec44ae525a152de6" + }, + "price": 1950000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "دبل دان", + "description": "دو عدد شنیسل مرغ تند ، پنیر زرد ، قارچ ، ژامبون", + "short_description": "", + "category": { + "$oid": "627f56a4ec44ae525a1523c7" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:07:58.442Z" + }, + "updated_at": { + "$date": "2023-06-17T10:58:48.323Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fb7ddec44ae525a152df0" + }, + "price": 2050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن بنیه", + "description": "چهار عدد فیله مرغ ، سیب زمینی ، سالاد مکزیکی ، سس بنیه", + "short_description": "", + "category": { + "$oid": "627f56a4ec44ae525a1523c7" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:08:29.072Z" + }, + "updated_at": { + "$date": "2023-06-17T10:58:33.067Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fb800ec44ae525a152e07" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میگو بنیه", + "description": "120 گرم میگو ، سیب زمینی ، کاهو ، سالاد مکزیکی ، سس بنیه", + "short_description": "", + "category": { + "$oid": "627f56a4ec44ae525a1523c7" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:09:04.651Z" + }, + "updated_at": { + "$date": "2023-06-17T10:58:16.559Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fb818ec44ae525a152e11" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میگو سوخاری", + "description": "۱۳۰ گرم میگو ، سیب زمینی ، کاهو ، سالاد مکزیکی", + "short_description": "", + "category": { + "$oid": "627f56a4ec44ae525a1523c7" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:09:28.741Z" + }, + "updated_at": { + "$date": "2023-06-17T10:58:01.495Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fb938ec44ae525a152e55" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیسکا", + "description": "کاهو ، فیله گوساله ، خیار ، زیتون ، ذرت ، گوجه گیلاسی ، بالزامیک", + "short_description": "", + "category": { + "$oid": "627f56b2ec44ae525a1523d0" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:14:16.303Z" + }, + "updated_at": { + "$date": "2023-05-30T17:16:59.861Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fb984ec44ae525a152e7a" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سزار ( سوخاری )", + "description": "کاهو، نان تست ، فیله مرغ ، گوجه گیلاسی، زیتون", + "short_description": "", + "category": { + "$oid": "627f56b2ec44ae525a1523d0" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:15:32.613Z" + }, + "updated_at": { + "$date": "2023-05-30T17:16:47.977Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fb9c2ec44ae525a152eaa" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سزار ( گریل )", + "description": "کاهو، نان تست ، فیله مرغ ، گوجه گیلاسی، زیتون", + "short_description": "", + "category": { + "$oid": "627f56b2ec44ae525a1523d0" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:16:34.109Z" + }, + "updated_at": { + "$date": "2023-05-30T17:16:36.631Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fb9ffec44ae525a152ecb" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مخصوص", + "description": "کاهو ، گوجه ، زیتون ، قارچ", + "short_description": "", + "category": { + "$oid": "627f56b2ec44ae525a1523d0" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:17:35.153Z" + }, + "updated_at": { + "$date": "2023-05-30T17:16:25.652Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fba2dec44ae525a152eec" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایتالیایی", + "description": "پاستا، ژامبون ، نخود فرنگی", + "short_description": "", + "category": { + "$oid": "627f56b2ec44ae525a1523d0" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:18:21.280Z" + }, + "updated_at": { + "$date": "2023-05-30T17:15:57.959Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fba55ec44ae525a152f0a" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فصل", + "description": "کاهو ، ژامبون ، خیار ، گوجه ، سس مخصوص", + "short_description": "", + "category": { + "$oid": "627f56b2ec44ae525a1523d0" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:19:01.481Z" + }, + "updated_at": { + "$date": "2023-05-30T17:15:48.327Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fbebfec44ae525a152f62" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیف استراگانف", + "description": "گوشت تکه ای، قارچ ، سس بشامل، خامه ، چیپس", + "short_description": "", + "category": { + "$oid": "627f5717ec44ae525a1523f1" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:37:51.330Z" + }, + "updated_at": { + "$date": "2023-06-17T11:01:22.887Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fbf08ec44ae525a152f70" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن استراگانف", + "description": "مرغ تکه ای ، قارچ ، سس بشامل ، خامه ، چیپس", + "short_description": "", + "category": { + "$oid": "627f5717ec44ae525a1523f1" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:39:04.884Z" + }, + "updated_at": { + "$date": "2023-06-17T11:01:09.374Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fc1deec44ae525a152fcc" + }, + "price": 3600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله مینیون", + "description": "۳ عدد فیله گوساله ۸۰ گرمی ، سس قارچ و کره ، دورچین مخصوص", + "short_description": "", + "category": { + "$oid": "627f5693ec44ae525a1523be" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:51:10.919Z" + }, + "updated_at": { + "$date": "2023-06-17T10:54:59.177Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fc201ec44ae525a152fd6" + }, + "price": 3450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استیک با سس قارچ", + "description": "۲۵۰ گرم فیله گوساله ، سس قارچ، دورچین مخصوص", + "short_description": "", + "category": { + "$oid": "627f5693ec44ae525a1523be" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:51:45.893Z" + }, + "updated_at": { + "$date": "2023-06-17T10:53:40.311Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fc22aec44ae525a152fe6" + }, + "price": 3450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استیک بالزامیک", + "description": "۲۵۰ گرم فیله گوساله، سس بالزامیک ، دورچین مخصوص", + "short_description": "", + "category": { + "$oid": "627f5693ec44ae525a1523be" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:52:26.872Z" + }, + "updated_at": { + "$date": "2023-06-17T10:53:27.792Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fc273ec44ae525a153004" + }, + "price": 3900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دبل استیک", + "description": "۱۵۰ گرم فیله گوساله، ۱۵۰ گرم فیله مرغ ، پنیر پیتزا", + "short_description": "", + "category": { + "$oid": "627f5693ec44ae525a1523be" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T14:53:39.783Z" + }, + "updated_at": { + "$date": "2023-06-17T10:53:15.189Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fea79ec44ae525a1537e2" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک شکلاتی ", + "description": "", + "short_description": "", + "category": { + "$oid": "627fe90bec44ae525a153778" + }, + "index": 4, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-14T17:44:25.972Z" + }, + "updated_at": { + "$date": "2025-08-19T09:05:21.552Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fec5aec44ae525a153865" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک بستنی ", + "description": "", + "short_description": "", + "category": { + "$oid": "627fe90bec44ae525a153778" + }, + "index": 7, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-14T17:52:26.681Z" + }, + "updated_at": { + "$date": "2025-08-19T09:06:20.890Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fed5aec44ae525a153898" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیر و استیک (سس کچاپ)", + "description": "فیله گوساله، سیر ، قارچ ، فلفل دلمه ، پنیر ایتالیایی", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-14T17:56:42.530Z" + }, + "updated_at": { + "$date": "2023-06-17T10:50:24.889Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fed98ec44ae525a1538b6" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": " اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "627fecc5ec44ae525a153875" + }, + "index": 1, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-14T17:57:44.224Z" + }, + "updated_at": { + "$date": "2025-08-19T09:02:47.252Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627fee87ec44ae525a1538e1" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو", + "description": "60ml اسپرسو(دبل)+90میلی متر آب جوش", + "short_description": "", + "category": { + "$oid": "627fecc5ec44ae525a153875" + }, + "index": 2, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-14T18:01:43.280Z" + }, + "updated_at": { + "$date": "2025-08-19T09:07:04.874Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627ff047ec44ae525a153946" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "اسپرسودبل+سس شکلات+شیروفوم", + "short_description": "", + "category": { + "$oid": "627fecc5ec44ae525a153875" + }, + "index": 5, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-14T18:09:11.879Z" + }, + "updated_at": { + "$date": "2025-08-19T09:08:02.187Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627ff4fbec44ae525a153a55" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته ", + "description": "اسپرسو‌دبل+220mlشیرو‌فوم+سیروپ دلخواه", + "short_description": "", + "category": { + "$oid": "627fecc5ec44ae525a153875" + }, + "index": 3, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-14T18:29:15.358Z" + }, + "updated_at": { + "$date": "2025-08-19T09:02:17.234Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "627ff626ec44ae525a153aa1" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "627ff48fec44ae525a153a39" + }, + "index": 1, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-14T18:34:14.323Z" + }, + "updated_at": { + "$date": "2025-08-19T09:01:31.611Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62810905d65610bd301c5624" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو", + "description": "بستنی وانیل+اسپرسو دبل", + "short_description": "", + "category": { + "$oid": "627fecc5ec44ae525a153875" + }, + "index": 7, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T14:07:01.333Z" + }, + "updated_at": { + "$date": "2025-08-19T09:01:02.964Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62810a08d65610bd301c5663" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دارک چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "627ff48fec44ae525a153a39" + }, + "index": 2, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T14:11:20.322Z" + }, + "updated_at": { + "$date": "2025-08-19T09:00:00.857Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62810b48d65610bd301c56a7" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ماسالا ", + "description": "", + "short_description": "", + "category": { + "$oid": "627ff48fec44ae525a153a39" + }, + "index": 5, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T14:16:40.539Z" + }, + "updated_at": { + "$date": "2025-08-19T08:58:25.216Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62810bc1d65610bd301c56be" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "یونانی", + "description": "ترک+شیر", + "short_description": "", + "category": { + "$oid": "627ff48fec44ae525a153a39" + }, + "index": 7, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T14:18:41.920Z" + }, + "updated_at": { + "$date": "2025-08-19T08:57:16.349Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62810e3bd65610bd301c575f" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای مراکشی", + "description": "چای +هل+نعنا+نبات", + "short_description": "", + "category": { + "$oid": "62810c47d65610bd301c56ea" + }, + "index": 4, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T14:29:15.699Z" + }, + "updated_at": { + "$date": "2025-08-19T08:56:21.240Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62810ebfd65610bd301c577f" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش سیب دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "62810c47d65610bd301c56ea" + }, + "index": 5, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T14:31:27.489Z" + }, + "updated_at": { + "$date": "2025-08-19T08:55:09.418Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62811145d65610bd301c57a3" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش آرامش", + "description": "گل گاوزبان+چای ترش+بهار نارنج+لیمو+نبات", + "short_description": "", + "category": { + "$oid": "62810c47d65610bd301c56ea" + }, + "index": 7, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T14:42:13.273Z" + }, + "updated_at": { + "$date": "2025-08-19T08:54:44.529Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628111bdd65610bd301c57ad" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش به لیمو-زنجبیل", + "description": "", + "short_description": "", + "category": { + "$oid": "62810c47d65610bd301c56ea" + }, + "index": 8, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T14:44:13.953Z" + }, + "updated_at": { + "$date": "2025-08-19T08:54:20.310Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62811705d65610bd301c5865" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "628115c8d65610bd301c5837" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T15:06:45.186Z" + }, + "updated_at": { + "$date": "2025-08-19T08:53:47.462Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281173cd65610bd301c586f" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "628115c8d65610bd301c5837" + }, + "index": 3, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T15:07:40.838Z" + }, + "updated_at": { + "$date": "2025-08-19T08:53:10.473Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62811b9ed65610bd301c596e" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک وانیل", + "description": "", + "short_description": "", + "category": { + "$oid": "628119add65610bd301c5919" + }, + "index": 3, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T15:26:22.350Z" + }, + "updated_at": { + "$date": "2025-08-19T08:52:38.665Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62811bcfd65610bd301c597e" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "628119add65610bd301c5919" + }, + "index": 4, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T15:27:11.843Z" + }, + "updated_at": { + "$date": "2025-08-19T08:52:20.529Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62811e10d65610bd301c59f3" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک تیرامیسو", + "description": "بیسکوییت لیدی فینگر+نسکافه گُلد+بستنی وانیل", + "short_description": "", + "category": { + "$oid": "628119add65610bd301c5919" + }, + "index": 6, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T15:36:48.253Z" + }, + "updated_at": { + "$date": "2025-08-19T08:51:59.133Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62811e6ed65610bd301c59fd" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک بادام زمینی", + "description": "کره بادام زمینی+بادام زمینی+بستنی وانیل", + "short_description": "", + "category": { + "$oid": "628119add65610bd301c5919" + }, + "index": 7, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T15:38:22.499Z" + }, + "updated_at": { + "$date": "2025-08-19T08:51:24.367Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628133aed65610bd301c5ebe" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کِمِکس", + "description": "متولد1491,مناسب علاقه مندان طعم لایت و مدیوم قهوه", + "short_description": "", + "category": { + "$oid": "62813302d65610bd301c5e57" + }, + "index": 1, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T17:09:02.710Z" + }, + "updated_at": { + "$date": "2025-08-19T08:50:53.386Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628133d9d65610bd301c5ed1" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فرانسه", + "description": "قهوه دمی+شیر داغ", + "short_description": "", + "category": { + "$oid": "62813302d65610bd301c5e57" + }, + "index": 2, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T17:09:45.852Z" + }, + "updated_at": { + "$date": "2025-08-19T08:50:22.653Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281345ed65610bd301c5ef4" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "v60", + "description": "متولد1921،نسخه اصلی و دست نخورده کِمِکٰسٰ", + "short_description": "", + "category": { + "$oid": "62813302d65610bd301c5e57" + }, + "index": 3, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T17:11:58.482Z" + }, + "updated_at": { + "$date": "2025-08-19T08:48:38.444Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62813630d65610bd301c5fdc" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "لیمو تازه+ سودا", + "short_description": "", + "category": { + "$oid": "62811f18d65610bd301c5a4b" + }, + "index": 1, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T17:19:44.652Z" + }, + "updated_at": { + "$date": "2025-08-19T08:48:12.102Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62813667d65610bd301c5fe9" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو کلاسیک", + "description": "لیمو تازه+نعنا تازه+سودا", + "short_description": "", + "category": { + "$oid": "62811f18d65610bd301c5a4b" + }, + "index": 2, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T17:20:39.652Z" + }, + "updated_at": { + "$date": "2025-08-19T08:47:37.238Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628139b9d65610bd301c6150" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیناکولادا", + "description": "میکس آب آناناس و شیر نارگیل و آناناس", + "short_description": "", + "category": { + "$oid": "62811f18d65610bd301c5a4b" + }, + "index": 8, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-15T17:34:49.236Z" + }, + "updated_at": { + "$date": "2025-08-19T08:45:14.378Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62814e0dd65610bd301c6334" + }, + "price": 2300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیر و استیک (سس پستو)", + "description": "فیله گوساله، سیر ، قارچ ، فلفل دلمه ، پنیر ایتالیایی", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:01:33.720Z" + }, + "updated_at": { + "$date": "2023-06-17T10:50:11.851Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62814e34d65610bd301c633e" + }, + "price": 2300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیر و استیک (سس قارچ)", + "description": "فیله گوساله، سیر ، قارچ ، فلفل دلمه ، پنیر ایتالیایی", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:02:12.619Z" + }, + "updated_at": { + "$date": "2023-06-17T10:49:58.893Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62814e6fd65610bd301c634b" + }, + "price": 2150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بروشکتو فونگی (سس کچاپ)", + "description": "ژامبون ، فیله گوساله ، استیک 80٪ ، قارچ، فلفل دلمه ای", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:03:11.951Z" + }, + "updated_at": { + "$date": "2023-06-17T10:49:45.418Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62814e8ed65610bd301c6355" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بروشکتو فونگی (سس پستو)", + "description": "ژامبون ، فیله گوساله ، استیک 80٪ ، قارچ، فلفل دلمه ای", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:03:42.501Z" + }, + "updated_at": { + "$date": "2023-06-17T10:49:31.899Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62814eb8d65610bd301c636c" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بروشکتو فونگی (سس قارچ)", + "description": "ژامبون ، فیله گوساله ، استیک 80٪ ، قارچ، فلفل دلمه ای", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:04:24.983Z" + }, + "updated_at": { + "$date": "2023-06-17T10:49:21.152Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62814ef3d65610bd301c6379" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن فونگی (سس کچاپ)", + "description": "فیله مرغ سرخ شده ، فلفل دلمه ای ، قارچ ، پنیر ایتالیایی", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:05:23.430Z" + }, + "updated_at": { + "$date": "2023-06-17T10:49:04.776Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62814f82d65610bd301c6383" + }, + "price": 2150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن فونگی (سس پستو)", + "description": "فیله مرغ سرخ شده ، فلفل دلمه ای ، قارچ ، پنیر ایتالیایی", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:07:46.118Z" + }, + "updated_at": { + "$date": "2023-06-17T10:48:48.115Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62814fa4d65610bd301c638d" + }, + "price": 2150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن فونگی (سس قارچ)", + "description": "فیله مرغ سرخ شده ، فلفل دلمه ای ، قارچ ، پنیر ایتالیایی", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:08:20.389Z" + }, + "updated_at": { + "$date": "2023-06-17T10:48:37.558Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281500ad65610bd301c63ae" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیلی فونگی (سس کچاپ)", + "description": "ژامبون پپرونی ، قارچ ، فلفل دلمه ای", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:10:02.381Z" + }, + "updated_at": { + "$date": "2023-06-17T10:48:08.640Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815036d65610bd301c63bb" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیلی فونگی (سس پستو)", + "description": "ژامبون پپرونی ، قارچ ، فلفل دلمه ای", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:10:46.783Z" + }, + "updated_at": { + "$date": "2023-06-17T10:47:55.587Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815057d65610bd301c63c5" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیلی فونگی (سس قارچ)", + "description": "ژامبون پپرونی ، قارچ ، فلفل دلمه ای", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:11:19.131Z" + }, + "updated_at": { + "$date": "2023-06-17T10:47:42.220Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281511bd65610bd301c63df" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لابو سولا (سس کچاپ)", + "description": "میگو ، ژامبون سالامی ، قارچ ، فلفل دلمه ای، پنیر ایتالیایی", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:14:35.673Z" + }, + "updated_at": { + "$date": "2023-06-17T10:47:26.415Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815140d65610bd301c63f6" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لابو سولا (سس پستو)", + "description": "میگو ، ژامبون سالامی ، قارچ ، فلفل دلمه ای، پنیر ایتالیایی", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:15:12.862Z" + }, + "updated_at": { + "$date": "2023-06-17T10:47:14.667Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815155d65610bd301c6400" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لابو سولا (سس قارچ)", + "description": "میگو ، ژامبون سالامی ، قارچ ، فلفل دلمه ای، پنیر ایتالیایی", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:15:33.511Z" + }, + "updated_at": { + "$date": "2023-06-17T10:47:03.705Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281517ed65610bd301c640a" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چهار فصل (سس کچاپ)", + "description": "ژامبون استیک ، پپرونی ، فیله مرغ ، سبزیجات", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:16:14.401Z" + }, + "updated_at": { + "$date": "2023-06-17T10:46:50.829Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815194d65610bd301c6414" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چهار فصل (سس پستو)", + "description": "ژامبون استیک ، پپرونی ، فیله مرغ ، سبزیجات", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:16:36.313Z" + }, + "updated_at": { + "$date": "2023-06-17T10:46:34.600Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628151a6d65610bd301c641e" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چهار فصل (سس قارچ)", + "description": "ژامبون استیک ، پپرونی ، فیله مرغ ، سبزیجات", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:16:54.442Z" + }, + "updated_at": { + "$date": "2023-06-17T10:46:23.958Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628151e3d65610bd301c642b" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وجترین (سس کچاپ)", + "description": "فلفل دلمه ای ، ذرت ، قارچ ، زیتون ، گوجه", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:17:55.011Z" + }, + "updated_at": { + "$date": "2023-06-17T10:46:09.984Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628151f9d65610bd301c6435" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وجترین (سس پستو)", + "description": "فلفل دلمه ای ، ذرت ، قارچ ، زیتون ، گوجه", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:18:17.512Z" + }, + "updated_at": { + "$date": "2023-06-17T10:45:47.961Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815209d65610bd301c643f" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وجترین (سس قارچ)", + "description": "فلفل دلمه ای ، ذرت ، قارچ ، زیتون ، گوجه", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:18:33.082Z" + }, + "updated_at": { + "$date": "2023-06-17T10:45:36.980Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815222d65610bd301c6449" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مارگاریتا (سس کچاپ)", + "description": "گوجه ، پنیر ایتالیایی", + "short_description": "", + "category": { + "$oid": "627f5664ec44ae525a1523ac" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:18:58.653Z" + }, + "updated_at": { + "$date": "2023-06-17T10:45:26.211Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281552fd65610bd301c648a" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنه الفردو (مرغ)", + "description": "پنه ، سس قارچ ، فیله مرغ", + "short_description": "", + "category": { + "$oid": "627f5672ec44ae525a1523b5" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:31:59.947Z" + }, + "updated_at": { + "$date": "2023-06-17T10:57:24.982Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281554fd65610bd301c6494" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنه الفردو (گوشت)", + "description": "پنه ، سس قارچ ، فیله مرغ", + "short_description": "", + "category": { + "$oid": "627f5672ec44ae525a1523b5" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:32:31.621Z" + }, + "updated_at": { + "$date": "2023-06-17T10:57:13.915Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628156d7d65610bd301c64a1" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنه پومودور (مرغ)", + "description": "پنه ، سس گوجه فرنگی", + "short_description": "", + "category": { + "$oid": "627f5672ec44ae525a1523b5" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:39:03.500Z" + }, + "updated_at": { + "$date": "2023-06-17T10:56:58.475Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281572dd65610bd301c64be" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنه پومودور (گوشت)", + "description": "پنه ، سس گوجه فرنگی", + "short_description": "", + "category": { + "$oid": "627f5672ec44ae525a1523b5" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:40:29.639Z" + }, + "updated_at": { + "$date": "2023-06-17T10:56:46.405Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815754d65610bd301c64d5" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفلاف (مرغ)", + "description": "پنه ، سس قارچ ، سس گوجه ، زیتون ، فلفل دلمه ، پنیر", + "short_description": "", + "category": { + "$oid": "627f5672ec44ae525a1523b5" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:41:08.963Z" + }, + "updated_at": { + "$date": "2023-06-17T10:56:32.826Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815779d65610bd301c64df" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفلاف (گوشت)", + "description": "پنه ، سس قارچ ، سس گوجه ، زیتون ، فلفل دلمه ، پنیر", + "short_description": "", + "category": { + "$oid": "627f5672ec44ae525a1523b5" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:41:45.501Z" + }, + "updated_at": { + "$date": "2023-06-17T10:56:17.003Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815a41d65610bd301c64f2" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فلورانین", + "description": "پنه میگو ، قارچ ، سس بشامل", + "short_description": "", + "category": { + "$oid": "627f5672ec44ae525a1523b5" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:53:37.207Z" + }, + "updated_at": { + "$date": "2023-06-17T10:56:04.002Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815a5ad65610bd301c64fc" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پستو", + "description": "پنه ، سس پستو ، فیله مرغ", + "short_description": "", + "category": { + "$oid": "627f5672ec44ae525a1523b5" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:54:02.301Z" + }, + "updated_at": { + "$date": "2023-06-17T10:55:51.495Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815a71d65610bd301c650d" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاسگنابونس (لازانیا)", + "description": "", + "short_description": "", + "category": { + "$oid": "627f5672ec44ae525a1523b5" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:54:25.353Z" + }, + "updated_at": { + "$date": "2023-06-17T10:55:36.349Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62815aa0d65610bd301c6524" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا سبزیجات", + "description": "پنه ، قارچ ، ذرت ، فلفل دلمه ، سس گوجه", + "short_description": "", + "category": { + "$oid": "627f5672ec44ae525a1523b5" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-15T19:55:12.679Z" + }, + "updated_at": { + "$date": "2023-06-17T10:55:22.431Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281dd94d65610bd301c661d" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسموتی انبه و موز", + "description": "انبه+موز", + "short_description": "", + "category": { + "$oid": "62815caad65610bd301c656d" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:13:56.551Z" + }, + "updated_at": { + "$date": "2023-03-29T15:58:22.193Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281dda7d65610bd301c6627" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسموتی کوکونات", + "description": "نارگیل+شیر+کاکاِِِِِیو", + "short_description": "", + "category": { + "$oid": "62815caad65610bd301c656d" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:14:15.213Z" + }, + "updated_at": { + "$date": "2023-03-29T15:57:07.939Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281ddbad65610bd301c6631" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسموتی استوایی", + "description": "پشن فروت+موز+اناناس", + "short_description": "", + "category": { + "$oid": "62815caad65610bd301c656d" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:14:34.811Z" + }, + "updated_at": { + "$date": "2023-03-29T15:56:03.424Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281ddf6d65610bd301c664f" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": " کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "62815cd3d65610bd301c657c" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:15:34.167Z" + }, + "updated_at": { + "$date": "2023-02-27T17:23:46.921Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281de0dd65610bd301c6659" + }, + "price": 530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "62815cd3d65610bd301c657c" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:15:57.182Z" + }, + "updated_at": { + "$date": "2023-02-27T17:23:13.471Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281de1ed65610bd301c6663" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موز و شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "62815cd3d65610bd301c657c" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:16:14.723Z" + }, + "updated_at": { + "$date": "2023-02-27T17:22:49.582Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281de30d65610bd301c666d" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "62815cd3d65610bd301c657c" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:16:32.702Z" + }, + "updated_at": { + "$date": "2023-03-13T13:30:24.142Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281de4fd65610bd301c6684" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک Oreo", + "description": "", + "short_description": "", + "category": { + "$oid": "62815cd3d65610bd301c657c" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:17:03.872Z" + }, + "updated_at": { + "$date": "2023-03-13T13:51:56.142Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281de91d65610bd301c669e" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "تریپل سک+لیمو+اسپرایت", + "short_description": "", + "category": { + "$oid": "62815ce6d65610bd301c6585" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:18:09.947Z" + }, + "updated_at": { + "$date": "2023-03-13T13:40:49.643Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281dea2d65610bd301c66a8" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "لیمو + نعنا + اسپرایت + رام", + "short_description": "", + "category": { + "$oid": "62815ce6d65610bd301c6585" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:18:26.682Z" + }, + "updated_at": { + "$date": "2023-03-13T13:41:27.055Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281deb6d65610bd301c66b2" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مجیک مومنت", + "description": "پرتغال قرمز+لیمو+کرن بری+سودا", + "short_description": "", + "category": { + "$oid": "62815ce6d65610bd301c6585" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:18:46.862Z" + }, + "updated_at": { + "$date": "2023-03-13T13:44:03.816Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281def3d65610bd301c66c3" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کامپاری کلر", + "description": "هلو+کرن بری+لیمو+پرتغال+اسپرایت", + "short_description": "", + "category": { + "$oid": "62815ce6d65610bd301c6585" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:19:47.990Z" + }, + "updated_at": { + "$date": "2023-03-13T13:45:18.538Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281df0bd65610bd301c66cd" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلو اسکای", + "description": "بلوکارسائو + آلوئورا", + "short_description": "", + "category": { + "$oid": "62815ce6d65610bd301c6585" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:20:11.832Z" + }, + "updated_at": { + "$date": "2023-02-27T17:25:22.606Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281df20d65610bd301c66d7" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مانتینی", + "description": "تریپل سک+لیمو+کرن بری+سودا", + "short_description": "", + "category": { + "$oid": "62815ce6d65610bd301c6585" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:20:32.309Z" + }, + "updated_at": { + "$date": "2023-03-13T13:43:24.993Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281df39d65610bd301c66e1" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رز ماری کلر", + "description": "انبه + لیمو+پرتغال قرمز+گرانادین+رز ماری", + "short_description": "", + "category": { + "$oid": "62815ce6d65610bd301c6585" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:20:57.672Z" + }, + "updated_at": { + "$date": "2023-03-13T13:42:47.489Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e039d65610bd301c671d" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خیارسکنجبین", + "description": "", + "short_description": "", + "category": { + "$oid": "62815d39d65610bd301c659a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:25:13.152Z" + }, + "updated_at": { + "$date": "2023-02-27T17:28:01.775Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e06dd65610bd301c6734" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بید مشک", + "description": "", + "short_description": "", + "category": { + "$oid": "62815d39d65610bd301c659a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:26:05.270Z" + }, + "updated_at": { + "$date": "2023-02-27T17:27:50.307Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e082d65610bd301c673e" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بهار نارنج", + "description": "", + "short_description": "", + "category": { + "$oid": "62815d39d65610bd301c659a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:26:26.631Z" + }, + "updated_at": { + "$date": "2023-02-27T17:27:39.904Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e0a7d65610bd301c6755" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گلاب زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "62815d39d65610bd301c659a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:27:03.651Z" + }, + "updated_at": { + "$date": "2023-02-27T17:27:28.297Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e3a1d65610bd301c676b" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو سینگل", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:39:45.531Z" + }, + "updated_at": { + "$date": "2023-02-27T17:11:51.880Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e3c0d65610bd301c6775" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ترک", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:40:16.573Z" + }, + "updated_at": { + "$date": "2023-02-27T17:11:40.655Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e3dad65610bd301c677f" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فرانسه", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:40:42.346Z" + }, + "updated_at": { + "$date": "2023-02-27T17:11:26.383Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e3ead65610bd301c6789" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:40:58.949Z" + }, + "updated_at": { + "$date": "2023-02-27T17:11:03.214Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e405d65610bd301c6793" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:41:25.423Z" + }, + "updated_at": { + "$date": "2023-02-27T17:10:45.000Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e41cd65610bd301c679d" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:41:48.700Z" + }, + "updated_at": { + "$date": "2023-03-14T11:48:52.196Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e438d65610bd301c67a7" + }, + "price": 430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:42:16.072Z" + }, + "updated_at": { + "$date": "2023-02-27T17:10:09.410Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e44dd65610bd301c67b1" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نسکافه", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:42:37.519Z" + }, + "updated_at": { + "$date": "2023-02-27T17:09:56.749Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e461d65610bd301c67bb" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:42:57.303Z" + }, + "updated_at": { + "$date": "2023-02-27T17:08:58.444Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e477d65610bd301c67c6" + }, + "price": 430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:43:19.619Z" + }, + "updated_at": { + "$date": "2023-02-27T17:08:46.249Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e4ddd65610bd301c67e7" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گل گاو زبان (لیمو)", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c77d65610bd301c6564" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:45:01.701Z" + }, + "updated_at": { + "$date": "2023-02-27T17:17:47.327Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e51ad65610bd301c67ff" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c77d65610bd301c6564" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:46:02.566Z" + }, + "updated_at": { + "$date": "2023-02-28T11:47:04.872Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e532d65610bd301c6809" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c77d65610bd301c6564" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:46:26.188Z" + }, + "updated_at": { + "$date": "2023-02-27T17:17:20.477Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e549d65610bd301c6813" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c77d65610bd301c6564" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:46:49.190Z" + }, + "updated_at": { + "$date": "2023-02-27T17:17:08.803Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e593d65610bd301c6834" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آویشن (عسل)", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c77d65610bd301c6564" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:48:03.055Z" + }, + "updated_at": { + "$date": "2023-02-27T17:16:54.892Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e5bad65610bd301c683e" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش میکس", + "description": "گل گاو زبان + آویشن + چای ترش + لیمو + عسل", + "short_description": "", + "category": { + "$oid": "62815c77d65610bd301c6564" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:48:42.449Z" + }, + "updated_at": { + "$date": "2023-02-27T17:16:33.915Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e5e0d65610bd301c684b" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفاگاتو", + "description": "بستنی وانیلی + اسپرسو", + "short_description": "", + "category": { + "$oid": "62815bf1d65610bd301c6543" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:49:20.612Z" + }, + "updated_at": { + "$date": "2023-02-27T17:13:20.269Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e5f0d65610bd301c6855" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کافی سودا", + "description": "سودا + اسپرسو", + "short_description": "", + "category": { + "$oid": "62815bf1d65610bd301c6543" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:49:36.059Z" + }, + "updated_at": { + "$date": "2023-03-14T11:51:49.735Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e5fdd65610bd301c685f" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته", + "description": "شیر + اسپرسو", + "short_description": "", + "category": { + "$oid": "62815bf1d65610bd301c6543" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:49:49.581Z" + }, + "updated_at": { + "$date": "2023-02-27T17:12:51.410Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e61cd65610bd301c6869" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c51d65610bd301c6552" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:50:20.358Z" + }, + "updated_at": { + "$date": "2023-05-04T12:41:56.059Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e62ad65610bd301c6873" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک روز ", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c51d65610bd301c6552" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:50:34.092Z" + }, + "updated_at": { + "$date": "2023-05-04T12:41:31.581Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e6a8d65610bd301c689c" + }, + "price": 470000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بستنی میکس", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c66d65610bd301c655b" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:52:40.197Z" + }, + "updated_at": { + "$date": "2022-11-11T10:54:02.995Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e6cfd65610bd301c68a6" + }, + "price": 410000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بستنی شکلاتی", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c66d65610bd301c655b" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:53:19.447Z" + }, + "updated_at": { + "$date": "2022-11-25T14:38:42.112Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281e6f8d65610bd301c68ba" + }, + "price": 420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بستنی موز", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c66d65610bd301c655b" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T05:54:00.890Z" + }, + "updated_at": { + "$date": "2022-11-11T10:53:33.366Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281ea31d65610bd301c68d5" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بستنی وانیل", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c66d65610bd301c655b" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T06:07:45.158Z" + }, + "updated_at": { + "$date": "2022-11-25T14:38:31.048Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6281ea99d65610bd301c6902" + }, + "price": 420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بستنی نسکافه", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c66d65610bd301c655b" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-05-16T06:09:29.729Z" + }, + "updated_at": { + "$date": "2022-11-11T10:52:41.006Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62826081d65610bd301c711d" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "اسپرسو سینگل+150mlشیرو فوم", + "short_description": "", + "category": { + "$oid": "627fecc5ec44ae525a153875" + }, + "index": 8, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-16T14:32:33.038Z" + }, + "updated_at": { + "$date": "2025-08-19T08:44:53.411Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6282614ed65610bd301c717e" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته", + "description": "اسپرسو دبل+شیر", + "short_description": "", + "category": { + "$oid": "628115c8d65610bd301c5837" + }, + "index": 5, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-16T14:35:58.633Z" + }, + "updated_at": { + "$date": "2025-08-19T08:42:49.120Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6285213b45a8f989e785246c" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سرویس چای چهارنفره", + "description": "نبات", + "short_description": "", + "category": { + "$oid": "62810c47d65610bd301c56ea" + }, + "index": 1, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-18T16:39:23.136Z" + }, + "updated_at": { + "$date": "2025-08-19T08:44:24.050Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62853def45a8f989e7852ce3" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پشن دراگون", + "description": "آب پرتقال+توت فرنگی+سیروپ پشن فورت+آب لیمو تازه", + "short_description": "", + "category": { + "$oid": "62811f18d65610bd301c5a4b" + }, + "index": 11, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-05-18T18:41:51.114Z" + }, + "updated_at": { + "$date": "2025-08-19T08:39:54.127Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628b66ecea3462120c4df42b" + }, + "price": 100000, + "stock": 50000, + "static_discount": 0, + "active": true, + "name": "test", + "description": "das das das das das das dasdasd asdasd", + "short_description": "", + "category": { + "$oid": "628b66ceea3462120c4df415" + }, + "index": 1, + "storeId": { + "$oid": "6204b1626175e2247c298b04" + }, + "created_at": { + "$date": "2022-05-23T10:50:20.114Z" + }, + "updated_at": { + "$date": "2022-07-09T08:39:35.531Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628b66fdea3462120c4df435" + }, + "price": 50000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "test2", + "description": "", + "short_description": "", + "category": { + "$oid": "628b66d8ea3462120c4df41e" + }, + "index": 1, + "storeId": { + "$oid": "6204b1626175e2247c298b04" + }, + "created_at": { + "$date": "2022-05-23T10:50:37.500Z" + }, + "updated_at": { + "$date": "2022-05-23T10:50:37.500Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "628ce39e73876d4327561809" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک ردولوت", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3ddf4a8d41eae80b0d2c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-05-24T13:54:38.135Z" + }, + "updated_at": { + "$date": "2022-05-24T13:54:38.135Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62922dc173876d4327567077" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک نسکافه", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3ddf4a8d41eae80b0d2c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-05-28T14:12:17.316Z" + }, + "updated_at": { + "$date": "2022-05-28T14:12:17.316Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629381c873876d432756814b" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تریپل چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3ddf4a8d41eae80b0d2c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-05-29T14:23:04.349Z" + }, + "updated_at": { + "$date": "2022-05-29T14:23:04.349Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6297379073876d432756c120" + }, + "price": 5630000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفاماتا", + "description": "میکس ژامبون، پپرونی، کوکتل، اوریگانو، قارچ، فلفل دلمه ای، موتزارلا", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 1, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-06-01T09:55:28.588Z" + }, + "updated_at": { + "$date": "2025-12-25T12:29:50.048Z" + }, + "__v": 0, + "image": "food_1729758618404.png" +}, +{ + "_id": { + "$oid": "629a4c41128ed6fd01320ae0" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو دبل", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 2, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-06-03T18:00:33.218Z" + }, + "updated_at": { + "$date": "2023-02-27T17:08:18.383Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629a73a9128ed6fd013210e2" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس چاکلت", + "description": "بستنی وانیلی + هات چاکلت", + "short_description": "", + "category": { + "$oid": "62815bf1d65610bd301c6543" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-06-03T20:48:41.590Z" + }, + "updated_at": { + "$date": "2023-02-27T17:12:38.613Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629ae96d128ed6fd013212e0" + }, + "price": 620000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بادام زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "62815cd3d65610bd301c657c" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-06-04T05:11:09.526Z" + }, + "updated_at": { + "$date": "2023-02-27T17:19:07.567Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629ae9d0128ed6fd01321307" + }, + "price": 620000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شکلات فندق", + "description": "", + "short_description": "", + "category": { + "$oid": "62815cd3d65610bd301c657c" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-06-04T05:12:48.981Z" + }, + "updated_at": { + "$date": "2023-02-27T17:18:57.530Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629aef26128ed6fd0132144d" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وان پیس", + "description": "بلوکارسائو + آلبالو + لیمو + پرتقال", + "short_description": "", + "category": { + "$oid": "62815ce6d65610bd301c6585" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2022-06-04T05:35:34.109Z" + }, + "updated_at": { + "$date": "2023-02-27T17:24:04.858Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629cd981128ed6fd01324397" + }, + "price": 2790000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پینات باتر وینگز(new)", + "description": "بال سرخ شده به همراه سس پینات باتر", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 14, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-06-05T16:27:45.114Z" + }, + "updated_at": { + "$date": "2025-12-25T12:30:05.938Z" + }, + "__v": 0, + "image": "food_1728330951188.png" +}, +{ + "_id": { + "$oid": "629cd9ba128ed6fd013243bf" + }, + "price": 2790000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "باربیکیو وینگز(new)", + "description": "بال سرخ شده به همراه سس باربیکیو", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 13, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-06-05T16:28:42.441Z" + }, + "updated_at": { + "$date": "2025-12-25T12:30:19.957Z" + }, + "__v": 0, + "image": "food_1728330940826.png" +}, +{ + "_id": { + "$oid": "629cda1e128ed6fd01324418" + }, + "price": 2590000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قارچ سوخاری(new)", + "description": "قارچ پولکی، سس مخصوص", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 15, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-06-05T16:30:22.264Z" + }, + "updated_at": { + "$date": "2025-11-13T11:37:57.687Z" + }, + "__v": 0, + "image": "food_1729757626041.png" +}, +{ + "_id": { + "$oid": "629df06e128ed6fd013257e3" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دوسیب ، البالو ، ادامس دارچین ، موهیتو ، انبه ، سیب یخ ، هندوانه نعنا ، بلوبری ، پرتغال خامه ، آلو یخ ، نعنا ، طالبی ، پاستیل ، کیس می ، شاتوت بستنی ، کاپتان بلک ، ", + "description": "", + "short_description": "", + "category": { + "$oid": "6288e0d945a8f989e78560f3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-06T12:17:50.380Z" + }, + "updated_at": { + "$date": "2022-07-14T10:57:37.100Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629ef999128ed6fd01326812" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تاپ شاین", + "description": "بستنی وانیل ، سس توت فرنگی ، اسلایس میوه ، خامه", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:09:13.481Z" + }, + "updated_at": { + "$date": "2022-06-09T12:55:15.529Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629ef9fb128ed6fd01326833" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دارک مون", + "description": "کرم کارامل ، بستنی نسکافه ، میوه", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:10:51.425Z" + }, + "updated_at": { + "$date": "2022-06-09T12:55:06.629Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629efa48128ed6fd0132684f" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بن هلن", + "description": "بستنی وانیل ، خامه ، گلابی", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:12:08.459Z" + }, + "updated_at": { + "$date": "2022-06-09T12:54:55.256Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629efa97128ed6fd01326876" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بنانا اسپیلت", + "description": "موز ، بستنی وانیل ، گیلاس ، بیسکوئیت کاکائو", + "short_description": "", + "category": { + "$oid": "6208c5ca2cf0cf6959b13cd3" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:13:27.809Z" + }, + "updated_at": { + "$date": "2022-06-09T12:54:27.967Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629efaf8128ed6fd01326898" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جویس اسپانیائی", + "description": "آب البالو ، آب پرتغال ، موز", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:15:04.605Z" + }, + "updated_at": { + "$date": "2022-06-09T12:54:15.642Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629efb49128ed6fd013268ba" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس ملون", + "description": "طالبی ، آب گاز دار ، نعنا ، شکر", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:16:25.665Z" + }, + "updated_at": { + "$date": "2022-06-09T12:54:00.619Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629efb9f128ed6fd013268d1" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سانگریا", + "description": "انگور سفید ، آب انار ، آب پرتغال ، آب گاز دار ، دارچین ، لیمو حلقه شده", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:17:51.149Z" + }, + "updated_at": { + "$date": "2022-06-09T12:52:45.842Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629efc52128ed6fd01326904" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پانچ هلو", + "description": "هلو ، آب گاز دار ، آب لیمو ترش ، شکر", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:20:50.932Z" + }, + "updated_at": { + "$date": "2022-06-09T12:52:29.051Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629efc93128ed6fd0132691c" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیناکولادا", + "description": "شیر نارگیل ، آب اناناس ، یخ ، شکر ، خامه", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:21:55.639Z" + }, + "updated_at": { + "$date": "2022-06-09T12:52:12.186Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629efcd4128ed6fd01326934" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیکو آدو", + "description": "موز ، توت فرنگی ، آب اناناس ، پرتغال", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:23:00.565Z" + }, + "updated_at": { + "$date": "2022-06-09T12:51:43.778Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629efd3c128ed6fd0132694e" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پانچ آب آلبالو و انار", + "description": "آب انار ، آب آلبالو ، آب گاز دار ، لیمو ترش", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:24:44.240Z" + }, + "updated_at": { + "$date": "2022-06-09T12:51:12.788Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629efd99128ed6fd0132696e" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گرنادین", + "description": "آب انار ، یخ ، عرق بهار نارنج ، آبلیموی تازه ، شکر", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:26:17.039Z" + }, + "updated_at": { + "$date": "2022-06-09T12:50:59.763Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629f0088128ed6fd013269a5" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وافل نوتلا", + "description": "وافل ، بستنی نوتلا ، سس توت فرنگی ، اسلایس میوه", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:38:48.043Z" + }, + "updated_at": { + "$date": "2022-06-09T12:50:44.386Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629f00c3128ed6fd013269bc" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وافل کاکائو", + "description": "وافل ، بستنی شکلات ، سس شکلات ، اسلایس میوه", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:39:47.778Z" + }, + "updated_at": { + "$date": "2022-06-09T12:50:26.662Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629f0107128ed6fd013269d3" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وافل کاکائو و موز", + "description": "وافل ، بستنی شکلات ، سس شکلات ، اسلایس میوه", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:40:55.540Z" + }, + "updated_at": { + "$date": "2022-06-09T12:50:14.441Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629f0155128ed6fd013269f1" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وافل وانیل خامه", + "description": "وافل ، بستنی وانیل ، سس کارامل ، خامه ، اسلایس میوه", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:42:13.891Z" + }, + "updated_at": { + "$date": "2022-06-09T12:49:57.398Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629f01b8128ed6fd01326a1b" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وافل شاتوت", + "description": "وافل ، بستنی شاتوت ، سس توت فرنگی ، اسلایس میوه", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:43:52.666Z" + }, + "updated_at": { + "$date": "2022-06-09T12:49:34.482Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629f0202128ed6fd01326a32" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وافل بلژیکی", + "description": "وافل ، بستنی وانیل ، بستنی شکلات ، بستنی نوتلا ، سس شکلات موز ، خامه", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:45:06.180Z" + }, + "updated_at": { + "$date": "2022-06-09T12:48:25.437Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629f0275128ed6fd01326a50" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وافل کارامل خامه", + "description": "وافل ، بستنی کارامل ، خامه ، سس کارامل ، اسلایس میوه", + "short_description": "", + "category": { + "$oid": "6208c5b92cf0cf6959b13cca" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:47:01.550Z" + }, + "updated_at": { + "$date": "2022-06-09T12:48:14.242Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "629f03a1128ed6fd01326ab6" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پینک چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6208c4cb2cf0cf6959b13c85" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-06-07T07:52:01.252Z" + }, + "updated_at": { + "$date": "2022-07-17T14:04:07.985Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a087ef128ed6fd013287a4" + }, + "price": 4430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز برگر", + "description": "برگر150گرمی، پنیر گودا، کاهو لوتوس، گوجه فرنگی، خیار، سس مخصوص، ساید سالاد و سیب زمینی(سرو سالن)", + "short_description": "", + "category": { + "$oid": "6207a2681ee4b0270db4c429" + }, + "index": 2, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-06-08T11:28:47.521Z" + }, + "updated_at": { + "$date": "2025-12-25T12:30:37.895Z" + }, + "__v": 0, + "image": "food_1729758313692.png" +}, +{ + "_id": { + "$oid": "62a1f956128ed6fd0132a3c5" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d534a8d41eae80b0cfb" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-06-09T13:44:54.493Z" + }, + "updated_at": { + "$date": "2022-06-09T13:44:54.493Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62a31d4f128ed6fd0132c12a" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فرنچ فرایز", + "description": "سیب زمینی خلالی،سس مخصوص", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 11, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-06-10T10:30:39.843Z" + }, + "updated_at": { + "$date": "2025-11-13T11:38:11.279Z" + }, + "__v": 0, + "image": "food_1729758014480.png" +}, +{ + "_id": { + "$oid": "62aa1553128ed6fd01333d45" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کباب مخصوص سعادت", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T17:22:27.045Z" + }, + "updated_at": { + "$date": "2022-06-15T17:22:27.045Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa23a2128ed6fd01334109" + }, + "price": 3200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیشلیک (شاندیز)", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:23:30.090Z" + }, + "updated_at": { + "$date": "2022-06-20T20:39:30.631Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa23c4128ed6fd01334113" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگ", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:24:04.411Z" + }, + "updated_at": { + "$date": "2022-06-15T18:24:04.411Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa23d8128ed6fd01334120" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سلطانی", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:24:24.057Z" + }, + "updated_at": { + "$date": "2022-06-15T18:24:24.057Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa23f1128ed6fd0133412a" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چنجه اعیانی", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:24:49.876Z" + }, + "updated_at": { + "$date": "2022-06-15T18:24:49.876Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa2407128ed6fd01334134" + }, + "price": 890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جوجه کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:25:11.278Z" + }, + "updated_at": { + "$date": "2022-06-15T18:25:11.278Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa243c128ed6fd0133415d" + }, + "price": 990000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جوجه ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:26:04.276Z" + }, + "updated_at": { + "$date": "2022-06-15T18:26:18.300Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa248d128ed6fd01334184" + }, + "price": 1690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:27:25.980Z" + }, + "updated_at": { + "$date": "2022-06-15T18:27:48.028Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa24c9128ed6fd013341a1" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بختیاری", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:28:25.380Z" + }, + "updated_at": { + "$date": "2022-06-15T18:28:25.380Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa24ea128ed6fd013341b1" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوبیده (لقمه)", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:28:58.968Z" + }, + "updated_at": { + "$date": "2022-06-15T18:28:58.968Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa2646128ed6fd013341e2" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کباب ممتاز بلغاری", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:34:46.796Z" + }, + "updated_at": { + "$date": "2022-06-15T18:34:46.796Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa266d128ed6fd013341f2" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کباب مصری", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:35:25.772Z" + }, + "updated_at": { + "$date": "2022-06-15T18:35:25.772Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa2692128ed6fd013341ff" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاسه کباب", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:36:02.620Z" + }, + "updated_at": { + "$date": "2022-06-15T18:36:02.620Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa26b8128ed6fd0133420c" + }, + "price": 5700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سینی مخصوص (دورچین)", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:36:40.896Z" + }, + "updated_at": { + "$date": "2022-07-13T18:19:56.853Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa26d2128ed6fd01334219" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماهی قزل آلا", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:37:06.391Z" + }, + "updated_at": { + "$date": "2022-06-15T18:37:17.430Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa2729128ed6fd01334236" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برنج", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:38:33.968Z" + }, + "updated_at": { + "$date": "2022-06-15T18:38:33.968Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa27eb128ed6fd0133424a" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جوجه چینی", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d21f128ed6fd01333336" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:41:47.897Z" + }, + "updated_at": { + "$date": "2022-06-15T18:42:31.240Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa280b128ed6fd0133425e" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میگو سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d21f128ed6fd01333336" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:42:19.777Z" + }, + "updated_at": { + "$date": "2022-06-15T18:42:19.777Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa2919128ed6fd0133429f" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میگو پفکی", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d21f128ed6fd01333336" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:46:49.377Z" + }, + "updated_at": { + "$date": "2022-06-15T18:46:49.377Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa293a128ed6fd013342a9" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استیک ویژه", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d21f128ed6fd01333336" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:47:22.292Z" + }, + "updated_at": { + "$date": "2022-06-15T18:47:22.292Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa2979128ed6fd013342b6" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d23f128ed6fd0133333f" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:48:25.682Z" + }, + "updated_at": { + "$date": "2022-06-15T18:48:25.682Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa2995128ed6fd013342c0" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d23f128ed6fd0133333f" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:48:53.611Z" + }, + "updated_at": { + "$date": "2022-06-15T18:48:53.611Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa29b1128ed6fd013342ce" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد یونانی", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d23f128ed6fd0133333f" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T18:49:21.537Z" + }, + "updated_at": { + "$date": "2022-06-15T18:49:21.537Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa2d96128ed6fd01334341" + }, + "price": 280000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد فصل", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d23f128ed6fd0133333f" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:05:58.770Z" + }, + "updated_at": { + "$date": "2022-06-15T19:05:58.770Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3089128ed6fd0133438c" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گردن", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:18:33.846Z" + }, + "updated_at": { + "$date": "2022-06-20T09:22:42.687Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa30cf128ed6fd013343aa" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماهیچه", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:19:43.659Z" + }, + "updated_at": { + "$date": "2022-06-20T09:26:31.277Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa324d128ed6fd013343d3" + }, + "price": 100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوشابه", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d259128ed6fd0133334b" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:26:05.860Z" + }, + "updated_at": { + "$date": "2022-06-15T19:26:05.860Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3279128ed6fd013343dd" + }, + "price": 100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دوغ ", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d259128ed6fd0133334b" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:26:49.878Z" + }, + "updated_at": { + "$date": "2022-06-15T19:31:24.529Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa329f128ed6fd013343ea" + }, + "price": 100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دلستر", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d259128ed6fd0133334b" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:27:27.711Z" + }, + "updated_at": { + "$date": "2022-06-15T19:27:27.711Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa32d9128ed6fd013343ff" + }, + "price": 80000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شربت welcome", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d259128ed6fd0133334b" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:28:25.475Z" + }, + "updated_at": { + "$date": "2022-06-15T19:39:33.521Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa35ab128ed6fd0133444d" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قلیان (انواع طمع ها)", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d264128ed6fd01333354" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:40:27.602Z" + }, + "updated_at": { + "$date": "2022-06-15T19:40:50.237Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa37d8128ed6fd01334484" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d606128ed6fd0133338a" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:49:44.289Z" + }, + "updated_at": { + "$date": "2022-06-15T19:49:56.582Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa37ff128ed6fd0133449b" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d606128ed6fd0133338a" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:50:23.219Z" + }, + "updated_at": { + "$date": "2022-06-15T19:50:23.219Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3818128ed6fd013344a8" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d606128ed6fd0133338a" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:50:48.329Z" + }, + "updated_at": { + "$date": "2022-06-15T19:50:48.329Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa382c128ed6fd013344b2" + }, + "price": 370000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d606128ed6fd0133338a" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:51:08.461Z" + }, + "updated_at": { + "$date": "2022-06-15T19:51:08.461Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa384a128ed6fd013344bc" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d606128ed6fd0133338a" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:51:38.438Z" + }, + "updated_at": { + "$date": "2022-06-15T19:51:38.438Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3861128ed6fd013344c6" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d606128ed6fd0133338a" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:52:01.859Z" + }, + "updated_at": { + "$date": "2022-06-15T19:52:01.859Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3879128ed6fd013344d0" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d606128ed6fd0133338a" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:52:25.401Z" + }, + "updated_at": { + "$date": "2022-06-15T19:52:25.401Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa389a128ed6fd013344da" + }, + "price": 370000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d606128ed6fd0133338a" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T19:52:58.561Z" + }, + "updated_at": { + "$date": "2022-06-15T19:57:25.496Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3a66128ed6fd013344f4" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d621128ed6fd01333393" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:00:38.201Z" + }, + "updated_at": { + "$date": "2022-06-15T20:00:38.201Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3a85128ed6fd013344fe" + }, + "price": 470000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d621128ed6fd01333393" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:01:09.021Z" + }, + "updated_at": { + "$date": "2022-06-15T20:01:09.021Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3aaf128ed6fd01334508" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هایپ اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d621128ed6fd01333393" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:01:51.687Z" + }, + "updated_at": { + "$date": "2022-06-15T20:01:51.687Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3ac7128ed6fd01334512" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d621128ed6fd01333393" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:02:15.160Z" + }, + "updated_at": { + "$date": "2022-06-15T20:02:30.448Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3afb128ed6fd01334529" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سودا امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d621128ed6fd01333393" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:03:07.160Z" + }, + "updated_at": { + "$date": "2022-06-15T20:03:07.160Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3b1c128ed6fd01334533" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d630128ed6fd0133339c" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:03:40.931Z" + }, + "updated_at": { + "$date": "2022-06-15T20:03:40.931Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3b45128ed6fd0133453d" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سفید", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d630128ed6fd0133339c" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:04:21.617Z" + }, + "updated_at": { + "$date": "2022-06-15T20:04:21.617Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3b5e128ed6fd01334547" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d630128ed6fd0133339c" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:04:46.559Z" + }, + "updated_at": { + "$date": "2022-06-15T20:04:46.559Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3b8a128ed6fd01334551" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کمکس", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6bc128ed6fd013333bb" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:05:30.106Z" + }, + "updated_at": { + "$date": "2022-06-15T20:14:00.732Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3da1128ed6fd0133457a" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ترک", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6bc128ed6fd013333bb" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:14:25.421Z" + }, + "updated_at": { + "$date": "2022-06-15T20:14:40.647Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa3dfa128ed6fd0133459e" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "v60", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6bc128ed6fd013333bb" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:15:54.350Z" + }, + "updated_at": { + "$date": "2022-06-15T20:15:54.350Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa41ec128ed6fd013345ce" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رینبو", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6cc128ed6fd013333c4" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:32:44.091Z" + }, + "updated_at": { + "$date": "2022-06-20T10:13:51.700Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa4204128ed6fd013345d8" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بولفراگ", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6cc128ed6fd013333c4" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:33:08.878Z" + }, + "updated_at": { + "$date": "2022-06-15T20:33:08.878Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa4633128ed6fd01334614" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلور بنفش", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6cc128ed6fd013333c4" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:50:59.457Z" + }, + "updated_at": { + "$date": "2022-06-15T20:50:59.457Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa464a128ed6fd01334625" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6cc128ed6fd013333c4" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:51:22.629Z" + }, + "updated_at": { + "$date": "2022-06-15T20:51:22.629Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa465f128ed6fd0133462f" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو پرتقال", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6cc128ed6fd013333c4" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:51:43.536Z" + }, + "updated_at": { + "$date": "2022-06-15T20:51:54.581Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa4688128ed6fd01334646" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شوکو شیک", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6e4128ed6fd013333d4" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:52:24.929Z" + }, + "updated_at": { + "$date": "2022-06-28T12:42:44.562Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa46a8128ed6fd01334650" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیناکولادا", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6e4128ed6fd013333d4" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:52:56.191Z" + }, + "updated_at": { + "$date": "2022-06-15T20:52:56.191Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62aa46d2128ed6fd0133465a" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شامروک", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6e4128ed6fd013333d4" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-15T20:53:38.247Z" + }, + "updated_at": { + "$date": "2022-06-15T20:53:38.247Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b03b25128ed6fd01339f9f" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوپ شیر", + "description": "", + "short_description": "", + "category": { + "$oid": "62b03ac4128ed6fd01339f8f" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-20T09:17:25.796Z" + }, + "updated_at": { + "$date": "2022-06-20T09:17:25.796Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b03bad128ed6fd01339fb1" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کشک و بادمجان", + "description": "", + "short_description": "", + "category": { + "$oid": "62b03ac4128ed6fd01339f8f" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-20T09:19:41.829Z" + }, + "updated_at": { + "$date": "2022-07-13T18:19:14.982Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b03bd7128ed6fd01339fbe" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میرزا قاسمی", + "description": "", + "short_description": "", + "category": { + "$oid": "62b03ac4128ed6fd01339f8f" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-20T09:20:23.110Z" + }, + "updated_at": { + "$date": "2022-07-13T18:18:35.850Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b04295128ed6fd0133a115" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسکندر کباب", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-20T09:49:09.990Z" + }, + "updated_at": { + "$date": "2022-06-20T20:33:24.085Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b04c85128ed6fd0133a25b" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جوجه با استخوان", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d201128ed6fd01333327" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-20T10:31:33.901Z" + }, + "updated_at": { + "$date": "2022-06-20T20:31:35.937Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b1d4a4128ed6fd0133bae8" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک موز گردو", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3ddf4a8d41eae80b0d2c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-06-21T14:24:36.708Z" + }, + "updated_at": { + "$date": "2022-06-21T14:24:36.708Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b1dd2e128ed6fd0133bca1" + }, + "price": 560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب پنیری", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d534a8d41eae80b0cfb" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-06-21T15:01:02.650Z" + }, + "updated_at": { + "$date": "2022-06-21T15:01:02.650Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b1e307128ed6fd0133bd25" + }, + "price": 780000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی با سس قارچ فیله گوساله", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d534a8d41eae80b0cfb" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-06-21T15:25:59.166Z" + }, + "updated_at": { + "$date": "2022-07-17T16:08:39.904Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b1e6ac128ed6fd0133bdee" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی با سس قارچ وبیکن گوساله", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d534a8d41eae80b0cfb" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-06-21T15:41:32.147Z" + }, + "updated_at": { + "$date": "2022-06-21T15:41:32.147Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b1e731128ed6fd0133be0b" + }, + "price": 670000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی پنیری با سوجوک و ژامبون میکس ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d534a8d41eae80b0cfb" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-06-21T15:43:45.376Z" + }, + "updated_at": { + "$date": "2022-06-21T15:43:45.376Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b1ea58128ed6fd0133be95" + }, + "price": 560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب سس قارچ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3d534a8d41eae80b0cfb" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-06-21T15:57:12.815Z" + }, + "updated_at": { + "$date": "2022-06-21T15:57:12.815Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62b3683f128ed6fd0133e6df" + }, + "price": 520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو توت فرنگی", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-06-22T19:06:39.194Z" + }, + "updated_at": { + "$date": "2022-06-22T19:06:39.194Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62baf8effbc4ea222a48f03d" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلو آنجل", + "description": "", + "short_description": "", + "category": { + "$oid": "62a9d6cc128ed6fd013333c4" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-06-28T12:49:51.217Z" + }, + "updated_at": { + "$date": "2022-06-28T12:49:51.217Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62c07257fbc4ea222a498210" + }, + "price": 580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تست فیله گوساله", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3db44a8d41eae80b0d16" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-07-02T16:29:11.558Z" + }, + "updated_at": { + "$date": "2022-07-02T16:29:11.558Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62c0727cfbc4ea222a49821a" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تست فیله مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3db44a8d41eae80b0d16" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-07-02T16:29:48.558Z" + }, + "updated_at": { + "$date": "2022-07-02T16:29:48.558Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62c99cdf7400250986c6930c" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "62b03ac4128ed6fd01339f8f" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-07-09T15:21:03.076Z" + }, + "updated_at": { + "$date": "2022-07-09T15:21:03.076Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62c99d627400250986c6933f" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی ویژه", + "description": "", + "short_description": "", + "category": { + "$oid": "62b03ac4128ed6fd01339f8f" + }, + "index": 0, + "storeId": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "created_at": { + "$date": "2022-07-09T15:23:14.688Z" + }, + "updated_at": { + "$date": "2022-07-09T15:23:14.688Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb1f87400250986c70b06" + }, + "price": 1350000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کباب برگ قاجاری", + "description": "گوشت فیله مرینت شده ", + "short_description": "", + "category": { + "$oid": "62ceaa9c7400250986c70a30" + }, + "index": 3, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T11:52:24.843Z" + }, + "updated_at": { + "$date": "2022-07-13T16:25:09.633Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb2a17400250986c70b2f" + }, + "price": 1250000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کباب صدر اعظم", + "description": "فیله مغز دار رُل شده (گوشت قرمز)", + "short_description": "", + "category": { + "$oid": "62ceaa9c7400250986c70a30" + }, + "index": 4, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T11:55:13.979Z" + }, + "updated_at": { + "$date": "2022-07-13T11:59:30.093Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb2e97400250986c70b45" + }, + "price": 1750000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کاسه کباب گلپایگانی", + "description": "گوشت قرمز فیله + گوشت سفید فیله مرغ + قارچ کبابی + روغن محلی + کنجد سفید ", + "short_description": "", + "category": { + "$oid": "62ceaa9c7400250986c70a30" + }, + "index": 1, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T11:56:25.460Z" + }, + "updated_at": { + "$date": "2022-07-13T11:56:25.460Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb3427400250986c70b61" + }, + "price": 1450000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کباب برگ تبريزی ", + "description": "گوشت قرمز فیله + گوشت کوبیده + فلفل دلمه + کنجد سفید", + "short_description": "", + "category": { + "$oid": "62ceaa9c7400250986c70a30" + }, + "index": 2, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T11:57:54.434Z" + }, + "updated_at": { + "$date": "2022-07-13T12:02:54.599Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb3927400250986c70b6e" + }, + "price": 1150000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "جوجه درباری ", + "description": "فیله مغزدار رُل شده (گوشت سفید)", + "short_description": "", + "category": { + "$oid": "62ceaa9c7400250986c70a30" + }, + "index": 5, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T11:59:14.742Z" + }, + "updated_at": { + "$date": "2022-07-13T11:59:14.742Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb3c87400250986c70b85" + }, + "price": 950000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "جوجه ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceaa9c7400250986c70a30" + }, + "index": 6, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:00:08.113Z" + }, + "updated_at": { + "$date": "2022-07-13T12:00:08.113Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb3ea7400250986c70b8f" + }, + "price": 900000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کباب اسکندری", + "description": "گوشت سفید فیله + گوشت کوبیده + فلفل دلمه + کنجد سفید", + "short_description": "", + "category": { + "$oid": "62ceaa9c7400250986c70a30" + }, + "index": 7, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:00:42.828Z" + }, + "updated_at": { + "$date": "2022-07-13T12:03:18.421Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb4fa7400250986c70be9" + }, + "price": 1100000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کباب چنجه", + "description": "فیله", + "short_description": "", + "category": { + "$oid": "62ceaac57400250986c70a39" + }, + "index": 1, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:05:14.343Z" + }, + "updated_at": { + "$date": "2022-07-13T12:05:14.343Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb5237400250986c70bf8" + }, + "price": 990000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کباب بختیاری ", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceaac57400250986c70a39" + }, + "index": 2, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:05:55.834Z" + }, + "updated_at": { + "$date": "2022-07-13T12:05:55.834Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb55f7400250986c70c0d" + }, + "price": 800000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "میکس", + "description": "جوجه ۱۵۰ گرم + کوبیده ۸۵ گرم", + "short_description": "", + "category": { + "$oid": "62ceaac57400250986c70a39" + }, + "index": 3, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:06:55.474Z" + }, + "updated_at": { + "$date": "2022-07-13T12:06:55.474Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb5de7400250986c70c45" + }, + "price": 650000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کباب نگینی ", + "description": "۲ سیخ ۱۸۰ گرمی", + "short_description": "", + "category": { + "$oid": "62ceaac57400250986c70a39" + }, + "index": 4, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:09:02.438Z" + }, + "updated_at": { + "$date": "2022-07-13T12:09:02.438Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb6137400250986c70c5c" + }, + "price": 630000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کباب گلپایگانی", + "description": "۲ سیخ ۱۸۰ گرمی با دورچین ", + "short_description": "", + "category": { + "$oid": "62ceaac57400250986c70a39" + }, + "index": 5, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:09:55.337Z" + }, + "updated_at": { + "$date": "2022-07-13T12:09:55.337Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb6397400250986c70c6d" + }, + "price": 600000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "جوجه کباب", + "description": "۲۵۰ گرمی", + "short_description": "", + "category": { + "$oid": "62ceaac57400250986c70a39" + }, + "index": 6, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:10:33.953Z" + }, + "updated_at": { + "$date": "2022-07-13T12:10:33.953Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb6567400250986c70c84" + }, + "price": 600000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "جوجه چینی", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceaac57400250986c70a39" + }, + "index": 7, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:11:02.224Z" + }, + "updated_at": { + "$date": "2022-07-13T12:11:02.224Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb6727400250986c70c9a" + }, + "price": 590000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "شنسل مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceaac57400250986c70a39" + }, + "index": 8, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:11:30.443Z" + }, + "updated_at": { + "$date": "2022-07-13T12:11:30.443Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb6997400250986c70cad" + }, + "price": 320000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "چلو ایرانی", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceaac57400250986c70a39" + }, + "index": 9, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:12:09.353Z" + }, + "updated_at": { + "$date": "2022-07-13T12:12:09.353Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb7e87400250986c70ce8" + }, + "price": 75000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "ماست موسیر پاستوریزه ", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceab227400250986c70a42" + }, + "index": 1, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:17:44.588Z" + }, + "updated_at": { + "$date": "2022-07-13T12:17:44.588Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb8237400250986c70cf2" + }, + "price": 130000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "زیتون پروده پاستوریزه مهراد", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceab227400250986c70a42" + }, + "index": 2, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:18:43.231Z" + }, + "updated_at": { + "$date": "2022-07-13T12:18:43.231Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb8e37400250986c70cfc" + }, + "price": 130000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "زيتون شور", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceab227400250986c70a42" + }, + "index": 3, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:21:55.993Z" + }, + "updated_at": { + "$date": "2022-07-13T12:21:55.993Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb90f7400250986c70d06" + }, + "price": 150000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "سالاد کاهو", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceab227400250986c70a42" + }, + "index": 4, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:22:39.251Z" + }, + "updated_at": { + "$date": "2022-07-13T12:22:39.251Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb9377400250986c70d19" + }, + "price": 130000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "سیر ترشی", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceab227400250986c70a42" + }, + "index": 5, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:23:19.541Z" + }, + "updated_at": { + "$date": "2022-07-13T12:23:19.541Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceb9a07400250986c70d23" + }, + "price": 120000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "نوشابه قوطی", + "description": "کوکا - فانتا - سون آپ ", + "short_description": "", + "category": { + "$oid": "62ceab507400250986c70a4b" + }, + "index": 1, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:25:04.844Z" + }, + "updated_at": { + "$date": "2022-07-13T12:25:04.844Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceba2b7400250986c70d2f" + }, + "price": 65000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "نوشابه ۳۰۰ سی سی", + "description": "کوکا - پپسی - فانتا - اسپرایت ", + "short_description": "", + "category": { + "$oid": "62ceab507400250986c70a4b" + }, + "index": 2, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:27:23.603Z" + }, + "updated_at": { + "$date": "2022-07-13T12:27:23.603Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ceba627400250986c70d3b" + }, + "price": 150000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "نوشابه خانواده ", + "description": "کوکا - فانتا - اسپرایت ", + "short_description": "", + "category": { + "$oid": "62ceab507400250986c70a4b" + }, + "index": 0, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:28:18.841Z" + }, + "updated_at": { + "$date": "2022-07-13T12:28:18.841Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebaad7400250986c70d51" + }, + "price": 120000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "دلستر قوطی تک نفره", + "description": "هلو - لیمو - استوایی - آناناس", + "short_description": "", + "category": { + "$oid": "62ceab507400250986c70a4b" + }, + "index": 3, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:29:33.748Z" + }, + "updated_at": { + "$date": "2022-07-13T12:29:33.748Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebb017400250986c70d5b" + }, + "price": 150000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "دلستر خانواده ", + "description": "هلو - لیمو - استوایی - آناناس", + "short_description": "", + "category": { + "$oid": "62ceab507400250986c70a4b" + }, + "index": 4, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:30:57.892Z" + }, + "updated_at": { + "$date": "2022-07-13T12:30:57.892Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebb227400250986c70d65" + }, + "price": 150000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceab507400250986c70a4b" + }, + "index": 5, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:31:30.271Z" + }, + "updated_at": { + "$date": "2022-07-13T12:31:30.271Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebb547400250986c70d72" + }, + "price": 80000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "تاک انگور ", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceab507400250986c70a4b" + }, + "index": 6, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:32:20.282Z" + }, + "updated_at": { + "$date": "2022-07-13T12:32:20.282Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebb767400250986c70d7c" + }, + "price": 40000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "آب معدنی تک نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceab507400250986c70a4b" + }, + "index": 7, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:32:54.352Z" + }, + "updated_at": { + "$date": "2022-07-13T12:32:54.352Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebbaf7400250986c70d95" + }, + "price": 80000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "آب معدنی خانواده", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceab507400250986c70a4b" + }, + "index": 8, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:33:51.519Z" + }, + "updated_at": { + "$date": "2022-07-13T12:33:51.519Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebc2a7400250986c70db7" + }, + "price": 300000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "چای فلاسک ساده با نبات", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceabc87400250986c70a68" + }, + "index": 1, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:35:54.853Z" + }, + "updated_at": { + "$date": "2022-07-13T12:35:54.853Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebc687400250986c70dc4" + }, + "price": 350000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "چای فلاسک طعم با نبات", + "description": "هل - دارچین - زنجبیل - گلمحمدی- به لیمو ", + "short_description": "", + "category": { + "$oid": "62ceabc87400250986c70a68" + }, + "index": 2, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:36:56.288Z" + }, + "updated_at": { + "$date": "2022-07-13T12:36:56.288Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebc857400250986c70dce" + }, + "price": 400000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "چای فلاسک زعفرانی با نبات", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceabc87400250986c70a68" + }, + "index": 3, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:37:25.781Z" + }, + "updated_at": { + "$date": "2022-07-13T12:37:25.781Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebcd97400250986c70de7" + }, + "price": 120000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceabc87400250986c70a68" + }, + "index": 4, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:38:49.821Z" + }, + "updated_at": { + "$date": "2022-07-13T12:38:49.821Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebcf57400250986c70dfa" + }, + "price": 100000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceabc87400250986c70a68" + }, + "index": 5, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:39:17.999Z" + }, + "updated_at": { + "$date": "2022-07-13T12:39:17.999Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebd187400250986c70e04" + }, + "price": 80000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کافی میکس", + "description": "", + "short_description": "", + "category": { + "$oid": "62ceabc87400250986c70a68" + }, + "index": 6, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:39:52.690Z" + }, + "updated_at": { + "$date": "2022-07-13T12:39:52.690Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebdde7400250986c70e2c" + }, + "price": 500000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "ساده", + "description": "بلوبری - آدامس دارچین - نعنا پرتقال - دوسیب - دوسیب شلیل - هندونه نعنا - موهیتو - سیب یخ", + "short_description": "", + "category": { + "$oid": "62ceabe27400250986c70a71" + }, + "index": 1, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:43:10.581Z" + }, + "updated_at": { + "$date": "2022-07-13T12:43:10.581Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebe037400250986c70e51" + }, + "price": 900000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "عربی", + "description": "آدامس دارچین - تمشک بستنی ", + "short_description": "", + "category": { + "$oid": "62ceabe27400250986c70a71" + }, + "index": 2, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:43:47.413Z" + }, + "updated_at": { + "$date": "2022-07-13T12:43:47.413Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebe857400250986c70e83" + }, + "price": 80000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "بستنی سنتی", + "description": "", + "short_description": "", + "category": { + "$oid": "62cebe677400250986c70e76" + }, + "index": 1, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:45:57.747Z" + }, + "updated_at": { + "$date": "2022-07-13T12:45:57.747Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebebe7400250986c70ea9" + }, + "price": 60000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "بستنی پاستوریزه ", + "description": "", + "short_description": "", + "category": { + "$oid": "62cebe677400250986c70e76" + }, + "index": 2, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:46:54.398Z" + }, + "updated_at": { + "$date": "2022-07-13T12:46:54.398Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62cebed47400250986c70ebf" + }, + "price": 300000, + "stock": 1000, + "static_discount": 0, + "active": true, + "name": "کیک روز", + "description": "", + "short_description": "", + "category": { + "$oid": "62cebe677400250986c70e76" + }, + "index": 3, + "storeId": { + "$oid": "62cea8d47400250986c70a07" + }, + "created_at": { + "$date": "2022-07-13T12:47:16.859Z" + }, + "updated_at": { + "$date": "2022-07-13T12:47:16.859Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62ced9a17400250986c712a5" + }, + "price": 430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز کیک نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3ddf4a8d41eae80b0d2c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-07-13T14:41:37.322Z" + }, + "updated_at": { + "$date": "2022-09-04T14:45:28.045Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62d78ba07400250986c7ee65" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تونیک", + "description": "آب لیموی تازه ، یخ ، یک شات اسپرسو ، ( سیروپ کارامل به دلخواه)", + "short_description": "", + "category": { + "$oid": "6208c5582cf0cf6959b13ca7" + }, + "index": 0, + "storeId": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "created_at": { + "$date": "2022-07-20T04:59:12.332Z" + }, + "updated_at": { + "$date": "2022-07-20T04:59:12.332Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62deacecfaacb066e1208800" + }, + "price": 3090000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اگ بندیکت", + "description": "نان انگلیش مافین،بیکن،قارچ،اسفناج،پچد اگ،سس هالندز", + "short_description": "", + "category": { + "$oid": "62deac91faacb066e12087e7" + }, + "index": 7, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-07-25T14:47:08.197Z" + }, + "updated_at": { + "$date": "2025-11-13T11:38:34.347Z" + }, + "__v": 0, + "image": "food_1729757064050.png" +}, +{ + "_id": { + "$oid": "62deaf7afaacb066e12088d7" + }, + "price": 3250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بوته اسپشیال", + "description": "نیمرو،سوسیس،بیکن،هش براون، گوجه کبابی،قارچ کبابی،خوراک لوبیا و سالاد ", + "short_description": "", + "category": { + "$oid": "62deac91faacb066e12087e7" + }, + "index": 6, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-07-25T14:58:02.674Z" + }, + "updated_at": { + "$date": "2025-12-09T12:04:01.625Z" + }, + "__v": 0, + "image": "food_1765281838221.png" +}, +{ + "_id": { + "$oid": "62deb05dfaacb066e1208900" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اراک برک", + "description": "سر شیر، پنیر، کره، گردو، مربا، عسل، نوتلا، گوجه، خیار، دورچین به همراه نان", + "short_description": "", + "category": { + "$oid": "62deac91faacb066e12087e7" + }, + "index": 5, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-07-25T15:01:49.893Z" + }, + "updated_at": { + "$date": "2025-11-13T11:38:58.776Z" + }, + "__v": 0, + "image": "food_1761678002013.png" +}, +{ + "_id": { + "$oid": "62e00b91faacb066e120adb5" + }, + "price": 590000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیمون کوکو", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-07-26T15:43:13.749Z" + }, + "updated_at": { + "$date": "2022-07-26T15:43:13.749Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62e00d2bfaacb066e120adf2" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورنج سک ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3df34a8d41eae80b0d37" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-07-26T15:50:03.086Z" + }, + "updated_at": { + "$date": "2022-07-26T15:50:03.086Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62e3d62696be484852cba02d" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پپرونی", + "description": "", + "short_description": "", + "category": { + "$oid": "62dd47a5faacb066e12064d0" + }, + "index": 2, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2022-07-29T12:44:22.888Z" + }, + "updated_at": { + "$date": "2023-10-04T18:32:05.500Z" + }, + "__v": 0, + "image": "food_1659522888259.png" +}, +{ + "_id": { + "$oid": "62e4010e96be484852cba474" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا پپرونی", + "description": "پپرونی - سس مخصوص موتزارلا", + "short_description": "", + "category": { + "$oid": "62e400a696be484852cba44b" + }, + "index": 0, + "storeId": { + "$oid": "62e3ff5e96be484852cba3c3" + }, + "created_at": { + "$date": "2022-07-29T15:47:26.777Z" + }, + "updated_at": { + "$date": "2022-07-29T15:47:37.891Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "62e57ea796be484852cbd15a" + }, + "price": 1990000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تاور رینگز", + "description": "7 حلقه پیاز سوخاری", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 12, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-07-30T18:55:35.094Z" + }, + "updated_at": { + "$date": "2025-12-25T12:31:10.976Z" + }, + "__v": 0, + "image": "food_1728330592819.png" +}, +{ + "_id": { + "$oid": "62e6265396be484852cbd498" + }, + "price": 2450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن آلفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "62dd47a5faacb066e12064d0" + }, + "index": 4, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2022-07-31T06:50:59.196Z" + }, + "updated_at": { + "$date": "2023-10-04T18:32:36.909Z" + }, + "__v": 0, + "image": "food_1663567920922.png" +}, +{ + "_id": { + "$oid": "62e65b7296be484852cbd95b" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وا فل", + "description": "دو عدد وافل، یک اسکوپ بستنی، کرم شکلات و دورچین میوه", + "short_description": "", + "category": { + "$oid": "62deac91faacb066e12087e7" + }, + "index": 10, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-07-31T10:37:38.632Z" + }, + "updated_at": { + "$date": "2025-11-13T11:39:32.979Z" + }, + "__v": 0, + "image": "food_1729758734918.png" +}, +{ + "_id": { + "$oid": "62e65c1396be484852cbd97a" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنکیک", + "description": "پنکیک، مربا ویوافل، کرم شکلات و دورچین میوه جات فصل", + "short_description": "", + "category": { + "$oid": "62deac91faacb066e12087e7" + }, + "index": 9, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-07-31T10:40:19.603Z" + }, + "updated_at": { + "$date": "2025-08-21T11:53:47.273Z" + }, + "__v": 0, + "image": "food_1729756930760.png" +}, +{ + "_id": { + "$oid": "62ef9d6296be484852ccbf9d" + }, + "price": 5890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاتانیا", + "description": "فیله گوشت مزه دار شده، سالامی، سس گوجه، پنیر پارمسان", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 7, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-08-07T11:09:22.410Z" + }, + "updated_at": { + "$date": "2025-12-25T12:31:36.623Z" + }, + "__v": 0, + "image": "food_1729756502136.png" +}, +{ + "_id": { + "$oid": "62fcced796be484852cdf7fe" + }, + "price": 4790000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد مرغ و گردو", + "description": "کاهو، مرغ گریل شده ، گردو ، گوجه چری ، پنیر پارمسان ، سس آنتروکوت، جعفری", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 2, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-08-17T11:19:51.164Z" + }, + "updated_at": { + "$date": "2025-12-25T12:31:46.793Z" + }, + "__v": 0, + "image": "food_1729757913755.png" +}, +{ + "_id": { + "$oid": "630a43dd96be484852cf9d2c" + }, + "price": 5480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شف برگر (امضای ژیوان).. burger chef", + "description": "گوشت خالص برگر/ رست بیف/ سس قارچ/پنیر گودا/ نان با خمیر مخصوص..burger meat/roast beef/mushroom sauce/gouda cheese/bread with special dough ", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 1, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2022-08-27T16:18:37.589Z" + }, + "updated_at": { + "$date": "2025-12-04T12:32:24.286Z" + }, + "__v": 0, + "image": "food_1713706844133.png" +}, +{ + "_id": { + "$oid": "6314a58fe410c5322751b152" + }, + "price": 1410000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنینی مرغ", + "description": "فیله مرغ - قارچ - پنیر گودا - پنیر پیتزا - سیب زمینی - سالاد", + "short_description": "", + "category": { + "$oid": "6314a2d5e410c5322751b0ba" + }, + "index": 1, + "storeId": { + "$oid": "63131c3d96be484852d0a9ed" + }, + "image": "food_1662297483531.png", + "created_at": { + "$date": "2022-09-04T13:18:07.576Z" + }, + "updated_at": { + "$date": "2022-09-04T13:21:39.848Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314a640e410c5322751b19a" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنینی هات داگ اسپشیال", + "description": "هات داگ پنیری - قارچ - پنیر گودا - پنیر پیتزا - سیب زمینی - سالاد", + "short_description": "", + "category": { + "$oid": "6314a2d5e410c5322751b0ba" + }, + "index": 2, + "storeId": { + "$oid": "63131c3d96be484852d0a9ed" + }, + "image": "food_1662297660322.png", + "created_at": { + "$date": "2022-09-04T13:21:04.159Z" + }, + "updated_at": { + "$date": "2022-09-04T13:21:26.765Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314acb6e410c5322751b3e4" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا استابیوتی", + "description": "پیتزا پپرونی", + "short_description": "", + "category": { + "$oid": "6314ab2be410c5322751b32c" + }, + "index": 1, + "storeId": { + "$oid": "6314a7c9e410c5322751b227" + }, + "image": "food_1662299315139.png", + "created_at": { + "$date": "2022-09-04T13:48:38.961Z" + }, + "updated_at": { + "$date": "2022-09-04T13:48:38.961Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6314d485e410c5322751bf80" + }, + "price": 370000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آویشن", + "description": "", + "short_description": "", + "category": { + "$oid": "61ee3f954a8d41eae80b0e1c" + }, + "index": 0, + "storeId": { + "$oid": "61e509141601c7c7d9141989" + }, + "created_at": { + "$date": "2022-09-04T16:38:29.346Z" + }, + "updated_at": { + "$date": "2022-09-04T16:38:29.346Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63401da0e410c5322755338e" + }, + "price": 4070000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن اسفناچ(new)", + "description": "سینه مرغ گریل، نان چیاباتا، سس زرشک، سس اسفناج، کاهو فرانسه، گوجه فرنگی، سیب زمینی", + "short_description": "", + "category": { + "$oid": "6207a2681ee4b0270db4c429" + }, + "index": 5, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2022-10-07T12:37:52.746Z" + }, + "updated_at": { + "$date": "2025-12-25T12:32:28.243Z" + }, + "__v": 0, + "image": "food_1728331212413.png" +}, +{ + "_id": { + "$oid": "63501e05f031b836b300660d" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیرنسکافه", + "description": "", + "short_description": "", + "category": { + "$oid": "627ff48fec44ae525a153a39" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-10-19T15:55:49.254Z" + }, + "updated_at": { + "$date": "2025-08-19T08:38:41.487Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63501e24f031b836b3006617" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "627ff48fec44ae525a153a39" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2022-10-19T15:56:20.640Z" + }, + "updated_at": { + "$date": "2025-08-19T08:37:54.844Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6366256cf031b836b301b7f5" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لوتوس شیک latus millshake", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1befc1eece3d7626390" + }, + "index": 1, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2022-11-05T08:57:16.844Z" + }, + "updated_at": { + "$date": "2025-09-29T10:54:51.428Z" + }, + "__v": 0, + "image": "food_1715855188287.png" +}, +{ + "_id": { + "$oid": "636625f7f031b836b301b840" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورئو شیک oreo milkshake", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1befc1eece3d7626390" + }, + "index": 2, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2022-11-05T08:59:35.577Z" + }, + "updated_at": { + "$date": "2025-09-29T10:54:20.773Z" + }, + "__v": 0, + "image": "food_1715854766909.png" +}, +{ + "_id": { + "$oid": "636627e7f031b836b301b89a" + }, + "price": 1430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کورتادو Cortado", + "description": "قهوه 70/30و شیر به نسبت یک دیگر ", + "short_description": "", + "category": { + "$oid": "61b1a16afc1eece3d7626360" + }, + "index": 1, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2022-11-05T09:07:51.526Z" + }, + "updated_at": { + "$date": "2025-12-27T09:51:36.681Z" + }, + "__v": 0, + "image": "food_1715710960967.png" +}, +{ + "_id": { + "$oid": "63662ad9f031b836b301b9e3" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو میکس mixed mojito", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1a2fc1eece3d7626383" + }, + "index": 2, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2022-11-05T09:20:25.125Z" + }, + "updated_at": { + "$date": "2025-09-29T10:31:33.252Z" + }, + "__v": 0, + "image": "food_1714293251086.png" +}, +{ + "_id": { + "$oid": "6398895c82d7fc8d726a7b9c" + }, + "price": 430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو", + "description": "میکس قهوه مورد نظر 70-30 در صورت نیاز قابل تغییر میباشد", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 1, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1670941019217.png", + "created_at": { + "$date": "2022-12-13T14:17:00.069Z" + }, + "updated_at": { + "$date": "2023-08-21T16:47:46.688Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "639889e882d7fc8d726a7bae" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 3, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1670941158643.png", + "created_at": { + "$date": "2022-12-13T14:19:20.229Z" + }, + "updated_at": { + "$date": "2023-08-21T16:47:12.586Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63988a6082d7fc8d726a7bbc" + }, + "price": 510000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کورتادو", + "description": "", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 7, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1670941278888.png", + "created_at": { + "$date": "2022-12-13T14:21:20.097Z" + }, + "updated_at": { + "$date": "2023-10-04T16:50:51.305Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63988ac882d7fc8d726a7bcb" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 4, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1670941383289.png", + "created_at": { + "$date": "2022-12-13T14:23:04.667Z" + }, + "updated_at": { + "$date": "2023-10-04T16:49:31.800Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6398922982d7fc8d726a7c99" + }, + "price": 520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 11, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683374090799.png", + "created_at": { + "$date": "2022-12-13T14:54:33.143Z" + }, + "updated_at": { + "$date": "2023-10-04T16:41:40.700Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6398936282d7fc8d726a7cc9" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا ", + "description": "", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 10, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1670943585434.png", + "created_at": { + "$date": "2022-12-13T14:59:46.537Z" + }, + "updated_at": { + "$date": "2023-10-04T16:44:04.285Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "639c92ad82d7fc8d726ac523" + }, + "price": 530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک روز", + "description": "", + "short_description": "", + "category": { + "$oid": "639c921d82d7fc8d726ac4ef" + }, + "index": 1, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1671205548041.png", + "created_at": { + "$date": "2022-12-16T15:45:49.732Z" + }, + "updated_at": { + "$date": "2023-10-04T19:45:59.840Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "639c949082d7fc8d726ac5bd" + }, + "price": 770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وافل", + "description": "شکلات و موز", + "short_description": "", + "category": { + "$oid": "639c921d82d7fc8d726ac4ef" + }, + "index": 5, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1671206028714.png", + "created_at": { + "$date": "2022-12-16T15:53:52.511Z" + }, + "updated_at": { + "$date": "2023-08-21T17:17:21.606Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63c90136701ec3ea9971eed5" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "سیب زمینی چدار", + "description": "سیب زمینی سرخ شده. دیپ چدار . جعفری و ادویه مخصوص", + "short_description": "", + "category": { + "$oid": "6225095ca03b80e0a44ef756" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "image": "food_1674117429783.png", + "created_at": { + "$date": "2023-01-19T08:37:10.915Z" + }, + "updated_at": { + "$date": "2025-08-19T08:35:55.366Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63cc06ae701ec3ea99722d86" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "اسپرسو و شیر", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 5, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683373474894.png", + "created_at": { + "$date": "2023-01-21T15:37:18.866Z" + }, + "updated_at": { + "$date": "2023-10-04T16:48:55.989Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63cc100b701ec3ea99722fcf" + }, + "price": 610000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کمکس", + "description": "", + "short_description": "", + "category": { + "$oid": "63cc0eea701ec3ea99722f38" + }, + "index": 1, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1674317833311.png", + "created_at": { + "$date": "2023-01-21T16:17:15.975Z" + }, + "updated_at": { + "$date": "2023-06-10T18:50:39.005Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63cc10d0701ec3ea99723021" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سایفون", + "description": "", + "short_description": "", + "category": { + "$oid": "63cc0eea701ec3ea99722f38" + }, + "index": 2, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1674318031385.png", + "created_at": { + "$date": "2023-01-21T16:20:32.659Z" + }, + "updated_at": { + "$date": "2023-06-10T18:50:19.665Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63cc1143701ec3ea99723036" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "V 60", + "description": "", + "short_description": "", + "category": { + "$oid": "63cc0eea701ec3ea99722f38" + }, + "index": 3, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1674318145146.png", + "created_at": { + "$date": "2023-01-21T16:22:27.164Z" + }, + "updated_at": { + "$date": "2023-06-10T18:50:00.668Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63cc11b1701ec3ea99723046" + }, + "price": 530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایروپرس", + "description": "", + "short_description": "", + "category": { + "$oid": "63cc0eea701ec3ea99722f38" + }, + "index": 4, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683374626803.png", + "created_at": { + "$date": "2023-01-21T16:24:17.981Z" + }, + "updated_at": { + "$date": "2023-06-10T18:49:38.925Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "63cc1217701ec3ea9972305f" + }, + "price": 420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ترک", + "description": "در صورت نیاز شیر اضافه میشود", + "short_description": "", + "category": { + "$oid": "63cc0eea701ec3ea99722f38" + }, + "index": 5, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1674318357015.png", + "created_at": { + "$date": "2023-01-21T16:25:59.757Z" + }, + "updated_at": { + "$date": "2023-08-21T16:59:14.804Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "640f3702dceeef8194956a72" + }, + "price": 530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پشن لاین", + "description": "پشن فروت.لیمو.آلبالو.سودا.بلو کاراسایو", + "short_description": "", + "category": { + "$oid": "62815ce6d65610bd301c6585" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2023-03-13T14:45:22.801Z" + }, + "updated_at": { + "$date": "2023-03-13T15:28:50.040Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64105f93dceeef81949578bd" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایریش کافی", + "description": "شکر قهوه ای +قهوه+سیروپ ایریش+فوم شیر", + "short_description": "", + "category": { + "$oid": "62815bddd65610bd301c653a" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2023-03-14T11:50:43.130Z" + }, + "updated_at": { + "$date": "2023-03-14T11:50:43.130Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64105ffcdceeef81949578de" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bf1d65610bd301c6543" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2023-03-14T11:52:28.636Z" + }, + "updated_at": { + "$date": "2023-03-14T11:52:28.636Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6410605fdceeef81949578ea" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای مینت", + "description": "نعناع+چای سیاه+دارچین", + "short_description": "", + "category": { + "$oid": "62815c77d65610bd301c6564" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2023-03-14T11:54:07.156Z" + }, + "updated_at": { + "$date": "2023-03-14T11:54:07.156Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "641215b1dceeef819495930d" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش به", + "description": "", + "short_description": "", + "category": { + "$oid": "62815c77d65610bd301c6564" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2023-03-15T19:00:01.066Z" + }, + "updated_at": { + "$date": "2023-03-15T19:00:01.066Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64246049e9ad5f14dee99ca7" + }, + "price": 420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "62815bf1d65610bd301c6543" + }, + "index": 0, + "storeId": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "created_at": { + "$date": "2023-03-29T15:59:05.680Z" + }, + "updated_at": { + "$date": "2023-03-29T15:59:05.680Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6426c73ce9ad5f14dee9ce40" + }, + "price": 4730000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیف اسفناج(new)", + "description": "پنه ، فیله گوساله ، سس اسفناج، پنیر پارمسان، چیپس هویج، میکرو گرین، گوجه خشک", + "short_description": "", + "category": { + "$oid": "6207a1f81ee4b0270db4c3ef" + }, + "index": 1, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2023-03-31T11:42:52.062Z" + }, + "updated_at": { + "$date": "2025-12-25T12:32:40.395Z" + }, + "__v": 0, + "image": "food_1728330530614.png" +}, +{ + "_id": { + "$oid": "64285eace9ad5f14dee9f141" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "چیز فرایز لارج", + "description": "سیب زمینی سرخ شده همراه با سس قارچ", + "short_description": "", + "category": { + "$oid": "6225095ca03b80e0a44ef756" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2023-04-01T16:41:16.807Z" + }, + "updated_at": { + "$date": "2025-08-19T09:11:38.715Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6433097be9ad5f14deea9615" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "کیک دبل چاکلت(new)", + "description": "", + "short_description": "", + "category": { + "$oid": "627fe90bec44ae525a153778" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2023-04-09T18:52:43.222Z" + }, + "updated_at": { + "$date": "2025-08-19T08:31:35.553Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "643d684e98ff3c74143fd532" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا ژامبون", + "description": "", + "short_description": "", + "category": { + "$oid": "62dd47a5faacb066e12064d0" + }, + "index": 3, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1681745992648.png", + "created_at": { + "$date": "2023-04-17T15:39:58.298Z" + }, + "updated_at": { + "$date": "2023-10-04T18:33:40.788Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "643d68d698ff3c74143fd545" + }, + "price": 1730000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا مارگاریتا", + "description": "", + "short_description": "", + "category": { + "$oid": "62dd47a5faacb066e12064d0" + }, + "index": 10, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1681746130413.png", + "created_at": { + "$date": "2023-04-17T15:42:14.869Z" + }, + "updated_at": { + "$date": "2023-10-04T18:34:45.753Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "643d76d998ff3c74143fd89f" + }, + "price": 810000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک بادام زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 9, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683377587080.png", + "created_at": { + "$date": "2023-04-17T16:42:01.333Z" + }, + "updated_at": { + "$date": "2023-10-04T18:58:02.854Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "644935de98ff3c741440b042" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی سرخ شده", + "description": "سیب زمینی .. French fries", + "short_description": "", + "category": { + "$oid": "61ac607926d2e0e4fbd9b465" + }, + "index": 1, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-04-26T14:31:58.773Z" + }, + "updated_at": { + "$date": "2025-12-04T11:57:54.588Z" + }, + "__v": 0, + "image": "food_1715934532096.png" +}, +{ + "_id": { + "$oid": "6450ad0b98ff3c7414414285" + }, + "price": 2080000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر آجیلی سپنج", + "description": "۱۵۰ گرم گوشت خالص ،مغز پسته ،پنیر پیتزا،کاهو،گوجه،پیاز کاراملی،سس پسته و گردو،سس مک دونالد،دیپ چدار،گودا)", + "short_description": "", + "category": { + "$oid": "6450ac7a98ff3c741441425a" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:26:19.767Z" + }, + "updated_at": { + "$date": "2023-11-20T15:18:24.727Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450ad2998ff3c741441428f" + }, + "price": 1880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماشروم برگر", + "description": "(۱۳۰ گرم گوشت خالص،سس قارچ،کاهو،گوجه،جعفری،) ", + "short_description": "", + "category": { + "$oid": "6450ac7a98ff3c741441425a" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:26:49.989Z" + }, + "updated_at": { + "$date": "2023-11-20T15:18:58.109Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450ad6498ff3c74144142b1" + }, + "price": 1770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هالوپینو", + "description": "(۱۳۰ گرم گوشت،هالوپینو،کاهو،گوجه،گودا)", + "short_description": "", + "category": { + "$oid": "6450ac7a98ff3c741441425a" + }, + "index": 4, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:27:48.882Z" + }, + "updated_at": { + "$date": "2023-11-20T15:19:18.097Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450ad7f98ff3c74144142bb" + }, + "price": 1920000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز برگر", + "description": "(۱۳۰ گرم گوشت خالص،گوجه،خیارشور،کاهو ،گودا،دیپ چدار)", + "short_description": "", + "category": { + "$oid": "6450ac7a98ff3c741441425a" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:28:15.949Z" + }, + "updated_at": { + "$date": "2023-11-20T15:18:40.038Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450addb98ff3c74144142d3" + }, + "price": 1460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر فیله سوخاری", + "description": "(فیله سوخاری ،سس قارچ،کاهو،گوجه)", + "short_description": "", + "category": { + "$oid": "6450ac7a98ff3c741441425a" + }, + "index": 6, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:29:47.602Z" + }, + "updated_at": { + "$date": "2023-11-20T15:19:37.977Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450ae2298ff3c74144142f1" + }, + "price": 1670000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آلفردو", + "description": "(پنه ۱۶۰ گرم،فیله مرغ گریل ،سس قارچ،پنیر پارمسان)", + "short_description": "", + "category": { + "$oid": "6450adf498ff3c74144142e4" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:30:58.284Z" + }, + "updated_at": { + "$date": "2023-11-20T15:21:27.555Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450ae7598ff3c74144142fe" + }, + "price": 1720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پستو", + "description": "(پنه ۱۶۰ گرم،فیله مرغ گریل شده،سس پستو،پنیر پارمسان)", + "short_description": "", + "category": { + "$oid": "6450adf498ff3c74144142e4" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:32:21.044Z" + }, + "updated_at": { + "$date": "2023-11-20T15:21:17.634Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b01198ff3c7414414332" + }, + "price": 1820000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گوشت پستو", + "description": "(۸۰ گرم گوشت راسته خالص،سس پستو ،گوجه،ریحون،پارمسان)", + "short_description": "", + "category": { + "$oid": "6450aec598ff3c741441431c" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:39:13.166Z" + }, + "updated_at": { + "$date": "2023-11-20T15:21:52.489Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b06b98ff3c741441433f" + }, + "price": 1770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گوشت باربیکیو", + "description": "(۸۰ گرم گوشت راسته خالص ،پیاز کاراملی،هالوپینو،گوجه ،کاهو،سس باربیکیو)", + "short_description": "", + "category": { + "$oid": "6450aec598ff3c741441431c" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:40:43.340Z" + }, + "updated_at": { + "$date": "2023-11-20T15:22:06.597Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b0df98ff3c741441436a" + }, + "price": 1470000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مرغ پستو", + "description": "(فیله مرغ گریل ۲ عدد ،سس پستو،گوجه،ریحون،پارمسان)", + "short_description": "", + "category": { + "$oid": "6450aec598ff3c741441431c" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:42:39.323Z" + }, + "updated_at": { + "$date": "2023-11-20T15:22:22.031Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b0fd98ff3c7414414374" + }, + "price": 1420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مرغ باربیکیو", + "description": "(فیله مرغ ۲ عدد ،پیاز کاراملی،هالوپینو،گوجه،کاهو،سس باربیکیو)", + "short_description": "", + "category": { + "$oid": "6450aec598ff3c741441431c" + }, + "index": 4, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:43:09.870Z" + }, + "updated_at": { + "$date": "2023-11-20T15:22:30.560Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b13298ff3c741441439a" + }, + "price": 1220000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ کاراملی", + "description": "(سوسیس،پیاز کاراملی،گوجه،خیارشور،خلال سیب زمینی،گودا)", + "short_description": "", + "category": { + "$oid": "6450b11298ff3c7414414381" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:44:02.674Z" + }, + "updated_at": { + "$date": "2023-11-20T15:23:29.114Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b15398ff3c74144143a4" + }, + "price": 1380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ ماشروم", + "description": "(سوسیس ،سس قارچ،جعفری،پارمسان)", + "short_description": "", + "category": { + "$oid": "6450b11298ff3c7414414381" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:44:35.936Z" + }, + "updated_at": { + "$date": "2023-11-20T15:23:01.597Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b18698ff3c74144143ae" + }, + "price": 1270000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ قارچ و پنیر", + "description": "(سوسیس،کاهو،گوجه،پنیر پیتزا،قارچ)", + "short_description": "", + "category": { + "$oid": "6450b11298ff3c7414414381" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:45:26.528Z" + }, + "updated_at": { + "$date": "2023-11-20T15:23:16.468Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b1a098ff3c74144143b8" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تک لقمه", + "description": "(سوسیس،خلال سیب زمینی،جعفری)", + "short_description": "", + "category": { + "$oid": "6450b11298ff3c7414414381" + }, + "index": 5, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:45:52.607Z" + }, + "updated_at": { + "$date": "2023-11-20T15:24:16.835Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b1b998ff3c74144143c2" + }, + "price": 580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تک لقمه ویژه", + "description": "(سوسیس،خلال سیب زمینی،جعفری،سس،پنیر گودا)", + "short_description": "", + "category": { + "$oid": "6450b11298ff3c7414414381" + }, + "index": 4, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:46:17.396Z" + }, + "updated_at": { + "$date": "2023-11-20T15:24:02.295Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b1f098ff3c74144143df" + }, + "price": 1420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b1d498ff3c74144143d2" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:47:12.754Z" + }, + "updated_at": { + "$date": "2023-11-20T15:25:15.727Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b20d98ff3c74144143e9" + }, + "price": 830000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قارچ سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b1d498ff3c74144143d2" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:47:41.027Z" + }, + "updated_at": { + "$date": "2023-11-20T15:24:47.782Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b22898ff3c74144143f3" + }, + "price": 1980000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b1d498ff3c74144143d2" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:48:08.940Z" + }, + "updated_at": { + "$date": "2023-11-20T15:25:04.780Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b27898ff3c7414414422" + }, + "price": 880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی با سس قارچ", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b24a98ff3c7414414400" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:49:28.794Z" + }, + "updated_at": { + "$date": "2023-11-20T15:25:57.452Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b29698ff3c7414414432" + }, + "price": 970000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی چدار", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b24a98ff3c7414414400" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:49:58.019Z" + }, + "updated_at": { + "$date": "2023-11-20T15:26:12.691Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b2bd98ff3c7414414445" + }, + "price": 580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی سس مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b24a98ff3c7414414400" + }, + "index": 4, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:50:37.355Z" + }, + "updated_at": { + "$date": "2023-11-20T15:25:38.799Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b2d498ff3c741441444f" + }, + "price": 1370000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب سیب قارچ", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b24a98ff3c7414414400" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:51:00.784Z" + }, + "updated_at": { + "$date": "2023-11-20T15:26:27.150Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b2fd98ff3c7414414469" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b2ed98ff3c741441445c" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:51:41.974Z" + }, + "updated_at": { + "$date": "2023-05-23T07:52:56.660Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b31298ff3c7414414473" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سبز", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b2ed98ff3c741441445c" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:52:02.181Z" + }, + "updated_at": { + "$date": "2023-05-02T06:52:02.181Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b34d98ff3c741441448d" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوشابه", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b33898ff3c7414414480" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:53:01.087Z" + }, + "updated_at": { + "$date": "2023-05-02T06:53:01.087Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b35c98ff3c7414414497" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دلستر ", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b33898ff3c7414414480" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:53:16.195Z" + }, + "updated_at": { + "$date": "2023-05-02T06:53:16.195Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b3b298ff3c74144144a4" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آب معدنی", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b33898ff3c7414414480" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T06:54:42.974Z" + }, + "updated_at": { + "$date": "2023-05-02T06:54:42.974Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b5bb98ff3c741441459f" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ترک", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b5a098ff3c7414414592" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:03:23.205Z" + }, + "updated_at": { + "$date": "2023-11-20T15:47:08.725Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b5d198ff3c74144145a9" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پرس", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b5a098ff3c7414414592" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:03:45.092Z" + }, + "updated_at": { + "$date": "2023-11-20T15:46:58.473Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b61198ff3c74144145b3" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایروپرس", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b5a098ff3c7414414592" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:04:49.279Z" + }, + "updated_at": { + "$date": "2023-11-20T15:46:39.986Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b62998ff3c74144145bd" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کمکس", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b5a098ff3c7414414592" + }, + "index": 4, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:05:13.298Z" + }, + "updated_at": { + "$date": "2023-11-20T15:45:58.052Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b65f98ff3c74144145e0" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس لته", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b64598ff3c74144145ca" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:06:07.221Z" + }, + "updated_at": { + "$date": "2023-11-20T15:49:00.368Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b67f98ff3c74144145ec" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b64598ff3c74144145ca" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:06:39.040Z" + }, + "updated_at": { + "$date": "2023-11-20T15:50:05.042Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b6a098ff3c74144145f8" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": " ایس امریکانو", + "description": "350000 - 450000", + "short_description": "", + "category": { + "$oid": "6450b64598ff3c74144145ca" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:07:12.514Z" + }, + "updated_at": { + "$date": "2023-11-20T15:50:27.832Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b6b798ff3c7414414602" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b64598ff3c74144145ca" + }, + "index": 4, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:07:35.300Z" + }, + "updated_at": { + "$date": "2023-11-20T15:50:45.686Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b6d798ff3c741441460c" + }, + "price": 580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس هانی", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b64598ff3c74144145ca" + }, + "index": 5, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:08:07.060Z" + }, + "updated_at": { + "$date": "2023-11-20T15:51:19.901Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450b6f098ff3c7414414616" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوک اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b64598ff3c74144145ca" + }, + "index": 6, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T07:08:32.952Z" + }, + "updated_at": { + "$date": "2023-11-20T15:51:31.871Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d15b98ff3c74144147e7" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d14398ff3c74144147d7" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:01:15.197Z" + }, + "updated_at": { + "$date": "2023-05-02T09:01:15.197Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d53b98ff3c7414414838" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای طعم دار", + "description": "هل،دارچین،زنجیل", + "short_description": "", + "category": { + "$oid": "6450d14398ff3c74144147d7" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:17:47.031Z" + }, + "updated_at": { + "$date": "2023-05-25T15:07:38.195Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d55398ff3c7414414842" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d14398ff3c74144147d7" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:18:11.720Z" + }, + "updated_at": { + "$date": "2023-05-02T09:18:11.720Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d56c98ff3c741441484f" + }, + "price": 330000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d14398ff3c74144147d7" + }, + "index": 4, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:18:36.309Z" + }, + "updated_at": { + "$date": "2023-11-20T15:53:29.459Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d58198ff3c7414414859" + }, + "price": 330000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d14398ff3c74144147d7" + }, + "index": 5, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:18:57.251Z" + }, + "updated_at": { + "$date": "2023-11-20T15:53:17.562Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d59698ff3c7414414863" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش به لیمو بهار نارنج", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d14398ff3c74144147d7" + }, + "index": 6, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:19:18.475Z" + }, + "updated_at": { + "$date": "2023-11-20T15:53:03.657Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d5a698ff3c741441486d" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": " دمنوش گارد", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d14398ff3c74144147d7" + }, + "index": 7, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:19:34.440Z" + }, + "updated_at": { + "$date": "2023-11-20T15:52:47.445Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d5b998ff3c7414414877" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش گل گاوزبان", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d14398ff3c74144147d7" + }, + "index": 8, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:19:53.989Z" + }, + "updated_at": { + "$date": "2023-05-02T09:19:53.989Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d5cb98ff3c7414414881" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش ارامش", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d14398ff3c74144147d7" + }, + "index": 9, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:20:11.980Z" + }, + "updated_at": { + "$date": "2023-11-20T15:52:27.340Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d5e398ff3c741441488b" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش سپنچ", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d14398ff3c74144147d7" + }, + "index": 10, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:20:35.350Z" + }, + "updated_at": { + "$date": "2023-11-20T15:51:59.091Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d61e98ff3c74144148a6" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک شکلاتی", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d60f98ff3c7414414899" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:21:34.602Z" + }, + "updated_at": { + "$date": "2023-05-02T09:21:34.602Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d62c98ff3c74144148b0" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک هویج", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d60f98ff3c7414414899" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:21:48.367Z" + }, + "updated_at": { + "$date": "2023-05-02T09:21:48.367Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d63c98ff3c74144148bd" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک روز", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d60f98ff3c7414414899" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:22:04.072Z" + }, + "updated_at": { + "$date": "2023-05-02T09:22:04.072Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d6a898ff3c74144148d9" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک کلاسیک", + "description": "وانیل - شکلات", + "short_description": "", + "category": { + "$oid": "6450d68d98ff3c74144148ca" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:23:52.589Z" + }, + "updated_at": { + "$date": "2023-11-20T15:55:07.301Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d6ca98ff3c7414414903" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d68d98ff3c74144148ca" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:24:26.133Z" + }, + "updated_at": { + "$date": "2023-05-25T15:11:40.719Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d71298ff3c7414414915" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک اورئو", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d68d98ff3c74144148ca" + }, + "index": 5, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:25:38.161Z" + }, + "updated_at": { + "$date": "2023-11-20T15:54:46.239Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d71f98ff3c7414414922" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d68d98ff3c74144148ca" + }, + "index": 6, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:25:51.603Z" + }, + "updated_at": { + "$date": "2023-11-20T15:54:35.025Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d72f98ff3c741441492f" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک بادام زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d68d98ff3c74144148ca" + }, + "index": 7, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:26:07.676Z" + }, + "updated_at": { + "$date": "2023-11-20T15:54:22.570Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d75398ff3c7414414939" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک کیت کت", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d68d98ff3c74144148ca" + }, + "index": 8, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:26:43.404Z" + }, + "updated_at": { + "$date": "2023-11-20T15:54:11.432Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d78c98ff3c7414414952" + }, + "price": 980000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک سپنج", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d68d98ff3c74144148ca" + }, + "index": 9, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:27:40.502Z" + }, + "updated_at": { + "$date": "2023-11-20T15:54:00.995Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d7d398ff3c7414414972" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d7be98ff3c7414414965" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:28:51.865Z" + }, + "updated_at": { + "$date": "2023-05-25T15:05:09.817Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d9ce98ff3c74144149a7" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جینجر لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d7be98ff3c7414414965" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:37:18.222Z" + }, + "updated_at": { + "$date": "2023-05-25T15:05:20.530Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d9db98ff3c74144149b1" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلک اسکای", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d7be98ff3c7414414965" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:37:31.611Z" + }, + "updated_at": { + "$date": "2023-05-25T15:05:32.350Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450d9f298ff3c74144149c5" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیندرلا", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d7be98ff3c7414414965" + }, + "index": 4, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:37:54.209Z" + }, + "updated_at": { + "$date": "2023-05-25T15:05:49.254Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450da0198ff3c74144149cf" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گرین پاور", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d7be98ff3c7414414965" + }, + "index": 5, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:38:09.244Z" + }, + "updated_at": { + "$date": "2023-05-25T15:06:07.560Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450da1398ff3c74144149d9" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایلد بری", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d7be98ff3c7414414965" + }, + "index": 10, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:38:27.569Z" + }, + "updated_at": { + "$date": "2023-05-25T15:06:25.300Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6450da2398ff3c74144149e3" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رد سامر", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d7be98ff3c7414414965" + }, + "index": 16, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-02T09:38:43.206Z" + }, + "updated_at": { + "$date": "2023-05-25T15:06:37.429Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "645161cd98ff3c7414415ce9" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ربوستا", + "description": "30٪ عربیکا، 70٪ ربوستا", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 1, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-02T19:17:33.814Z" + }, + "updated_at": { + "$date": "2025-01-12T19:09:24.669Z" + }, + "__v": 0, + "image": "food_1695805575659.png" +}, +{ + "_id": { + "$oid": "6452117d98ff3c74144160d8" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو عربیکا ", + "description": "100٪ عربیکا", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 2, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:47:09.746Z" + }, + "updated_at": { + "$date": "2025-01-12T19:09:48.397Z" + }, + "__v": 0, + "image": "food_1695805517940.png" +}, +{ + "_id": { + "$oid": "645211f698ff3c74144160e5" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو گرم", + "description": "اسپرسو، آبجوش", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 3, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:49:10.135Z" + }, + "updated_at": { + "$date": "2025-01-12T19:10:05.100Z" + }, + "__v": 0, + "image": "food_1695288603043.png" +}, +{ + "_id": { + "$oid": "6452124b98ff3c74144160ef" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو گرم", + "description": "اسپرسو، شیر، کارامل", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 9, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:50:35.705Z" + }, + "updated_at": { + "$date": "2025-01-12T19:40:32.107Z" + }, + "__v": 0, + "image": "food_1695287233293.png" +}, +{ + "_id": { + "$oid": "6452127298ff3c74144160f9" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا گرم", + "description": "اسپرسو، شکلات، شیر", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 5, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:51:14.185Z" + }, + "updated_at": { + "$date": "2025-01-12T19:10:49.194Z" + }, + "__v": 0, + "image": "food_1695287143843.png" +}, +{ + "_id": { + "$oid": "6452129f98ff3c7414416103" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت ", + "description": "شیر، شکلات ", + "short_description": "", + "category": { + "$oid": "6783ffa2a4463c0057e4a32b" + }, + "index": 1, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:51:59.811Z" + }, + "updated_at": { + "$date": "2025-01-12T19:11:21.655Z" + }, + "__v": 0, + "image": "food_1695287057123.png" +}, +{ + "_id": { + "$oid": "645212e398ff3c741441610d" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر گرم", + "description": "شیر گرم آرامش‌ بخش و هضم آسان برای سلامت گوارش نیز مفید است. و همچنین حاوی تریپتوفان است که منجر به خوابی راحت می‌شود.", + "short_description": "", + "category": { + "$oid": "6783ffa2a4463c0057e4a32b" + }, + "index": 2, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:53:07.512Z" + }, + "updated_at": { + "$date": "2025-01-12T19:12:07.162Z" + }, + "__v": 0, + "image": "food_1695286705042.png" +}, +{ + "_id": { + "$oid": "6452130d98ff3c7414416117" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر زردچوبه ", + "description": "شیر، زردچوبه، عسل", + "short_description": "", + "category": { + "$oid": "6783ffa2a4463c0057e4a32b" + }, + "index": 3, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:53:49.203Z" + }, + "updated_at": { + "$date": "2025-01-12T19:14:16.498Z" + }, + "__v": 0, + "image": "food_1695286602239.png" +}, +{ + "_id": { + "$oid": "6452134798ff3c7414416121" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا گرم", + "description": "زنجبیل، دارچین، جوز هندی، چای سیاه، شیر", + "short_description": "", + "category": { + "$oid": "6783ffd1a4463c0057e4a346" + }, + "index": 1, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:54:47.274Z" + }, + "updated_at": { + "$date": "2025-01-12T19:13:24.209Z" + }, + "__v": 0, + "image": "food_1695286309005.png" +}, +{ + "_id": { + "$oid": "6452138c98ff3c7414416131" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه", + "description": "آرامش معده ،بهبود عملکرد قلب و عروق، ضد سرطان، بهبود عملکرد کبد", + "short_description": "", + "category": { + "$oid": "6783ffd1a4463c0057e4a346" + }, + "index": 2, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:55:56.935Z" + }, + "updated_at": { + "$date": "2025-01-12T19:14:40.708Z" + }, + "__v": 0, + "image": "food_1733426880348.png" +}, +{ + "_id": { + "$oid": "645213b498ff3c741441613b" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز", + "description": "چای سبز سرشار از پلی فنول بوده که دارای خواص ضد التهابی است. که می‌تواند پوست تحریک شده شما را آرام کند. قرمزی ناشی از تحریک را کاهش دهد و همچنین تورم پوست شما را کم کند. ", + "short_description": "", + "category": { + "$oid": "6783ffd1a4463c0057e4a346" + }, + "index": 3, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:56:36.409Z" + }, + "updated_at": { + "$date": "2025-01-12T19:13:56.988Z" + }, + "__v": 0, + "image": "food_1695285898103.png" +}, +{ + "_id": { + "$oid": "645213d598ff3c7414416145" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای آویشن", + "description": "استفاده دمنوش آویشن شیرازی باعث رقیق شدن خون می‌شود و بخشی از عفونت‌های ریه را از بین می‌برد. دمکرده آویشن همچنین ضد درد مفاصل، ضد سکسکه و ضد نفخ شکم است.", + "short_description": "", + "category": { + "$oid": "6783ffd1a4463c0057e4a346" + }, + "index": 4, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:57:09.088Z" + }, + "updated_at": { + "$date": "2025-01-12T19:14:58.714Z" + }, + "__v": 0, + "image": "food_1695285962920.png" +}, +{ + "_id": { + "$oid": "645213f698ff3c741441614f" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای گل گاوزبان", + "description": "این گیاه، ضدالتهاب، ضدمیکروب، ضد درد و حاوی ترکیبات آنتی‌اکسیدان است و به‌طور ویژه برای درمان و بهبود سرماخوردگی و به‌عنوان یک داروی ضداضطراب و آرام‌بخش مصرف میگردد.", + "short_description": "", + "category": { + "$oid": "6783ffd1a4463c0057e4a346" + }, + "index": 5, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:57:42.754Z" + }, + "updated_at": { + "$date": "2025-01-12T19:13:43.670Z" + }, + "__v": 0, + "image": "food_1695286023471.png" +}, +{ + "_id": { + "$oid": "6452141698ff3c7414416162" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ترش ", + "description": "این گیاه دارای آنتی اکسیدان‌های ضد چربی خون و ضد سرطان و کاهش فشارخون و همچنین برای درمان سرفه، گلودرد و آنتی باکتریال مصرف می‌شود.", + "short_description": "", + "category": { + "$oid": "6783ffd1a4463c0057e4a346" + }, + "index": 6, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:58:14.806Z" + }, + "updated_at": { + "$date": "2025-01-12T19:11:47.299Z" + }, + "__v": 0, + "image": "food_1695286204867.png" +}, +{ + "_id": { + "$oid": "6452144998ff3c741441616c" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو سرد", + "description": "اسپرسو، یخ", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 8, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:59:05.725Z" + }, + "updated_at": { + "$date": "2025-01-12T19:40:51.806Z" + }, + "__v": 0, + "image": "food_1695285667290.png" +}, +{ + "_id": { + "$oid": "6452147898ff3c7414416176" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو سرد ", + "description": "اسپرسو، شیر فوم دار", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 16, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T07:59:52.218Z" + }, + "updated_at": { + "$date": "2025-01-12T19:41:33.061Z" + }, + "__v": 0, + "image": "food_1695285589063.png" +}, +{ + "_id": { + "$oid": "645214a298ff3c7414416180" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کارامل ماکیاتو ", + "description": "کارامل، اسپرسو، شیر، یخ ", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 3, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T08:00:34.190Z" + }, + "updated_at": { + "$date": "2025-01-12T19:08:20.886Z" + }, + "__v": 0, + "image": "food_1695285486443.png" +}, +{ + "_id": { + "$oid": "645214c398ff3c741441618a" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا سرد ", + "description": "اسپرسو، شیر، شکلات، یخ", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 4, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T08:01:07.494Z" + }, + "updated_at": { + "$date": "2025-01-12T19:07:27.761Z" + }, + "__v": 0, + "image": "food_1695285373905.png" +}, +{ + "_id": { + "$oid": "645214f398ff3c7414416194" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس چاکلت ", + "description": "شکلات، شیر، یخ ", + "short_description": "", + "category": { + "$oid": "6783ffa2a4463c0057e4a32b" + }, + "index": 5, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T08:01:55.131Z" + }, + "updated_at": { + "$date": "2025-01-12T19:07:43.107Z" + }, + "__v": 0, + "image": "food_1695285086684.png" +}, +{ + "_id": { + "$oid": "6452157598ff3c74144161ae" + }, + "price": 120000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ اضافه ", + "description": "انتخاب دلخواه", + "short_description": "", + "category": { + "$oid": "6452153398ff3c74144161a1" + }, + "index": 1, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T08:04:05.268Z" + }, + "updated_at": { + "$date": "2024-12-05T14:15:20.954Z" + }, + "__v": 0, + "image": "food_1733343050554.png" +}, +{ + "_id": { + "$oid": "645215f098ff3c74144161cc" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک هویج و گردو روز ", + "description": "یک اسلایس کیک هویج و گردو روز ", + "short_description": "", + "category": { + "$oid": "645215c898ff3c74144161bc" + }, + "index": 1, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-05-03T08:06:08.625Z" + }, + "updated_at": { + "$date": "2024-12-06T15:00:26.032Z" + }, + "__v": 0, + "image": "food_1733345313635.png" +}, +{ + "_id": { + "$oid": "64563c9898ff3c741441b5db" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ماکیاتو", + "description": "اسپرسو و فوم شیر", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 2, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683373207313.png", + "created_at": { + "$date": "2023-05-06T11:40:08.644Z" + }, + "updated_at": { + "$date": "2023-08-21T16:43:09.326Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64563eea98ff3c741441b6b0" + }, + "price": 610000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "اسپرسو و شیر و شکلات گرم", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 6, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683373800924.png", + "created_at": { + "$date": "2023-05-06T11:50:02.734Z" + }, + "updated_at": { + "$date": "2023-10-04T16:47:55.291Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64563fb798ff3c741441b704" + }, + "price": 660000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو + گرانولا", + "description": "شات اسپرسو و اسکوپ بستنی و گرانول", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 8, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696438010688.png", + "created_at": { + "$date": "2023-05-06T11:53:27.803Z" + }, + "updated_at": { + "$date": "2023-10-04T16:47:07.459Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6456428e98ff3c741441b79b" + }, + "price": 520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فرنچ پرس", + "description": "", + "short_description": "", + "category": { + "$oid": "63cc0eea701ec3ea99722f38" + }, + "index": 6, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683374733936.png", + "created_at": { + "$date": "2023-05-06T12:05:34.911Z" + }, + "updated_at": { + "$date": "2023-06-10T18:47:02.974Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6456494298ff3c741441b904" + }, + "price": 780000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپه لاوندر", + "description": "قهوه تادی و عصاره اسطوخودوس و شیر و بستنی", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 16, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683376449033.png", + "created_at": { + "$date": "2023-05-06T12:34:10.696Z" + }, + "updated_at": { + "$date": "2023-10-04T19:35:57.662Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64564b0598ff3c741441b917" + }, + "price": 830000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپه افرا ", + "description": "قهوه تادی و شیره درخت افرا و شیر و بستنی", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 15, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683376900135.png", + "created_at": { + "$date": "2023-05-06T12:41:41.737Z" + }, + "updated_at": { + "$date": "2023-10-04T19:34:48.361Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6456532b98ff3c741441ba7d" + }, + "price": 670000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو ", + "description": "", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 12, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683378984433.png", + "created_at": { + "$date": "2023-05-06T13:16:27.331Z" + }, + "updated_at": { + "$date": "2023-08-21T17:02:42.710Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6456539698ff3c741441ba87" + }, + "price": 710000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد اسپرسو ", + "description": "قهوه تادی و لیمو و سودا ", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 5, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683379091941.png", + "created_at": { + "$date": "2023-05-06T13:18:14.469Z" + }, + "updated_at": { + "$date": "2023-10-04T18:10:54.847Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6456a2dd98ff3c741441c70e" + }, + "price": 340000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای و نبات", + "description": "", + "short_description": "", + "category": { + "$oid": "6456a24198ff3c741441c6ef" + }, + "index": 1, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683399387668.png", + "created_at": { + "$date": "2023-05-06T18:56:29.290Z" + }, + "updated_at": { + "$date": "2023-06-10T18:31:03.374Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6456a36598ff3c741441c721" + }, + "price": 470000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گل گاوزبان", + "description": "", + "short_description": "", + "category": { + "$oid": "6456a24198ff3c741441c6ef" + }, + "index": 2, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683399523608.png", + "created_at": { + "$date": "2023-05-06T18:58:45.521Z" + }, + "updated_at": { + "$date": "2023-06-10T18:30:23.397Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6456a3b098ff3c741441c736" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "به لیمو و آویشن", + "description": "", + "short_description": "", + "category": { + "$oid": "6456a24198ff3c741441c6ef" + }, + "index": 3, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683399598375.png", + "created_at": { + "$date": "2023-05-06T19:00:00.626Z" + }, + "updated_at": { + "$date": "2023-06-10T18:29:25.561Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6456a41f98ff3c741441c740" + }, + "price": 460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش ترش و عسل", + "description": "", + "short_description": "", + "category": { + "$oid": "6456a24198ff3c741441c6ef" + }, + "index": 4, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1683399710195.png", + "created_at": { + "$date": "2023-05-06T19:01:51.779Z" + }, + "updated_at": { + "$date": "2023-06-10T18:29:04.028Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646603dc98ff3c741442d701" + }, + "price": 420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو 50٪", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:54:20.828Z" + }, + "updated_at": { + "$date": "2023-05-19T16:19:53.295Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6466040b98ff3c741442d730" + }, + "price": 460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو 100٪", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:55:07.304Z" + }, + "updated_at": { + "$date": "2023-05-19T16:20:25.776Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6466045b98ff3c741442d75f" + }, + "price": 440000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو 50٪", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-18T10:56:27.135Z" + }, + "updated_at": { + "$date": "2023-05-19T16:20:51.832Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64679a5198ff3c741442f63b" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو 100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T15:48:33.068Z" + }, + "updated_at": { + "$date": "2023-05-19T16:21:10.186Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64679a8b98ff3c741442f645" + }, + "price": 440000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کن هیلو 50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T15:49:31.014Z" + }, + "updated_at": { + "$date": "2023-05-19T17:33:00.091Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64679b2498ff3c741442f64f" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کن هیلو %100", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 6, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T15:52:04.848Z" + }, + "updated_at": { + "$date": "2023-05-19T16:21:47.303Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64679cd498ff3c741442f6b1" + }, + "price": 510000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فلت وایت 50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 29, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T15:59:16.255Z" + }, + "updated_at": { + "$date": "2023-05-19T17:24:48.145Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467a28f98ff3c741442f8cb" + }, + "price": 530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فلت وایت 100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 30, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T16:23:43.709Z" + }, + "updated_at": { + "$date": "2023-05-19T17:30:07.153Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467a5ef98ff3c741442fa0e" + }, + "price": 440000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رومانو50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 9, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T16:38:07.064Z" + }, + "updated_at": { + "$date": "2023-05-19T17:02:14.830Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467a62798ff3c741442fa39" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رومانو100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 10, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T16:39:03.734Z" + }, + "updated_at": { + "$date": "2023-05-19T16:39:03.734Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ac4198ff3c741442fbb8" + }, + "price": 460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کورتادو50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 11, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:05:05.632Z" + }, + "updated_at": { + "$date": "2023-05-19T17:05:05.632Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ac6798ff3c741442fbc2" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کورتادو 100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 12, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:05:43.800Z" + }, + "updated_at": { + "$date": "2023-05-19T17:05:43.800Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ac9098ff3c741442fbcf" + }, + "price": 490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته ماکیاتو50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 13, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:06:24.576Z" + }, + "updated_at": { + "$date": "2023-05-19T17:06:24.576Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467acb198ff3c741442fbde" + }, + "price": 530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته ماکیاتو100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 14, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:06:57.522Z" + }, + "updated_at": { + "$date": "2023-05-19T17:06:57.522Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467acf398ff3c741442fbfd" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکاتلا 50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 15, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:08:03.076Z" + }, + "updated_at": { + "$date": "2023-05-19T17:08:03.076Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ad3798ff3c741442fc24" + }, + "price": 610000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکاتلا100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 16, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:09:11.604Z" + }, + "updated_at": { + "$date": "2023-05-19T17:09:11.604Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ad6a98ff3c741442fc43" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیچیرین50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 17, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:10:02.039Z" + }, + "updated_at": { + "$date": "2023-05-19T17:10:02.039Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ada098ff3c741442fc50" + }, + "price": 590000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیچیرین100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 18, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:10:56.107Z" + }, + "updated_at": { + "$date": "2023-05-19T17:10:56.107Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ae5298ff3c741442fc87" + }, + "price": 560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته سفرون50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 19, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:13:54.150Z" + }, + "updated_at": { + "$date": "2023-05-19T17:33:48.024Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ae7598ff3c741442fca0" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته سفرون100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 20, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:14:29.229Z" + }, + "updated_at": { + "$date": "2023-05-19T17:14:29.229Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467aeb298ff3c741442fcc8" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سینامون لاته50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 21, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:15:30.159Z" + }, + "updated_at": { + "$date": "2023-05-19T17:15:30.159Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467aed798ff3c741442fcd8" + }, + "price": 590000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سینامون لاته100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 22, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:16:07.386Z" + }, + "updated_at": { + "$date": "2023-05-19T17:16:07.386Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467af4c98ff3c741442fd00" + }, + "price": 530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 23, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:18:04.903Z" + }, + "updated_at": { + "$date": "2023-05-19T17:18:04.903Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467af6798ff3c741442fd13" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 24, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:18:31.718Z" + }, + "updated_at": { + "$date": "2023-05-19T17:18:31.718Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467af9098ff3c741442fd20" + }, + "price": 530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته 50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 25, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:19:12.357Z" + }, + "updated_at": { + "$date": "2023-05-19T17:19:12.357Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467afe698ff3c741442fd33" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته 100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 26, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:20:38.267Z" + }, + "updated_at": { + "$date": "2023-05-19T17:20:38.267Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b00198ff3c741442fd43" + }, + "price": 560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا 50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 27, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:21:05.499Z" + }, + "updated_at": { + "$date": "2023-05-19T17:21:05.499Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b04198ff3c741442fd59" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6465fff598ff3c741442d594" + }, + "index": 28, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:22:09.384Z" + }, + "updated_at": { + "$date": "2023-05-19T17:22:09.384Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b48c98ff3c741442ff1c" + }, + "price": 580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورجینال آفوگاتو50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:40:28.138Z" + }, + "updated_at": { + "$date": "2023-05-19T17:43:35.374Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b53998ff3c741442ffaf" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورجینال آفوگاتو100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:43:21.950Z" + }, + "updated_at": { + "$date": "2023-05-19T17:43:21.950Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b5a298ff3c741442ffe8" + }, + "price": 610000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سفرون آفوگاتو50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:45:06.538Z" + }, + "updated_at": { + "$date": "2023-05-19T17:45:06.538Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b5c498ff3c741442fffb" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سفرون آفوگاتو100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:45:40.206Z" + }, + "updated_at": { + "$date": "2023-05-19T17:45:40.206Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b5fc98ff3c741443000b" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیسد امریکانو50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:46:36.654Z" + }, + "updated_at": { + "$date": "2023-05-19T17:46:36.654Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b61798ff3c7414430024" + }, + "price": 490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیسد امریکانو100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 6, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:47:03.032Z" + }, + "updated_at": { + "$date": "2023-05-19T17:47:03.032Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b65398ff3c7414430058" + }, + "price": 560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیسد لاته 50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 7, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:48:03.734Z" + }, + "updated_at": { + "$date": "2023-05-19T17:48:03.734Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b66c98ff3c7414430074" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیسد لاته 100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 8, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:48:28.817Z" + }, + "updated_at": { + "$date": "2023-05-19T17:48:28.817Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b68e98ff3c7414430084" + }, + "price": 640000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیسد موکا 50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 9, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:49:02.930Z" + }, + "updated_at": { + "$date": "2023-05-19T17:49:02.930Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467b6b098ff3c74144300b2" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیسدموکا100 %", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 10, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T17:49:36.742Z" + }, + "updated_at": { + "$date": "2023-05-19T17:49:36.742Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bc6798ff3c7414430359" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو 50%", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 11, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:13:59.166Z" + }, + "updated_at": { + "$date": "2023-05-19T18:13:59.166Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bc8298ff3c7414430375" + }, + "price": 640000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو 100%", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 12, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:14:26.785Z" + }, + "updated_at": { + "$date": "2023-05-19T18:14:26.785Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bcb398ff3c7414430391" + }, + "price": 520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت ویژه", + "description": "", + "short_description": "", + "category": { + "$oid": "6466025c98ff3c741442d607" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:15:15.053Z" + }, + "updated_at": { + "$date": "2023-05-19T18:15:15.053Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bcd498ff3c74144303ab" + }, + "price": 460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "6466025c98ff3c741442d607" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:15:48.850Z" + }, + "updated_at": { + "$date": "2023-05-19T18:15:48.850Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bd0f98ff3c74144303be" + }, + "price": 620000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مارشمالو چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6466025c98ff3c741442d607" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:16:47.830Z" + }, + "updated_at": { + "$date": "2023-05-26T15:52:25.389Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bd2d98ff3c74144303e0" + }, + "price": 520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6466025c98ff3c741442d607" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:17:17.095Z" + }, + "updated_at": { + "$date": "2023-05-19T18:17:17.095Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bd4e98ff3c74144303f9" + }, + "price": 510000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دارک چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6466025c98ff3c741442d607" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:17:50.084Z" + }, + "updated_at": { + "$date": "2023-05-19T18:17:50.084Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bdcc98ff3c7414430427" + }, + "price": 540000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات فندقی", + "description": "", + "short_description": "", + "category": { + "$oid": "6466025c98ff3c741442d607" + }, + "index": 6, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:19:56.439Z" + }, + "updated_at": { + "$date": "2023-05-21T15:36:59.835Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bdee98ff3c741443043f" + }, + "price": 540000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "افترایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6466025c98ff3c741442d607" + }, + "index": 7, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:20:30.679Z" + }, + "updated_at": { + "$date": "2023-05-19T18:20:30.679Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467be1398ff3c7414430461" + }, + "price": 660000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "ماچا لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "6466025c98ff3c741442d607" + }, + "index": 8, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:21:07.100Z" + }, + "updated_at": { + "$date": "2023-05-28T14:53:17.033Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467be2d98ff3c741443046e" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466025c98ff3c741442d607" + }, + "index": 9, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:21:33.485Z" + }, + "updated_at": { + "$date": "2023-05-19T18:21:33.485Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467be4c98ff3c7414430478" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا رژیمی", + "description": "", + "short_description": "", + "category": { + "$oid": "6466025c98ff3c741442d607" + }, + "index": 10, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:22:04.272Z" + }, + "updated_at": { + "$date": "2023-05-19T18:22:04.272Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467be6598ff3c7414430482" + }, + "price": 560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6466025c98ff3c741442d607" + }, + "index": 11, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:22:29.268Z" + }, + "updated_at": { + "$date": "2023-05-19T18:22:29.268Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467be9198ff3c7414430495" + }, + "price": 540000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ترک کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "6466026898ff3c741442d613" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:23:13.718Z" + }, + "updated_at": { + "$date": "2023-05-19T18:23:13.718Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bebb98ff3c74144304a5" + }, + "price": 580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ترکیش وایت کافی", + "description": "", + "short_description": "", + "category": { + "$oid": "6466026898ff3c741442d613" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:23:55.014Z" + }, + "updated_at": { + "$date": "2023-05-19T18:26:01.245Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bf1d98ff3c74144304af" + }, + "price": 590000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ترکیش وایت هل و دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "6466026898ff3c741442d613" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:25:33.319Z" + }, + "updated_at": { + "$date": "2023-05-19T18:26:43.568Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bfa398ff3c74144304f2" + }, + "price": 690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ترکیش وایت زعفرانی", + "description": "", + "short_description": "", + "category": { + "$oid": "6466026898ff3c741442d613" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:27:47.512Z" + }, + "updated_at": { + "$date": "2023-05-19T18:27:47.512Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467bfdb98ff3c74144304ff" + }, + "price": 820000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "6466027798ff3c741442d61f" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:28:43.723Z" + }, + "updated_at": { + "$date": "2023-05-19T18:28:43.723Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c02898ff3c741443050f" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موز شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "6466027798ff3c741442d61f" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:30:00.876Z" + }, + "updated_at": { + "$date": "2023-05-19T18:30:00.876Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c04698ff3c7414430519" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کره بادام زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "6466027798ff3c741442d61f" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:30:30.362Z" + }, + "updated_at": { + "$date": "2023-05-19T18:38:33.768Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c06698ff3c7414430523" + }, + "price": 780000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "شکلات فندق", + "description": "", + "short_description": "", + "category": { + "$oid": "6466027798ff3c741442d61f" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:31:02.548Z" + }, + "updated_at": { + "$date": "2023-05-28T14:54:04.294Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c0bd98ff3c7414430536" + }, + "price": 860000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پسته زعفران ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466027798ff3c741442d61f" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:32:29.332Z" + }, + "updated_at": { + "$date": "2023-05-19T18:32:43.961Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c0ee98ff3c7414430550" + }, + "price": 840000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیت کت", + "description": "", + "short_description": "", + "category": { + "$oid": "6466027798ff3c741442d61f" + }, + "index": 6, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:33:18.347Z" + }, + "updated_at": { + "$date": "2023-05-19T18:33:18.347Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c21a98ff3c741443058a" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورئو", + "description": "", + "short_description": "", + "category": { + "$oid": "6466027798ff3c741442d61f" + }, + "index": 7, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:38:18.151Z" + }, + "updated_at": { + "$date": "2023-05-19T18:38:18.151Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c25b98ff3c74144305b4" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "6466027798ff3c741442d61f" + }, + "index": 8, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:39:23.411Z" + }, + "updated_at": { + "$date": "2023-05-28T14:53:46.211Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c27598ff3c74144305c7" + }, + "price": 820000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "6466027798ff3c741442d61f" + }, + "index": 9, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:39:49.242Z" + }, + "updated_at": { + "$date": "2023-05-19T18:39:49.242Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c2b298ff3c74144305dd" + }, + "price": 860000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ویژه (کره بادام زمینی_نوتلا)", + "description": "", + "short_description": "", + "category": { + "$oid": "6466027798ff3c741442d61f" + }, + "index": 10, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:40:50.226Z" + }, + "updated_at": { + "$date": "2023-05-19T18:40:50.226Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c2fc98ff3c74144305e7" + }, + "price": 490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک ردولوت", + "description": "", + "short_description": "", + "category": { + "$oid": "6466028998ff3c741442d628" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:42:04.146Z" + }, + "updated_at": { + "$date": "2023-05-19T18:42:04.146Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c31898ff3c74144305f4" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک موز گردو ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466028998ff3c741442d628" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:42:32.615Z" + }, + "updated_at": { + "$date": "2023-05-19T18:42:32.615Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c34998ff3c7414430601" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک شکلات خامه ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466028998ff3c741442d628" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:43:21.912Z" + }, + "updated_at": { + "$date": "2023-05-19T18:43:21.912Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c37e98ff3c741443060f" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک هویج گردو", + "description": "", + "short_description": "", + "category": { + "$oid": "6466028998ff3c741442d628" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:44:14.382Z" + }, + "updated_at": { + "$date": "2023-05-19T18:44:14.382Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c39998ff3c7414430619" + }, + "price": 490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک تیرامیسو", + "description": "", + "short_description": "", + "category": { + "$oid": "6466028998ff3c741442d628" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:44:41.730Z" + }, + "updated_at": { + "$date": "2023-05-19T18:44:41.730Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c3ed98ff3c7414430623" + }, + "price": 520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاریس برست", + "description": "", + "short_description": "", + "category": { + "$oid": "6466028998ff3c741442d628" + }, + "index": 6, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:46:05.213Z" + }, + "updated_at": { + "$date": "2023-05-19T18:46:05.213Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c41598ff3c7414430630" + }, + "price": 60000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466028998ff3c741442d628" + }, + "index": 7, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:46:45.003Z" + }, + "updated_at": { + "$date": "2023-05-19T18:46:45.003Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c48698ff3c7414430652" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "646602b598ff3c741442d63d" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:48:38.118Z" + }, + "updated_at": { + "$date": "2023-05-19T18:48:38.118Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c4ec98ff3c7414430677" + }, + "price": 580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "های کافئین", + "description": "", + "short_description": "", + "category": { + "$oid": "646602b598ff3c741442d63d" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:50:20.549Z" + }, + "updated_at": { + "$date": "2023-05-19T18:50:20.549Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c54198ff3c7414430692" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو+انرژی زا", + "description": "", + "short_description": "", + "category": { + "$oid": "646602b598ff3c741442d63d" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:51:45.922Z" + }, + "updated_at": { + "$date": "2023-05-19T18:51:45.922Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c56e98ff3c741443069f" + }, + "price": 660000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکا کلدبرو", + "description": "", + "short_description": "", + "category": { + "$oid": "646602b598ff3c741442d63d" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:52:30.001Z" + }, + "updated_at": { + "$date": "2023-05-19T18:52:30.001Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c59798ff3c74144306b2" + }, + "price": 640000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوک اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "646602b598ff3c741442d63d" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:53:11.818Z" + }, + "updated_at": { + "$date": "2023-05-19T18:53:11.818Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c60598ff3c74144306c6" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "v 60", + "description": "", + "short_description": "", + "category": { + "$oid": "646602c298ff3c741442d64f" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:55:01.075Z" + }, + "updated_at": { + "$date": "2023-05-19T18:55:01.075Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c65b98ff3c74144306d3" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایروپرس", + "description": "", + "short_description": "", + "category": { + "$oid": "646602c298ff3c741442d64f" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:56:27.605Z" + }, + "updated_at": { + "$date": "2023-05-19T18:56:27.605Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c6c398ff3c74144306e9" + }, + "price": 620000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کمکس تک کاپ", + "description": "", + "short_description": "", + "category": { + "$oid": "646602c298ff3c741442d64f" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:58:11.108Z" + }, + "updated_at": { + "$date": "2023-05-19T18:58:11.108Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c6e898ff3c74144306f3" + }, + "price": 780000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کمکس 3 کاپ", + "description": "", + "short_description": "", + "category": { + "$oid": "646602c298ff3c741442d64f" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:58:48.507Z" + }, + "updated_at": { + "$date": "2023-05-19T18:58:48.507Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c70498ff3c74144306fd" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سایفون", + "description": "", + "short_description": "", + "category": { + "$oid": "646602c298ff3c741442d64f" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T18:59:16.236Z" + }, + "updated_at": { + "$date": "2023-05-19T18:59:16.236Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c73b98ff3c741443070a" + }, + "price": 320000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کمر باریک (شارژ رایگان)", + "description": "", + "short_description": "", + "category": { + "$oid": "646602d898ff3c741442d65b" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:00:11.035Z" + }, + "updated_at": { + "$date": "2023-05-19T19:00:11.035Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c76098ff3c7414430714" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هل و دارچین ", + "description": "", + "short_description": "", + "category": { + "$oid": "646602d898ff3c741442d65b" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:00:48.349Z" + }, + "updated_at": { + "$date": "2023-05-19T19:00:48.349Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c78798ff3c7414430724" + }, + "price": 330000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سبز و دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "646602d898ff3c741442d65b" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:01:27.704Z" + }, + "updated_at": { + "$date": "2023-05-19T19:01:27.704Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c7af98ff3c741443073a" + }, + "price": 360000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیمو عسل", + "description": "", + "short_description": "", + "category": { + "$oid": "646602d898ff3c741442d65b" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:02:07.306Z" + }, + "updated_at": { + "$date": "2023-05-19T19:02:25.272Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c7fc98ff3c7414430770" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زعفران ", + "description": "", + "short_description": "", + "category": { + "$oid": "646602d898ff3c741442d65b" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:03:24.580Z" + }, + "updated_at": { + "$date": "2023-05-19T19:03:24.580Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c82598ff3c7414430780" + }, + "price": 340000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوهی و لوندر", + "description": "", + "short_description": "", + "category": { + "$oid": "646602d898ff3c741442d65b" + }, + "index": 6, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:04:05.977Z" + }, + "updated_at": { + "$date": "2023-05-19T19:04:05.977Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c84898ff3c741443078a" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ویژه", + "description": "", + "short_description": "", + "category": { + "$oid": "646602d898ff3c741442d65b" + }, + "index": 7, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:04:40.884Z" + }, + "updated_at": { + "$date": "2023-05-19T19:04:40.884Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c87298ff3c7414430797" + }, + "price": 460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آرامبخش", + "description": "", + "short_description": "", + "category": { + "$oid": "646602eb98ff3c741442d667" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:05:22.223Z" + }, + "updated_at": { + "$date": "2023-05-19T19:05:22.223Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c89d98ff3c74144307aa" + }, + "price": 440000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گل گاو زبان", + "description": "", + "short_description": "", + "category": { + "$oid": "646602eb98ff3c741442d667" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:06:05.826Z" + }, + "updated_at": { + "$date": "2023-05-19T19:06:05.826Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c8be98ff3c74144307b7" + }, + "price": 440000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "به لیمو بهار نارنج", + "description": "", + "short_description": "", + "category": { + "$oid": "646602eb98ff3c741442d667" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:06:38.502Z" + }, + "updated_at": { + "$date": "2023-05-19T19:06:38.502Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c8e398ff3c74144307c1" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پرتقال گل محمدی", + "description": "", + "short_description": "", + "category": { + "$oid": "646602eb98ff3c741442d667" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:07:15.951Z" + }, + "updated_at": { + "$date": "2023-05-19T19:07:15.951Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c8fc98ff3c74144307ce" + }, + "price": 460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب وبه", + "description": "", + "short_description": "", + "category": { + "$oid": "646602eb98ff3c741442d667" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:07:40.909Z" + }, + "updated_at": { + "$date": "2023-05-19T19:07:40.909Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c91e98ff3c74144307d8" + }, + "price": 460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب و وانیل", + "description": "", + "short_description": "", + "category": { + "$oid": "646602eb98ff3c741442d667" + }, + "index": 6, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:08:14.571Z" + }, + "updated_at": { + "$date": "2023-05-19T19:08:14.571Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c94398ff3c74144307e2" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوئین بری", + "description": "", + "short_description": "", + "category": { + "$oid": "646602eb98ff3c741442d667" + }, + "index": 7, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:08:51.618Z" + }, + "updated_at": { + "$date": "2023-05-19T19:08:51.618Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c95f98ff3c74144307ec" + }, + "price": 440000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آویشن", + "description": "", + "short_description": "", + "category": { + "$oid": "646602eb98ff3c741442d667" + }, + "index": 8, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:09:19.994Z" + }, + "updated_at": { + "$date": "2023-05-19T19:09:19.994Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467c9e498ff3c7414430803" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "ویژه اٌ ", + "description": "", + "short_description": "", + "category": { + "$oid": "646602eb98ff3c741442d667" + }, + "index": 9, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:11:32.215Z" + }, + "updated_at": { + "$date": "2023-05-28T14:56:24.500Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ca0f98ff3c7414430819" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جینجر لایم", + "description": "", + "short_description": "", + "category": { + "$oid": "646602fc98ff3c741442d670" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:12:15.212Z" + }, + "updated_at": { + "$date": "2023-05-19T19:12:15.212Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ca3698ff3c7414430826" + }, + "price": 560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "646602fc98ff3c741442d670" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:12:54.818Z" + }, + "updated_at": { + "$date": "2023-05-19T19:12:54.818Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ca5e98ff3c7414430833" + }, + "price": 640000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رد موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "646602fc98ff3c741442d670" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:13:34.354Z" + }, + "updated_at": { + "$date": "2023-05-19T19:13:34.354Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ca7798ff3c741443083d" + }, + "price": 540000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "646602fc98ff3c741442d670" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:13:59.584Z" + }, + "updated_at": { + "$date": "2023-05-19T19:13:59.584Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ca9798ff3c7414430847" + }, + "price": 620000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خاکشیر بهار نارنج", + "description": "", + "short_description": "", + "category": { + "$oid": "646602fc98ff3c741442d670" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:14:32.000Z" + }, + "updated_at": { + "$date": "2023-05-19T19:14:32.000Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cac798ff3c7414430854" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زعفران آلوئه ورا", + "description": "", + "short_description": "", + "category": { + "$oid": "646602fc98ff3c741442d670" + }, + "index": 6, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:15:19.513Z" + }, + "updated_at": { + "$date": "2023-05-19T19:15:19.513Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cae298ff3c741443085e" + }, + "price": 640000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیمو زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "646602fc98ff3c741442d670" + }, + "index": 7, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:15:46.482Z" + }, + "updated_at": { + "$date": "2023-05-19T19:15:46.482Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cafe98ff3c741443086e" + }, + "price": 560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بید مشک نسترن ", + "description": "", + "short_description": "", + "category": { + "$oid": "646602fc98ff3c741442d670" + }, + "index": 8, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:16:14.911Z" + }, + "updated_at": { + "$date": "2023-05-19T19:16:14.911Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cb1b98ff3c7414430878" + }, + "price": 660000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رز چینی", + "description": "", + "short_description": "", + "category": { + "$oid": "646602fc98ff3c741442d670" + }, + "index": 9, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:16:43.637Z" + }, + "updated_at": { + "$date": "2023-05-19T19:16:43.637Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cb3498ff3c741443088e" + }, + "price": 660000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اوشن ", + "description": "", + "short_description": "", + "category": { + "$oid": "646602fc98ff3c741442d670" + }, + "index": 10, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:17:08.493Z" + }, + "updated_at": { + "$date": "2023-05-19T19:17:08.493Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cb6a98ff3c741443089e" + }, + "price": 1280000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا چیکن آلفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "6466031798ff3c741442d68b" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:18:02.376Z" + }, + "updated_at": { + "$date": "2023-05-19T19:18:02.376Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cb8d98ff3c74144308b1" + }, + "price": 960000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا گوجه و سبزیجات", + "description": "", + "short_description": "", + "category": { + "$oid": "6466031798ff3c741442d68b" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:18:37.912Z" + }, + "updated_at": { + "$date": "2023-05-19T19:18:37.912Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cbac98ff3c74144308cd" + }, + "price": 1320000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "6466031798ff3c741442d68b" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:19:08.190Z" + }, + "updated_at": { + "$date": "2023-05-19T19:19:08.190Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cbc898ff3c74144308e3" + }, + "price": 1460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "6466031798ff3c741442d68b" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:19:36.913Z" + }, + "updated_at": { + "$date": "2023-05-19T19:19:36.913Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cbe598ff3c74144308f0" + }, + "price": 1890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دابل چیز برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "6466031798ff3c741442d68b" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:20:05.544Z" + }, + "updated_at": { + "$date": "2023-05-19T19:20:05.544Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cc0798ff3c74144308fa" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چوریتسو برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "6466031798ff3c741442d68b" + }, + "index": 6, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:20:39.125Z" + }, + "updated_at": { + "$date": "2023-05-19T19:20:39.125Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cc4298ff3c741443090a" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر با سس قارچ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466031798ff3c741442d68b" + }, + "index": 7, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:21:38.014Z" + }, + "updated_at": { + "$date": "2023-05-19T19:21:38.014Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cc7598ff3c741443091a" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شنیسل چیکن ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466031798ff3c741442d68b" + }, + "index": 8, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:22:29.718Z" + }, + "updated_at": { + "$date": "2023-05-19T19:22:29.718Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cd5998ff3c7414430951" + }, + "price": 980000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تست فیله مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466032598ff3c741442d6a0" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:26:17.919Z" + }, + "updated_at": { + "$date": "2023-05-19T19:26:17.919Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cd7498ff3c741443095b" + }, + "price": 940000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تست مرغ سرد", + "description": "", + "short_description": "", + "category": { + "$oid": "6466032598ff3c741442d6a0" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:26:44.593Z" + }, + "updated_at": { + "$date": "2023-05-19T19:26:44.593Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cd9998ff3c741443096b" + }, + "price": 1380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار (گریل)", + "description": "", + "short_description": "", + "category": { + "$oid": "6466032598ff3c741442d6a0" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:27:21.291Z" + }, + "updated_at": { + "$date": "2023-05-27T17:50:53.409Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cdd898ff3c7414430981" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد اٌ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466032598ff3c741442d6a0" + }, + "index": 6, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:28:24.459Z" + }, + "updated_at": { + "$date": "2023-05-27T17:53:32.769Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ce0098ff3c741443098b" + }, + "price": 960000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کروسان ژامبون ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466032598ff3c741442d6a0" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:29:04.656Z" + }, + "updated_at": { + "$date": "2023-05-23T16:25:19.705Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ce1e98ff3c7414430998" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب کلاسیک ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466034998ff3c741442d6b8" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:29:34.502Z" + }, + "updated_at": { + "$date": "2023-05-19T19:29:34.502Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ce3b98ff3c74144309a2" + }, + "price": 880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب سس قارچ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466034998ff3c741442d6b8" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:30:03.910Z" + }, + "updated_at": { + "$date": "2023-05-19T19:30:03.910Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467ce6698ff3c74144309ac" + }, + "price": 1060000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب با فیله مرغ ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "6466034998ff3c741442d6b8" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:30:46.847Z" + }, + "updated_at": { + "$date": "2023-05-19T19:32:32.586Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cf3898ff3c74144309e7" + }, + "price": 960000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "سیب پنیری با سوجوک", + "description": "", + "short_description": "", + "category": { + "$oid": "6466034998ff3c741442d6b8" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:34:16.677Z" + }, + "updated_at": { + "$date": "2023-05-28T14:51:24.845Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cf8498ff3c7414430a07" + }, + "price": 1080000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کشک بادمجان", + "description": "", + "short_description": "", + "category": { + "$oid": "6466032598ff3c741442d6a0" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:35:32.674Z" + }, + "updated_at": { + "$date": "2023-05-23T16:30:12.570Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cf9a98ff3c7414430a11" + }, + "price": 1180000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آبدوغ خیار (ناهار و عصرانه)", + "description": "", + "short_description": "", + "category": { + "$oid": "6466031798ff3c741442d68b" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:35:54.431Z" + }, + "updated_at": { + "$date": "2023-05-23T16:34:03.153Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467cfc998ff3c7414430a25" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "املت قارچ ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466038f98ff3c741442d6e5" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:36:41.874Z" + }, + "updated_at": { + "$date": "2023-05-19T19:36:41.874Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467d04898ff3c7414430a2f" + }, + "price": 730000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "املت فرانسه ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466038f98ff3c741442d6e5" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:38:48.941Z" + }, + "updated_at": { + "$date": "2023-05-19T19:38:48.941Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467d07398ff3c7414430a4a" + }, + "price": 660000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "املت ایرانی ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466038f98ff3c741442d6e5" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:39:31.279Z" + }, + "updated_at": { + "$date": "2023-05-19T19:39:31.279Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467d0bc98ff3c7414430a57" + }, + "price": 1860000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب انگلیسی", + "description": "", + "short_description": "", + "category": { + "$oid": "6466038f98ff3c741442d6e5" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:40:44.470Z" + }, + "updated_at": { + "$date": "2023-05-19T19:40:44.470Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467d0e798ff3c7414430a61" + }, + "price": 690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نیمرو با نان کروسان ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466038f98ff3c741442d6e5" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:41:27.518Z" + }, + "updated_at": { + "$date": "2023-05-19T19:41:27.518Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467d10d98ff3c7414430a6b" + }, + "price": 80000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ", + "description": "", + "short_description": "", + "category": { + "$oid": "646603a098ff3c741442d6ee" + }, + "index": 1, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:42:05.251Z" + }, + "updated_at": { + "$date": "2023-05-19T19:42:05.251Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467d12598ff3c7414430a75" + }, + "price": 280000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس قارچ", + "description": "", + "short_description": "", + "category": { + "$oid": "646603a098ff3c741442d6ee" + }, + "index": 2, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:42:29.623Z" + }, + "updated_at": { + "$date": "2023-05-19T19:42:29.623Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467d14698ff3c7414430a7f" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنیر ", + "description": "", + "short_description": "", + "category": { + "$oid": "646603a098ff3c741442d6ee" + }, + "index": 3, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:43:02.142Z" + }, + "updated_at": { + "$date": "2023-05-19T19:43:02.142Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6467d22e98ff3c7414430aaa" + }, + "price": 30000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس اضافه", + "description": "", + "short_description": "", + "category": { + "$oid": "646603a098ff3c741442d6ee" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-19T19:46:54.808Z" + }, + "updated_at": { + "$date": "2023-05-19T19:46:54.808Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646c711298ff3c74144359ee" + }, + "price": 50000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس اضافه", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b33898ff3c7414414480" + }, + "index": 0, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-23T07:53:54.884Z" + }, + "updated_at": { + "$date": "2023-05-23T07:53:54.884Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f0b9498ff3c74144391d9" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T07:17:40.113Z" + }, + "updated_at": { + "$date": "2023-11-20T15:29:14.894Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f0b9798ff3c74144391e0" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T07:17:43.415Z" + }, + "updated_at": { + "$date": "2023-11-20T15:29:24.134Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f0bcc98ff3c7414439249" + }, + "price": 310000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو - کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T07:18:36.858Z" + }, + "updated_at": { + "$date": "2023-11-20T15:30:10.956Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f0bf798ff3c7414439252" + }, + "price": 410000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو - اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 4, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T07:19:19.600Z" + }, + "updated_at": { + "$date": "2023-11-20T15:30:22.236Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f0c1798ff3c741443925c" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ماکیاتو - کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 5, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T07:19:51.299Z" + }, + "updated_at": { + "$date": "2023-11-20T15:36:28.035Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f0c3d98ff3c7414439263" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ماکیاتو - اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 6, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T07:20:29.149Z" + }, + "updated_at": { + "$date": "2023-11-20T15:36:46.546Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f0c6898ff3c741443926a" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لته ماکیاتو - کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 7, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T07:21:12.387Z" + }, + "updated_at": { + "$date": "2023-11-20T15:40:50.578Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f0c8198ff3c7414439271" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لته ماکیاتو - اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 8, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T07:21:37.074Z" + }, + "updated_at": { + "$date": "2023-11-20T15:40:39.769Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f73af98ff3c7414439cf1" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته - کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 9, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:41:51.909Z" + }, + "updated_at": { + "$date": "2023-11-20T15:39:47.879Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f73c898ff3c7414439cfe" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 10, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:42:16.744Z" + }, + "updated_at": { + "$date": "2023-11-20T15:39:57.338Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f73fa98ff3c7414439d04" + }, + "price": 420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو - کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 11, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:43:06.986Z" + }, + "updated_at": { + "$date": "2023-11-20T15:39:20.656Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f742898ff3c7414439d09" + }, + "price": 520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو - اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 12, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:43:52.728Z" + }, + "updated_at": { + "$date": "2023-11-20T15:39:33.610Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f745a98ff3c7414439d1d" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا - کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 13, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:44:42.064Z" + }, + "updated_at": { + "$date": "2023-11-20T15:38:37.357Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f748098ff3c7414439d23" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا - اسپشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 14, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:45:20.528Z" + }, + "updated_at": { + "$date": "2023-11-20T15:38:54.203Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f74ab98ff3c7414439d2b" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "افوگاتو - کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 15, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:46:03.140Z" + }, + "updated_at": { + "$date": "2023-11-20T15:37:54.810Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f74c398ff3c7414439d33" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "افوگاتو - اسپشیال ", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b3cc98ff3c74144144b1" + }, + "index": 16, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:46:27.861Z" + }, + "updated_at": { + "$date": "2023-11-20T15:38:06.245Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f75b398ff3c7414439df5" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر گرم", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 1, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:50:27.717Z" + }, + "updated_at": { + "$date": "2023-11-20T15:45:16.439Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f75cb98ff3c7414439dfc" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 2, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:50:51.816Z" + }, + "updated_at": { + "$date": "2023-11-20T15:45:05.587Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f75e298ff3c7414439e03" + }, + "price": 420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 3, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:51:14.259Z" + }, + "updated_at": { + "$date": "2023-11-20T15:44:55.653Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f768298ff3c7414439e1c" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دارک چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 4, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:53:54.977Z" + }, + "updated_at": { + "$date": "2023-11-20T15:44:42.146Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f769f98ff3c7414439e26" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 5, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:54:23.549Z" + }, + "updated_at": { + "$date": "2023-11-20T15:44:24.776Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f76bc98ff3c7414439e33" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر نسکافه", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 6, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:54:52.113Z" + }, + "updated_at": { + "$date": "2023-11-20T15:43:56.502Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f76d698ff3c7414439e43" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر کاکائو", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 7, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:55:18.951Z" + }, + "updated_at": { + "$date": "2023-11-20T15:43:39.201Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f771798ff3c7414439e56" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر عسل", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 8, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:56:23.165Z" + }, + "updated_at": { + "$date": "2023-11-20T15:43:21.031Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f773f98ff3c7414439e66" + }, + "price": 420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر عسل دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 9, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:57:03.733Z" + }, + "updated_at": { + "$date": "2023-11-20T15:43:09.407Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f775498ff3c7414439e6d" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "یونانی", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 10, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:57:24.134Z" + }, + "updated_at": { + "$date": "2023-11-20T15:42:52.777Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f776b98ff3c7414439e71" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "افوگاتو چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 11, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:57:47.824Z" + }, + "updated_at": { + "$date": "2023-11-20T15:42:26.299Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f779598ff3c7414439e81" + }, + "price": 420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 12, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:58:29.576Z" + }, + "updated_at": { + "$date": "2023-11-20T15:42:10.537Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f77ad98ff3c7414439e88" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چاکلت ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 13, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:58:53.210Z" + }, + "updated_at": { + "$date": "2023-05-25T14:58:53.210Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f77c698ff3c7414439e8f" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماچا لته", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 14, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:59:18.767Z" + }, + "updated_at": { + "$date": "2023-11-20T15:41:54.558Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f77db98ff3c7414439e9f" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای انگلیسی", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b4aa98ff3c741441451b" + }, + "index": 15, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T14:59:39.737Z" + }, + "updated_at": { + "$date": "2023-11-20T15:41:34.761Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f784498ff3c7414439ef7" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "760", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b5a098ff3c7414414592" + }, + "index": 5, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T15:01:24.826Z" + }, + "updated_at": { + "$date": "2023-11-20T15:45:45.703Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f78cb98ff3c7414439f39" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس ماچا لته", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b64598ff3c74144145ca" + }, + "index": 7, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T15:03:39.940Z" + }, + "updated_at": { + "$date": "2023-11-20T15:51:06.260Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f78ea98ff3c7414439f40" + }, + "price": 580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لته زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "6450b64598ff3c74144145ca" + }, + "index": 8, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T15:04:10.430Z" + }, + "updated_at": { + "$date": "2023-11-20T15:49:12.979Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f790598ff3c7414439f56" + }, + "price": 410000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کن هیلو", + "description": "310000 - 410000", + "short_description": "", + "category": { + "$oid": "6450b64598ff3c74144145ca" + }, + "index": 9, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T15:04:37.215Z" + }, + "updated_at": { + "$date": "2023-11-20T15:48:41.120Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "646f799a98ff3c741443a005" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ اضافه", + "description": "", + "short_description": "", + "category": { + "$oid": "6450d7be98ff3c7414414965" + }, + "index": 8, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-05-25T15:07:06.270Z" + }, + "updated_at": { + "$date": "2023-05-25T15:07:06.270Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6472434d98ff3c741443e419" + }, + "price": 1480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار (سوخاری)", + "description": "", + "short_description": "", + "category": { + "$oid": "6466032598ff3c741442d6a0" + }, + "index": 4, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-27T17:52:13.906Z" + }, + "updated_at": { + "$date": "2023-05-27T17:53:47.855Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64736a3298ff3c741443f447" + }, + "price": 960000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب با بیکن گوساله", + "description": "", + "short_description": "", + "category": { + "$oid": "6466034998ff3c741442d6b8" + }, + "index": 5, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-28T14:50:27.005Z" + }, + "updated_at": { + "$date": "2023-05-28T14:51:06.496Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64771fd698ff3c74144436b7" + }, + "price": 4100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار (رول سوخاری با پنیر گودا و جعفری) Caesar salad with fried chicken roll ", + "description": "کاهو رسمی و پیچ/گوجه گیلاسی/زیتون/نان کروتان/پنیر پارمزان/همراه با سس سزار..lettuce/tomato/olive/parmesan cheese/crotan bread/ caesar sauce ", + "short_description": "", + "category": { + "$oid": "61ac606626d2e0e4fbd9b45a" + }, + "index": 1, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-05-31T10:22:14.817Z" + }, + "updated_at": { + "$date": "2025-12-04T11:54:03.037Z" + }, + "__v": 0, + "image": "food_1713707131956.png" +}, +{ + "_id": { + "$oid": "64779c2b98ff3c7414444b3c" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "6466024198ff3c741442d5fb" + }, + "index": 13, + "storeId": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "created_at": { + "$date": "2023-05-31T19:12:43.121Z" + }, + "updated_at": { + "$date": "2023-05-31T19:14:04.855Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6484c3a198ff3c7414454db8" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 14, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1686422430315.png", + "created_at": { + "$date": "2023-06-10T18:40:33.171Z" + }, + "updated_at": { + "$date": "2023-10-04T16:58:12.982Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6484c43398ff3c7414454de9" + }, + "price": 630000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لته", + "description": "", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 15, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1686422578987.png", + "created_at": { + "$date": "2023-06-10T18:43:00.005Z" + }, + "updated_at": { + "$date": "2023-10-04T16:59:02.373Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64a5d5f398ff3c741447c36b" + }, + "price": 5450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مت سلامی.. Salami", + "description": "پنیر/سالامی/پپرونی/هالوپینو/قارچ..cheese/salami/ pepperoni/", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 1, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-05T20:43:31.058Z" + }, + "updated_at": { + "$date": "2025-12-04T11:22:44.505Z" + }, + "__v": 0, + "image": "food_1713772598492.png" +}, +{ + "_id": { + "$oid": "64a5d68f98ff3c741447c3e5" + }, + "price": 4160000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دنر میکس .. doner kebab sandwich ", + "description": "دنر گوشت و مرغ/جعفری/پیاز/خیارشور/سس مخصوص/سیب زمینی..chicken & meat doner/parsley/pickled cucumber/onion/potato/special sauce ", + "short_description": "", + "category": { + "$oid": "61ac5ff726d2e0e4fbd9b424" + }, + "index": 2, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-05T20:46:07.515Z" + }, + "updated_at": { + "$date": "2025-12-04T12:30:07.845Z" + }, + "__v": 0, + "image": "food_1713772562102.png" +}, +{ + "_id": { + "$oid": "64a5d7d198ff3c741447c4d2" + }, + "price": 3600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مک اند چیز .. Mac & cheese", + "description": " پنیر/پاستا ماکارون/دیپ چدار..cheese/macaroni pasta/cheddar dip sause", + "short_description": "", + "category": { + "$oid": "61a7605dd5c3921920048303" + }, + "index": 1, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-05T20:51:29.954Z" + }, + "updated_at": { + "$date": "2025-12-04T11:16:32.800Z" + }, + "__v": 0, + "image": "food_1715787937416.png" +}, +{ + "_id": { + "$oid": "64a5d8f498ff3c741447c54e" + }, + "price": 5140000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دنر میکس(تک نفره).. Mixed doner ", + "description": "پنیر/دنر مرغ و گوشت/پیاز/قارچ..cheese/chicken & meat doner/onion/olive/mushroom", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 1, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-05T20:56:20.136Z" + }, + "updated_at": { + "$date": "2025-12-18T08:24:55.142Z" + }, + "__v": 0, + "image": "food_1713772515977.png" +}, +{ + "_id": { + "$oid": "64a5d93998ff3c741447c558" + }, + "price": 8100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دنر میکس(دونفره).. Mixed doner", + "description": " پنیر/دنر مرغ و گوشت/پیاز/قارچ..cheese/chicken & meat diner/onion/olive/mushroom", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 2, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-05T20:57:29.920Z" + }, + "updated_at": { + "$date": "2025-12-18T08:24:42.632Z" + }, + "__v": 0, + "image": "food_1713771713173.png" +}, +{ + "_id": { + "$oid": "64a68a9b98ff3c741447cb9a" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه(تک نفره) black tea", + "description": "", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 1, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-06T09:34:19.999Z" + }, + "updated_at": { + "$date": "2024-05-17T13:17:11.394Z" + }, + "__v": 0, + "image": "food_1715853902968.png" +}, +{ + "_id": { + "$oid": "64a68ac698ff3c741447cba4" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه(دونفره) black tea", + "description": "", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 3, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-06T09:35:02.672Z" + }, + "updated_at": { + "$date": "2024-05-16T10:01:53.798Z" + }, + "__v": 0, + "image": "food_1715853712320.png" +}, +{ + "_id": { + "$oid": "64a68eaa98ff3c741447cd04" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه زعفرانی (تک نفره) saffron tea", + "description": "", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-06T09:51:38.579Z" + }, + "updated_at": { + "$date": "2024-05-16T10:04:29.943Z" + }, + "__v": 0, + "image": "food_1715853866749.png" +}, +{ + "_id": { + "$oid": "64a68ee198ff3c741447cd1a" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه زعفرانی(دونفره) saffron tea", + "description": "", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 4, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-06T09:52:33.188Z" + }, + "updated_at": { + "$date": "2024-05-16T09:59:51.647Z" + }, + "__v": 0, + "image": "food_1715853587100.png" +}, +{ + "_id": { + "$oid": "64a692a698ff3c741447ce5c" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته.. Latte ", + "description": "قهوه 70/30 ", + "short_description": "", + "category": { + "$oid": "61b1a16afc1eece3d7626360" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-06T10:08:38.432Z" + }, + "updated_at": { + "$date": "2025-12-27T09:49:31.026Z" + }, + "__v": 0, + "image": "food_1715710811427.png" +}, +{ + "_id": { + "$oid": "64a6938f98ff3c741447cea2" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو .. ice Americano ", + "description": "", + "short_description": "", + "category": { + "$oid": "64a6937598ff3c741447ce92" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-06T10:12:31.187Z" + }, + "updated_at": { + "$date": "2025-05-02T17:06:17.190Z" + }, + "__v": 0, + "image": "food_1715714615956.png" +}, +{ + "_id": { + "$oid": "64a693b398ff3c741447ceaf" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا ..ice mocha", + "description": "", + "short_description": "", + "category": { + "$oid": "64a6937598ff3c741447ce92" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-06T10:13:07.733Z" + }, + "updated_at": { + "$date": "2025-05-02T17:05:47.584Z" + }, + "__v": 0, + "image": "food_1715714518406.png" +}, +{ + "_id": { + "$oid": "64a693c798ff3c741447ceb9" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته .. ice latte ", + "description": "", + "short_description": "", + "category": { + "$oid": "64a6937598ff3c741447ce92" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-07-06T10:13:27.519Z" + }, + "updated_at": { + "$date": "2025-05-02T17:04:35.975Z" + }, + "__v": 0, + "image": "food_1715714441403.png" +}, +{ + "_id": { + "$oid": "64affbb198ff3c74144881e6" + }, + "price": 1670000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا چیکن آلفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "64aff92198ff3c7414488119" + }, + "index": 1, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1689254831099.png", + "created_at": { + "$date": "2023-07-13T13:27:13.653Z" + }, + "updated_at": { + "$date": "2023-08-21T16:39:20.457Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64affcdf98ff3c7414488202" + }, + "price": 1890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا بیف آلفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "64aff92198ff3c7414488119" + }, + "index": 2, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1689255132686.png", + "created_at": { + "$date": "2023-07-13T13:32:15.161Z" + }, + "updated_at": { + "$date": "2023-08-21T16:40:12.348Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64affd3198ff3c741448820f" + }, + "price": 1630000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا بلونز", + "description": "پاستا-سس گوجه -ریحان -پنیر پارمزان", + "short_description": "", + "category": { + "$oid": "64aff92198ff3c7414488119" + }, + "index": 3, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696432291066.png", + "created_at": { + "$date": "2023-07-13T13:33:37.163Z" + }, + "updated_at": { + "$date": "2023-10-04T15:11:36.002Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64b00d2b98ff3c7414488402" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نان سیر", + "description": "", + "short_description": "", + "category": { + "$oid": "6398a0a482d7fc8d726a7f22" + }, + "index": 9, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1689259303799.png", + "created_at": { + "$date": "2023-07-13T14:41:47.773Z" + }, + "updated_at": { + "$date": "2023-10-04T15:01:09.657Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64b00ecc98ff3c741448843b" + }, + "price": 1680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار و مرغ گریل", + "description": "کاهو و مرغ گریل و سس مخصوص", + "short_description": "", + "category": { + "$oid": "6398a0a482d7fc8d726a7f22" + }, + "index": 7, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1689259719810.png", + "created_at": { + "$date": "2023-07-13T14:48:44.480Z" + }, + "updated_at": { + "$date": "2023-12-02T16:13:11.091Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bada0d98ff3c7414495384" + }, + "price": 1900000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "سالاد سزار با مرغ گریل", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad54b98ff3c7414495269" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:18:37.489Z" + }, + "updated_at": { + "$date": "2023-07-21T19:18:37.489Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bada2e98ff3c741449538e" + }, + "price": 2350000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "سالاد سزار سه رول", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad54b98ff3c7414495269" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:19:10.080Z" + }, + "updated_at": { + "$date": "2023-07-21T19:19:10.080Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bada5598ff3c74144953a7" + }, + "price": 2000000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "سالاد سزار دو رول", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad54b98ff3c7414495269" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:19:49.857Z" + }, + "updated_at": { + "$date": "2023-07-21T19:19:49.857Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bada7698ff3c74144953b4" + }, + "price": 750000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "سالاد فصل", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad54b98ff3c7414495269" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:20:22.796Z" + }, + "updated_at": { + "$date": "2023-07-21T19:20:22.796Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bada9898ff3c74144953be" + }, + "price": 900000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "کشک و بادمجان", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad54b98ff3c7414495269" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:20:56.455Z" + }, + "updated_at": { + "$date": "2023-07-21T19:20:56.455Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badad598ff3c74144953c8" + }, + "price": 1200000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آب دوغ خیار نوستالژی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad54b98ff3c7414495269" + }, + "index": 6, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:21:57.846Z" + }, + "updated_at": { + "$date": "2023-07-21T19:21:57.846Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badaf498ff3c74144953d2" + }, + "price": 550000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آش رشته کشک", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad66d98ff3c7414495299" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:22:28.860Z" + }, + "updated_at": { + "$date": "2023-07-21T19:22:28.860Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badb1398ff3c74144953dc" + }, + "price": 550000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آش رشته ترشی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad66d98ff3c7414495299" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:22:59.110Z" + }, + "updated_at": { + "$date": "2023-07-21T19:22:59.110Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badb4598ff3c74144953f8" + }, + "price": 600000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آش جو با سیرابی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad66d98ff3c7414495299" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:23:49.333Z" + }, + "updated_at": { + "$date": "2023-07-21T19:23:49.333Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badb6298ff3c7414495402" + }, + "price": 570000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آش جو بدون سیرابی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad66d98ff3c7414495299" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:24:18.179Z" + }, + "updated_at": { + "$date": "2023-07-21T19:24:18.179Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badb7f98ff3c741449540f" + }, + "price": 600000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آش شله قلمکار", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad66d98ff3c7414495299" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:24:47.209Z" + }, + "updated_at": { + "$date": "2023-07-21T19:24:47.209Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badb9b98ff3c7414495425" + }, + "price": 600000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آش آبادانی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad66d98ff3c7414495299" + }, + "index": 6, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:25:15.202Z" + }, + "updated_at": { + "$date": "2023-07-21T19:25:15.202Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badbc898ff3c741449542f" + }, + "price": 3100000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "بشقاب ویژه مهتاب", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:26:00.431Z" + }, + "updated_at": { + "$date": "2023-07-21T19:26:00.431Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badbf798ff3c741449544b" + }, + "price": 2700000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "سوخاری پنج تیکه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:26:47.016Z" + }, + "updated_at": { + "$date": "2023-07-21T19:26:47.016Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badc8e98ff3c7414495458" + }, + "price": 1950000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "سوخاری سه تیکه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:29:18.713Z" + }, + "updated_at": { + "$date": "2023-07-21T19:29:18.713Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badcb698ff3c741449546e" + }, + "price": 2950000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "سوخاری پنیری پنج تیکه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:29:58.916Z" + }, + "updated_at": { + "$date": "2023-07-21T19:29:58.916Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badcf898ff3c7414495478" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوخاری پنیری سه تیکه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:31:04.669Z" + }, + "updated_at": { + "$date": "2023-07-21T19:31:04.669Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badd1698ff3c7414495485" + }, + "price": 2000000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "لازانیا", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 6, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:31:34.864Z" + }, + "updated_at": { + "$date": "2023-07-21T19:31:34.864Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badd3a98ff3c7414495495" + }, + "price": 1900000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "پاستا پنه آلفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 7, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:32:10.454Z" + }, + "updated_at": { + "$date": "2023-07-21T19:32:10.454Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badd5d98ff3c741449549f" + }, + "price": 1300000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "بشقاب سبزیجات", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 8, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:32:45.868Z" + }, + "updated_at": { + "$date": "2023-07-21T19:32:45.868Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badd8898ff3c74144954ac" + }, + "price": 1200000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "کوفته تبریزی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 9, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:33:28.456Z" + }, + "updated_at": { + "$date": "2023-07-21T19:33:28.456Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64baddab98ff3c74144954bf" + }, + "price": 1500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "کباب تابه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 10, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:34:03.401Z" + }, + "updated_at": { + "$date": "2023-07-21T19:34:03.401Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64baddd198ff3c74144954c9" + }, + "price": 1500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "بورک گوشت", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 11, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:34:41.228Z" + }, + "updated_at": { + "$date": "2023-07-21T19:34:41.228Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64baddee98ff3c74144954df" + }, + "price": 1500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "بورک مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 12, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:35:10.090Z" + }, + "updated_at": { + "$date": "2023-07-21T19:35:10.090Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bade0b98ff3c74144954ec" + }, + "price": 1600000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "حسرت الملوک", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad7d298ff3c74144952de" + }, + "index": 13, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:35:39.455Z" + }, + "updated_at": { + "$date": "2023-07-21T19:35:39.455Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bade5298ff3c74144954f6" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شربت بهار نارنج", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad81798ff3c74144952fb" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:36:50.602Z" + }, + "updated_at": { + "$date": "2023-07-21T19:36:50.602Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bade7798ff3c7414495500" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شربت بیدمشک", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad81798ff3c74144952fb" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:37:27.838Z" + }, + "updated_at": { + "$date": "2023-07-21T19:37:27.838Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badf5c98ff3c741449551c" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شربت خیار سکنجبین", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad81798ff3c74144952fb" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:41:16.386Z" + }, + "updated_at": { + "$date": "2023-07-21T19:41:16.386Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badf7d98ff3c7414495526" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شربت آلبالو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad81798ff3c74144952fb" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:41:49.431Z" + }, + "updated_at": { + "$date": "2023-07-21T19:41:49.431Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64badf9798ff3c7414495530" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شربت پرتقال", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad81798ff3c74144952fb" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:42:15.725Z" + }, + "updated_at": { + "$date": "2023-07-21T19:42:15.725Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae01298ff3c741449553d" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شربت نوستالژی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad81798ff3c74144952fb" + }, + "index": 6, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:44:18.374Z" + }, + "updated_at": { + "$date": "2023-07-21T19:44:18.374Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae02e98ff3c741449554a" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شربت آرامش", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad81798ff3c74144952fb" + }, + "index": 7, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:44:46.194Z" + }, + "updated_at": { + "$date": "2023-07-21T19:44:46.194Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae05f98ff3c741449555d" + }, + "price": 2000000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "تنگ شربت", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad81798ff3c74144952fb" + }, + "index": 8, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:45:35.768Z" + }, + "updated_at": { + "$date": "2023-07-21T19:45:35.768Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae08198ff3c741449556a" + }, + "price": 2200000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "برگر ویژه مهتاب", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad83e98ff3c741449530a" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:46:09.307Z" + }, + "updated_at": { + "$date": "2023-07-21T19:46:09.307Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae0aa98ff3c7414495577" + }, + "price": 2000000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "رویال برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad83e98ff3c741449530a" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:46:50.928Z" + }, + "updated_at": { + "$date": "2023-07-21T19:46:50.928Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae0d798ff3c7414495581" + }, + "price": 1700000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "ماشروم برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad83e98ff3c741449530a" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:47:35.279Z" + }, + "updated_at": { + "$date": "2023-07-21T19:47:35.279Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae11898ff3c741449558b" + }, + "price": 350000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:48:40.187Z" + }, + "updated_at": { + "$date": "2023-07-21T19:48:40.187Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae15398ff3c7414495595" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:49:39.108Z" + }, + "updated_at": { + "$date": "2023-07-21T19:49:39.108Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae2a398ff3c74144955c1" + }, + "price": 600000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "نوتلا لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:55:15.034Z" + }, + "updated_at": { + "$date": "2023-07-21T19:55:15.034Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae2ba98ff3c74144955cb" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:55:38.511Z" + }, + "updated_at": { + "$date": "2023-07-21T19:55:38.511Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae2de98ff3c74144955d5" + }, + "price": 600000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "ماچا لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:56:14.761Z" + }, + "updated_at": { + "$date": "2023-07-21T19:56:14.761Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae30598ff3c74144955df" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 6, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:56:53.561Z" + }, + "updated_at": { + "$date": "2023-07-21T19:56:53.561Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae33598ff3c74144955e9" + }, + "price": 550000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "نسکافه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 7, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T19:57:41.126Z" + }, + "updated_at": { + "$date": "2023-07-21T19:57:41.126Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae3d898ff3c74144955ff" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 8, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:00:24.951Z" + }, + "updated_at": { + "$date": "2023-07-21T20:00:24.951Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae3f998ff3c7414495609" + }, + "price": 550000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 9, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:00:57.919Z" + }, + "updated_at": { + "$date": "2023-07-21T20:00:57.919Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae41998ff3c741449561f" + }, + "price": 650000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 10, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:01:29.610Z" + }, + "updated_at": { + "$date": "2023-07-21T20:01:29.610Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae44498ff3c7414495629" + }, + "price": 550000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "کوک اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 11, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:02:12.282Z" + }, + "updated_at": { + "$date": "2023-07-21T20:02:12.282Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae46698ff3c7414495633" + }, + "price": 700000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "دالگونا", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 12, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:02:46.849Z" + }, + "updated_at": { + "$date": "2023-07-21T20:02:46.849Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae49298ff3c741449563d" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آیس موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 13, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:03:30.310Z" + }, + "updated_at": { + "$date": "2023-07-21T20:03:30.310Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae4bb98ff3c7414495647" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "رومانو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 14, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:04:11.540Z" + }, + "updated_at": { + "$date": "2023-07-21T20:04:11.540Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae4da98ff3c7414495651" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آفوگاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 15, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:04:42.048Z" + }, + "updated_at": { + "$date": "2023-07-21T20:04:42.048Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae50598ff3c741449565e" + }, + "price": 550000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آیس لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 16, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:05:25.654Z" + }, + "updated_at": { + "$date": "2023-07-21T20:05:25.654Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae52298ff3c7414495668" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "ترک", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 17, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:05:54.786Z" + }, + "updated_at": { + "$date": "2023-07-21T20:05:54.786Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae54b98ff3c7414495672" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "یونانی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 18, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:06:35.197Z" + }, + "updated_at": { + "$date": "2023-07-21T20:06:35.197Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae56898ff3c741449567c" + }, + "price": 600000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "فرانسه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 19, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:07:04.422Z" + }, + "updated_at": { + "$date": "2023-07-21T20:07:04.422Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae63b98ff3c7414495687" + }, + "price": 100000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "طعم و سیروپ اضافه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8bf98ff3c7414495319" + }, + "index": 20, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:10:35.295Z" + }, + "updated_at": { + "$date": "2023-07-21T20:10:35.295Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae65a98ff3c7414495691" + }, + "price": 450000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8fd98ff3c7414495328" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:11:06.042Z" + }, + "updated_at": { + "$date": "2023-07-21T20:11:06.042Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae6c498ff3c741449569e" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "دارک چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8fd98ff3c7414495328" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:12:52.020Z" + }, + "updated_at": { + "$date": "2023-07-21T20:12:52.020Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae6f798ff3c74144956a8" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "وانیل چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8fd98ff3c7414495328" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:13:43.083Z" + }, + "updated_at": { + "$date": "2023-07-21T20:13:43.083Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae71798ff3c74144956b2" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "فندق چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8fd98ff3c7414495328" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:14:15.368Z" + }, + "updated_at": { + "$date": "2023-07-21T20:14:15.368Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae73b98ff3c74144956bc" + }, + "price": 450000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8fd98ff3c7414495328" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:14:51.752Z" + }, + "updated_at": { + "$date": "2023-07-21T20:14:51.752Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae76f98ff3c74144956c6" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "ماسالا چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8fd98ff3c7414495328" + }, + "index": 6, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:15:43.067Z" + }, + "updated_at": { + "$date": "2023-07-21T20:15:43.067Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae79298ff3c74144956d3" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad8fd98ff3c7414495328" + }, + "index": 7, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:16:18.588Z" + }, + "updated_at": { + "$date": "2023-07-21T20:16:18.588Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bae7dd98ff3c74144956e3" + }, + "price": 300000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "حلوا مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad91c98ff3c7414495331" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-21T20:17:33.816Z" + }, + "updated_at": { + "$date": "2023-07-21T20:17:33.816Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbeef198ff3c7414495e63" + }, + "price": 350000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "باقلوا", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad91c98ff3c7414495331" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:00:01.975Z" + }, + "updated_at": { + "$date": "2023-07-22T15:00:01.975Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbef1998ff3c7414495e6d" + }, + "price": 350000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "مسقطی ویژه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad91c98ff3c7414495331" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:00:41.106Z" + }, + "updated_at": { + "$date": "2023-07-22T15:00:41.106Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbef3b98ff3c7414495e77" + }, + "price": 700000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "کیک بستنی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad91c98ff3c7414495331" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:01:15.566Z" + }, + "updated_at": { + "$date": "2023-07-22T15:01:15.566Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbef5c98ff3c7414495e84" + }, + "price": 600000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "کیک روز", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad91c98ff3c7414495331" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:01:48.757Z" + }, + "updated_at": { + "$date": "2023-07-22T15:01:48.757Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbef7f98ff3c7414495e8e" + }, + "price": 950000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شیک مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad92e98ff3c741449533a" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:02:23.906Z" + }, + "updated_at": { + "$date": "2023-07-22T15:02:23.906Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbefa798ff3c7414495e9b" + }, + "price": 800000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شیک موز انبه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad92e98ff3c741449533a" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:03:03.111Z" + }, + "updated_at": { + "$date": "2023-07-22T15:03:03.111Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbefda98ff3c7414495ea8" + }, + "price": 750000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شیک شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad92e98ff3c741449533a" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:03:54.710Z" + }, + "updated_at": { + "$date": "2023-07-22T15:03:54.710Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbf11498ff3c7414495ed3" + }, + "price": 800000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شیک بادام زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad92e98ff3c741449533a" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:09:08.307Z" + }, + "updated_at": { + "$date": "2023-07-22T15:09:08.307Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbf13998ff3c7414495edd" + }, + "price": 750000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شیک نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad92e98ff3c741449533a" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:09:45.117Z" + }, + "updated_at": { + "$date": "2023-07-22T15:09:45.117Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbf15f98ff3c7414495eea" + }, + "price": 750000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شیک دارک", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad92e98ff3c741449533a" + }, + "index": 6, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:10:23.919Z" + }, + "updated_at": { + "$date": "2023-07-22T15:10:23.919Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbf17d98ff3c7414495efd" + }, + "price": 750000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "شیک ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad92e98ff3c741449533a" + }, + "index": 7, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:10:53.224Z" + }, + "updated_at": { + "$date": "2023-07-22T15:10:53.224Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbf1a098ff3c7414495f0a" + }, + "price": 500000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "چای مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:11:28.793Z" + }, + "updated_at": { + "$date": "2023-07-22T15:11:28.793Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbf1c198ff3c7414495f17" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "دمنوش سلامتی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:12:01.499Z" + }, + "updated_at": { + "$date": "2023-07-22T15:12:01.499Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbf1f998ff3c7414495f21" + }, + "price": 350000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "چای دمی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:12:57.319Z" + }, + "updated_at": { + "$date": "2023-07-22T15:12:57.319Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbf4f898ff3c7414495f3d" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "چای زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:25:44.455Z" + }, + "updated_at": { + "$date": "2023-07-22T15:25:44.455Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbf53f98ff3c7414495f47" + }, + "price": 350000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "چای سبز", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:26:55.629Z" + }, + "updated_at": { + "$date": "2023-07-22T15:26:55.629Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbfb1098ff3c7414495f87" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "دمنوش لیمو نعناع", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 6, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:51:44.614Z" + }, + "updated_at": { + "$date": "2023-07-22T15:51:44.614Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbfb4098ff3c7414495f91" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "دمنوش بهار نارنج", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 7, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T15:52:32.495Z" + }, + "updated_at": { + "$date": "2023-07-22T15:52:32.495Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbfe0998ff3c7414496016" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "دمنوش گل گاوزبان", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 8, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:04:25.055Z" + }, + "updated_at": { + "$date": "2023-07-22T16:04:25.055Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbfe3698ff3c7414496023" + }, + "price": 450000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "دمنوش سیب و به لیمو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 9, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:05:10.232Z" + }, + "updated_at": { + "$date": "2023-07-22T16:05:10.232Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbfe5f98ff3c7414496033" + }, + "price": 450000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "دمنوش سیب و دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 10, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:05:51.915Z" + }, + "updated_at": { + "$date": "2023-07-22T16:05:51.915Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbfe9598ff3c7414496055" + }, + "price": 400000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "دمنوش به", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 11, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:06:45.038Z" + }, + "updated_at": { + "$date": "2023-07-22T16:06:45.038Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbfec298ff3c7414496068" + }, + "price": 1000000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "قوری چای", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 12, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:07:30.472Z" + }, + "updated_at": { + "$date": "2023-07-22T16:07:30.472Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbff6c98ff3c7414496094" + }, + "price": 10000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "طعم اضافه", + "description": "هل - دارچین - زنجبیل ", + "short_description": "", + "category": { + "$oid": "64bad94398ff3c7414495343" + }, + "index": 13, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:10:20.826Z" + }, + "updated_at": { + "$date": "2023-07-22T16:10:20.826Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbff9798ff3c74144960aa" + }, + "price": 600000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad96798ff3c741449534f" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:11:03.530Z" + }, + "updated_at": { + "$date": "2023-07-22T16:11:03.530Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbffb898ff3c74144960b7" + }, + "price": 650000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "رد موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad96798ff3c741449534f" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:11:36.968Z" + }, + "updated_at": { + "$date": "2023-07-22T16:11:36.968Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bbffd698ff3c74144960ca" + }, + "price": 600000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad96798ff3c741449534f" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:12:06.314Z" + }, + "updated_at": { + "$date": "2023-07-22T16:12:06.314Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc000e98ff3c74144960e9" + }, + "price": 650000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "سیگنیچر", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad96798ff3c741449534f" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:13:02.686Z" + }, + "updated_at": { + "$date": "2023-07-22T16:13:02.686Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc003398ff3c74144960f3" + }, + "price": 650000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "بلواسکای", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad96798ff3c741449534f" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:13:39.686Z" + }, + "updated_at": { + "$date": "2023-07-22T16:13:39.686Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc005298ff3c7414496103" + }, + "price": 650000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "تروپیکال", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad96798ff3c741449534f" + }, + "index": 6, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:14:10.191Z" + }, + "updated_at": { + "$date": "2023-07-22T16:14:10.191Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc008e98ff3c7414496116" + }, + "price": 950000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "اسموتی مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad99198ff3c7414495358" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:15:10.910Z" + }, + "updated_at": { + "$date": "2023-07-22T16:15:26.199Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc00c398ff3c7414496133" + }, + "price": 800000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "اسموتی شاه توت", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad99198ff3c7414495358" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:16:03.640Z" + }, + "updated_at": { + "$date": "2023-07-22T16:16:03.640Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc00e798ff3c741449613d" + }, + "price": 700000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "اسموتی هندوانه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad99198ff3c7414495358" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:16:39.297Z" + }, + "updated_at": { + "$date": "2023-07-22T16:16:39.297Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc010b98ff3c741449614a" + }, + "price": 800000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "اسموتی توت فرنگی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad99198ff3c7414495358" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:17:15.890Z" + }, + "updated_at": { + "$date": "2023-07-22T16:17:15.890Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc014798ff3c7414496166" + }, + "price": 800000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "اسموتی طالبی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad99198ff3c7414495358" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:18:15.662Z" + }, + "updated_at": { + "$date": "2023-07-22T16:18:15.662Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc017498ff3c7414496170" + }, + "price": 60000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "آب معدنی ", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad9b498ff3c7414495367" + }, + "index": 1, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:19:00.941Z" + }, + "updated_at": { + "$date": "2023-07-22T16:19:00.941Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc019698ff3c741449617a" + }, + "price": 190000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکا قوطی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad9b498ff3c7414495367" + }, + "index": 2, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:19:34.477Z" + }, + "updated_at": { + "$date": "2023-07-22T16:19:34.477Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc01b698ff3c7414496184" + }, + "price": 190000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "فانتا قوطی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad9b498ff3c7414495367" + }, + "index": 3, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:20:06.532Z" + }, + "updated_at": { + "$date": "2023-07-22T16:20:06.532Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc040298ff3c74144961e2" + }, + "price": 190000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "اسپرایت قوطی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad9b498ff3c7414495367" + }, + "index": 4, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T16:29:54.960Z" + }, + "updated_at": { + "$date": "2023-07-22T16:29:54.960Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc1f9e98ff3c74144968f5" + }, + "price": 150000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "کوکا شیشه", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad9b498ff3c7414495367" + }, + "index": 5, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T18:27:42.976Z" + }, + "updated_at": { + "$date": "2023-07-22T18:27:42.976Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc1fc498ff3c7414496902" + }, + "price": 150000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "فانتا شیشه ای", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad9b498ff3c7414495367" + }, + "index": 6, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T18:28:20.497Z" + }, + "updated_at": { + "$date": "2023-07-22T18:28:20.497Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc1fe398ff3c741449690c" + }, + "price": 150000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "اسپرایت شیشه ای", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad9b498ff3c7414495367" + }, + "index": 7, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T18:28:51.210Z" + }, + "updated_at": { + "$date": "2023-07-22T18:28:51.210Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc202698ff3c7414496922" + }, + "price": 220000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دلستر شیشه انواع طعم ها", + "description": "طعم هلو - مالت - استوایی - لیمو - سیب", + "short_description": "", + "category": { + "$oid": "64bad9b498ff3c7414495367" + }, + "index": 8, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T18:29:58.272Z" + }, + "updated_at": { + "$date": "2023-07-22T18:29:58.272Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc204698ff3c7414496932" + }, + "price": 300000, + "stock": 30, + "static_discount": 0, + "active": true, + "name": "انرژی زا", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad9b498ff3c7414495367" + }, + "index": 9, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T18:30:30.567Z" + }, + "updated_at": { + "$date": "2023-07-22T18:30:30.567Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc206b98ff3c741449693f" + }, + "price": 300000, + "stock": 100, + "static_discount": 0, + "active": true, + "name": "دوغ محلی", + "description": "", + "short_description": "", + "category": { + "$oid": "64bad9b498ff3c7414495367" + }, + "index": 10, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T18:31:07.391Z" + }, + "updated_at": { + "$date": "2023-07-22T18:31:07.391Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bc20b698ff3c7414496964" + }, + "price": 190000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فرش دی ( آبمویوه گازدار) با طعم های مختلف", + "description": "پرتقال پشن فروت - انگور قرمز - انبه پشن فروت - آلبالو", + "short_description": "", + "category": { + "$oid": "64bad9b498ff3c7414495367" + }, + "index": 11, + "storeId": { + "$oid": "64bad3b698ff3c741449521e" + }, + "created_at": { + "$date": "2023-07-22T18:32:22.129Z" + }, + "updated_at": { + "$date": "2023-07-22T18:32:22.129Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64bfa89b98ff3c7414499294" + }, + "price": 830000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 10, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1692637912175.png", + "created_at": { + "$date": "2023-07-25T10:48:59.468Z" + }, + "updated_at": { + "$date": "2023-10-04T18:58:43.998Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64cbb30a1e0aeeaf011a00ce" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت فرایز White fries", + "description": "", + "short_description": "", + "category": { + "$oid": "6398a0a482d7fc8d726a7f22" + }, + "index": 12, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "created_at": { + "$date": "2023-08-03T14:00:42.651Z" + }, + "updated_at": { + "$date": "2023-12-02T16:11:06.342Z" + }, + "__v": 0, + "image": "food_1692635556395.png" +}, +{ + "_id": { + "$oid": "64e4f49c59383e8d754e507c" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "یامی برگر", + "description": "یک عدد برگر گوشت گوساله،یک عدد پنیر چیز برگر، یک عدد ژامبون، کاهو، خیارشور، گوجه، سس مخصوص ", + "short_description": "", + "category": { + "$oid": "64b4e69698ff3c741448df0d" + }, + "index": 1, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T17:47:08.378Z" + }, + "updated_at": { + "$date": "2025-09-03T15:00:23.991Z" + }, + "__v": 0, + "image": "food_1733222298625.png" +}, +{ + "_id": { + "$oid": "64e4f55659383e8d754e50b4" + }, + "price": 2750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "یامی اسپشیال", + "description": "یک عدد برگر گوشت گوساله،دو عدد پنیر چیز برگر، دو عدد ژامبون، کاهو، خیارشور، گوجه، سس مخصوص", + "short_description": "", + "category": { + "$oid": "64b4e69698ff3c741448df0d" + }, + "index": 2, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T17:50:14.628Z" + }, + "updated_at": { + "$date": "2025-09-03T15:01:14.597Z" + }, + "__v": 0, + "image": "food_1733221989785.png" +}, +{ + "_id": { + "$oid": "64e4f5b359383e8d754e50d4" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز برگر", + "description": "یک عدد برگر گوشت گوساله، یک عدد پنیر چیز برگر، کاهو، خیارشور، گوجه، سس مخصوص ", + "short_description": "", + "category": { + "$oid": "64b4e69698ff3c741448df0d" + }, + "index": 3, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T17:51:47.894Z" + }, + "updated_at": { + "$date": "2025-09-03T15:01:42.395Z" + }, + "__v": 0, + "image": "food_1733222342056.png" +}, +{ + "_id": { + "$oid": "64e4f5db59383e8d754e50e4" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماشروم برگر", + "description": "یک عدد برگر گوشت گوساله، قارچ، پنیر چیز برگر، کاهو، خیارشور، گوجه، سس مخصوص ", + "short_description": "", + "category": { + "$oid": "64b4e69698ff3c741448df0d" + }, + "index": 4, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T17:52:27.028Z" + }, + "updated_at": { + "$date": "2025-09-03T15:02:49.519Z" + }, + "__v": 0, + "image": "food_1733222376578.png" +}, +{ + "_id": { + "$oid": "64e4f60059383e8d754e50ee" + }, + "price": 3400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چوریتسو برگر", + "description": "یک عدد برگر گوشت گوساله، سوسیس چوریتسو، دو عدد پنیر چیز برگر، سس مخصوص", + "short_description": "", + "category": { + "$oid": "64b4e69698ff3c741448df0d" + }, + "index": 5, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T17:53:04.957Z" + }, + "updated_at": { + "$date": "2025-09-03T15:03:40.530Z" + }, + "__v": 0, + "image": "food_1699784885688.png" +}, +{ + "_id": { + "$oid": "64e4fdd959383e8d754e5427" + }, + "price": 2850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکن برگر", + "description": "یک عدد برگر گوشت گوساله، پیاز سوخاری،دو عدد پنیر چیز برگر، خیارشور، سس مخصوص", + "short_description": "", + "category": { + "$oid": "64b4e69698ff3c741448df0d" + }, + "index": 6, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:26:33.187Z" + }, + "updated_at": { + "$date": "2025-09-03T15:04:10.538Z" + }, + "__v": 0, + "image": "food_1733222439998.png" +}, +{ + "_id": { + "$oid": "64e4fe0459383e8d754e5434" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هالوپینو برگر(تند)", + "description": "یک عدد برگر گوشت گوساله، یک عدد پنیر چیز برگر،فلفل هالوپینو ، گوجه، کاهو، خیارشور،سس مخصوص ", + "short_description": "", + "category": { + "$oid": "64b4e69698ff3c741448df0d" + }, + "index": 7, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:27:16.921Z" + }, + "updated_at": { + "$date": "2025-09-03T15:04:41.533Z" + }, + "__v": 0, + "image": "food_1733222055490.png" +}, +{ + "_id": { + "$oid": "64e4fe6759383e8d754e545f" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلاسیک برگر", + "description": "یک عدد برگر گوشت گوساله، کاهو، خیارشور، گوجه، سس مخصوص ", + "short_description": "", + "category": { + "$oid": "64b4e69698ff3c741448df0d" + }, + "index": 8, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:28:55.785Z" + }, + "updated_at": { + "$date": "2025-09-03T15:05:13.121Z" + }, + "__v": 0, + "image": "food_1733222495307.png" +}, +{ + "_id": { + "$oid": "64e4fe8659383e8d754e5475" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن برگر", + "description": "یک عدد برگر مرغ، یک عدد پنیر چیز برگر، کاهو، خیارشور،گوجه،سس مخصوص", + "short_description": "", + "category": { + "$oid": "64b4e69698ff3c741448df0d" + }, + "index": 9, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:29:26.900Z" + }, + "updated_at": { + "$date": "2025-09-03T15:05:41.660Z" + }, + "__v": 0, + "image": "food_1733222208247.png" +}, +{ + "_id": { + "$oid": "64e4fec259383e8d754e549c" + }, + "price": 3400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دبل برگر", + "description": "دو عدد برگر گوشت گوساله، کاهو، خیارشور، گوجه، سس مخصوص ", + "short_description": "", + "category": { + "$oid": "64ba6e2698ff3c7414494144" + }, + "index": 1, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:30:26.869Z" + }, + "updated_at": { + "$date": "2025-09-03T15:06:14.020Z" + }, + "__v": 0, + "image": "food_1733222558661.png" +}, +{ + "_id": { + "$oid": "64e4fee359383e8d754e54b2" + }, + "price": 3600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دبل چیز برگر", + "description": "دو عدد برگر گوشت گوساله، دو عدد پنیر چیز برگر، کاهو، خیارشور، گوجه، سس مخصوص ", + "short_description": "", + "category": { + "$oid": "64ba6e2698ff3c7414494144" + }, + "index": 2, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:30:59.522Z" + }, + "updated_at": { + "$date": "2025-09-03T15:06:43.953Z" + }, + "__v": 0, + "image": "food_1733222616471.png" +}, +{ + "_id": { + "$oid": "64e4ff2259383e8d754e54c5" + }, + "price": 3800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دبل چیز اسپشیال", + "description": "دو عدد برگر گوشت گوساله، دو عدد پنیر چیز برگر، دو عدد ژامبون،کاهو، خیارشور، گوجه، سس مخصوص", + "short_description": "", + "category": { + "$oid": "64ba6e2698ff3c7414494144" + }, + "index": 3, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:32:02.394Z" + }, + "updated_at": { + "$date": "2025-09-03T15:07:19.089Z" + }, + "__v": 0, + "image": "food_1699785752276.png" +}, +{ + "_id": { + "$oid": "64e4ff4359383e8d754e54e8" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "یامی چیکن", + "description": "یک عدد برگر گوشت گوساله، یک عدد برگر مرغ، یک عدد ژامبون، یک عدد پنیر چیز برگر، کاهو، گوجه، خیارشور، سس مخصوص", + "short_description": "", + "category": { + "$oid": "64ba6e2698ff3c7414494144" + }, + "index": 4, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:32:35.251Z" + }, + "updated_at": { + "$date": "2025-09-03T15:07:49.805Z" + }, + "__v": 0, + "image": "food_1733222265811.png" +}, +{ + "_id": { + "$oid": "64e5000159383e8d754e5532" + }, + "price": 4500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تریپل برگر", + "description": "سه عدد برگر گوشت گوساله، سه عدد پنیر چیز برگر، کاهو، خیارشور، گوجه، سس مخصوص ", + "short_description": "", + "category": { + "$oid": "64babeff98ff3c7414494b79" + }, + "index": 1, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:35:45.063Z" + }, + "updated_at": { + "$date": "2025-09-03T15:09:18.361Z" + }, + "__v": 0, + "image": "food_1733222694715.png" +}, +{ + "_id": { + "$oid": "64e5002259383e8d754e553f" + }, + "price": 4500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میکس تریپل", + "description": "دو عدد برگر گوشت گوساله، یک عدد برگر مرغ ، دو عدد پنیر چیز برگر، کاهو، خیارشور، گوجه، سس مخصوص ", + "short_description": "", + "category": { + "$oid": "64babeff98ff3c7414494b79" + }, + "index": 2, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:36:18.981Z" + }, + "updated_at": { + "$date": "2025-09-03T15:09:53.288Z" + }, + "__v": 0, + "image": "food_1733222144761.png" +}, +{ + "_id": { + "$oid": "64e5009b59383e8d754e556a" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار", + "description": "دو عدد رول سوخاری،کاهو، نان سیر،زیتون سبز،سس سزار", + "short_description": "", + "category": { + "$oid": "64b4e68898ff3c741448df04" + }, + "index": 1, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:38:19.488Z" + }, + "updated_at": { + "$date": "2025-08-27T15:25:53.916Z" + }, + "__v": 0, + "image": "food_1733222826703.png" +}, +{ + "_id": { + "$oid": "64e500d759383e8d754e557e" + }, + "price": 3200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد یامی", + "description": "فیله مرغ گریل شده،میکس کلم و کاهو،نان تست،ذرت،خیار،هویج،گرین سس", + "short_description": "", + "category": { + "$oid": "64b4e68898ff3c741448df04" + }, + "index": 3, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:39:19.958Z" + }, + "updated_at": { + "$date": "2025-08-27T15:24:56.873Z" + }, + "__v": 0, + "image": "food_1733222864377.png" +}, +{ + "_id": { + "$oid": "64e5037b59383e8d754e56b7" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فرنچ فرایز", + "description": "سیب زمینی سرخ شده، ادویه مخصوص", + "short_description": "", + "category": { + "$oid": "64b4e68898ff3c741448df04" + }, + "index": 4, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-22T18:50:35.719Z" + }, + "updated_at": { + "$date": "2025-04-05T16:25:46.834Z" + }, + "__v": 0, + "image": "food_1699784947500.png" +}, +{ + "_id": { + "$oid": "64e8490d59383e8d754e922b" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه ترک", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ed59383e8d754e918e" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:24:13.613Z" + }, + "updated_at": { + "$date": "2024-05-16T18:42:33.429Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e849ae59383e8d754e9244" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فرنچ پرس", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ed59383e8d754e918e" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:26:54.436Z" + }, + "updated_at": { + "$date": "2024-05-16T18:42:49.967Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e849d159383e8d754e9250" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "V60", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ed59383e8d754e918e" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:27:29.315Z" + }, + "updated_at": { + "$date": "2024-05-16T18:41:50.646Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e849f659383e8d754e925a" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کمکس", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ed59383e8d754e918e" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:28:06.878Z" + }, + "updated_at": { + "$date": "2024-05-16T18:41:34.328Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e84ac459383e8d754e9277" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو / ریسترتو (۳۰-۷۰)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:31:32.385Z" + }, + "updated_at": { + "$date": "2024-05-16T18:23:53.155Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e84b4559383e8d754e9297" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو/ ریسترتو (عربیکا)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:33:41.369Z" + }, + "updated_at": { + "$date": "2024-05-16T18:24:40.229Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e84f8a59383e8d754e92b7" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماکیاتو (۳۰-۷۰)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:51:54.437Z" + }, + "updated_at": { + "$date": "2024-05-16T18:40:06.528Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e84fc159383e8d754e92c1" + }, + "price": 670000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماکیاتو (عربیکا)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:52:49.890Z" + }, + "updated_at": { + "$date": "2024-05-16T18:39:01.438Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8505959383e8d754e9310" + }, + "price": 580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو (۳۰-۷۰) ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 7, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:55:21.772Z" + }, + "updated_at": { + "$date": "2024-05-16T18:37:44.811Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e850bb59383e8d754e931a" + }, + "price": 630000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو (عربیکا)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 8, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:56:59.561Z" + }, + "updated_at": { + "$date": "2024-05-16T18:37:20.235Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8516359383e8d754e9331" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو (۳۰-۷۰)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 10, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T06:59:47.116Z" + }, + "updated_at": { + "$date": "2024-05-16T18:35:41.762Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8521559383e8d754e936a" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو (عربیکا) ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 11, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:02:45.830Z" + }, + "updated_at": { + "$date": "2024-05-16T18:35:12.522Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8527159383e8d754e937e" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کافه لته (۳۰-۷۰)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 13, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:04:17.222Z" + }, + "updated_at": { + "$date": "2024-05-16T18:33:05.942Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e852ae59383e8d754e9388" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کافه لته (عربیکا) ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 15, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:05:18.304Z" + }, + "updated_at": { + "$date": "2024-05-16T18:32:36.314Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e852e859383e8d754e939f" + }, + "price": 780000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو (۳۰-۷۰) ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 16, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:06:16.384Z" + }, + "updated_at": { + "$date": "2024-05-16T18:31:16.836Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8531159383e8d754e93a9" + }, + "price": 830000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو (عربیکا)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 17, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:06:57.301Z" + }, + "updated_at": { + "$date": "2024-05-16T18:30:43.651Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8554759383e8d754e9452" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا (۳۰-۷۰) ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 19, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:16:23.799Z" + }, + "updated_at": { + "$date": "2024-05-16T18:29:43.565Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8556d59383e8d754e945c" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا (عربیکا)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 20, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:17:01.587Z" + }, + "updated_at": { + "$date": "2024-05-16T18:29:20.205Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e855c359383e8d754e9470" + }, + "price": 520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو کن پانا", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 22, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:18:27.912Z" + }, + "updated_at": { + "$date": "2024-05-16T18:28:16.008Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e855fc59383e8d754e947a" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8464759383e8d754e919d" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:19:24.019Z" + }, + "updated_at": { + "$date": "2024-05-16T18:44:29.547Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8562459383e8d754e9484" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8464759383e8d754e919d" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:20:04.873Z" + }, + "updated_at": { + "$date": "2024-05-16T18:44:06.206Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e856b459383e8d754e94a2" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خیار سکنجبین", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8483159383e8d754e91e7" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:22:28.702Z" + }, + "updated_at": { + "$date": "2024-05-16T19:06:37.287Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e856de59383e8d754e94ac" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شربت لیمونعنا", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8483159383e8d754e91e7" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:23:10.061Z" + }, + "updated_at": { + "$date": "2024-05-16T19:07:36.866Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e856fa59383e8d754e94b6" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شربت بهار نارنج", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8483159383e8d754e91e7" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:23:38.617Z" + }, + "updated_at": { + "$date": "2024-05-16T19:07:58.499Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8571c59383e8d754e94c0" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شربت نسترن", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8483159383e8d754e91e7" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:24:12.307Z" + }, + "updated_at": { + "$date": "2024-05-16T19:07:18.698Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8575559383e8d754e94ca" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شربت بیدمشک", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8483159383e8d754e91e7" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:25:09.154Z" + }, + "updated_at": { + "$date": "2024-05-16T19:06:58.544Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8577d59383e8d754e94d4" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شربت زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8483159383e8d754e91e7" + }, + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:25:49.707Z" + }, + "updated_at": { + "$date": "2023-08-25T07:25:49.707Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85af459383e8d754e94ed" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای دمی تک نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "64e846b359383e8d754e91b1" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:40:36.309Z" + }, + "updated_at": { + "$date": "2024-05-16T18:45:40.071Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85b6359383e8d754e94f7" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای زعفران", + "description": "همراه با باقلوا", + "short_description": "", + "category": { + "$oid": "64e846b359383e8d754e91b1" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:42:27.846Z" + }, + "updated_at": { + "$date": "2024-05-16T18:47:28.674Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85b8259383e8d754e9501" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای آرامش ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e846b359383e8d754e91b1" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:42:58.635Z" + }, + "updated_at": { + "$date": "2024-05-16T18:47:04.162Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85bb659383e8d754e950e" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش آویشن نعنا", + "description": "", + "short_description": "", + "category": { + "$oid": "64e846b359383e8d754e91b1" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:43:50.257Z" + }, + "updated_at": { + "$date": "2024-05-16T18:46:45.877Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85c1559383e8d754e951e" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش بهارنارنج به لیمو", + "description": "", + "short_description": "", + "category": { + "$oid": "64e846b359383e8d754e91b1" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:45:25.815Z" + }, + "updated_at": { + "$date": "2024-05-16T18:46:22.881Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85c3359383e8d754e9528" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش میوه های قرمز", + "description": "", + "short_description": "", + "category": { + "$oid": "64e846b359383e8d754e91b1" + }, + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:45:55.136Z" + }, + "updated_at": { + "$date": "2024-05-16T18:46:05.215Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85cf359383e8d754e9542" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لته (70-30)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8477d59383e8d754e91c6" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:49:07.524Z" + }, + "updated_at": { + "$date": "2024-05-16T18:52:22.756Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85d3759383e8d754e954d" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لته (عربیکا)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8477d59383e8d754e91c6" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:50:15.871Z" + }, + "updated_at": { + "$date": "2024-05-16T18:52:43.584Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85d9959383e8d754e9561" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کارامل ماکیاتو (70-30)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8477d59383e8d754e91c6" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:51:53.164Z" + }, + "updated_at": { + "$date": "2024-05-16T18:51:19.713Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85dc059383e8d754e956b" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کارامل ماکیاتو (عربیکا)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8477d59383e8d754e91c6" + }, + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:52:32.572Z" + }, + "updated_at": { + "$date": "2024-05-16T18:52:06.012Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85e5a59383e8d754e957f" + }, + "price": 820000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا (70-30)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8477d59383e8d754e91c6" + }, + "index": 8, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:55:06.775Z" + }, + "updated_at": { + "$date": "2024-05-16T18:49:53.188Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85e7859383e8d754e9589" + }, + "price": 870000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا (عربیکا)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8477d59383e8d754e91c6" + }, + "index": 9, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:55:36.956Z" + }, + "updated_at": { + "$date": "2024-05-16T18:50:25.315Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85ef259383e8d754e95a0" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس امریکانو (70-30)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8477d59383e8d754e91c6" + }, + "index": 11, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T07:57:38.760Z" + }, + "updated_at": { + "$date": "2024-05-16T18:49:10.082Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e85fa159383e8d754e95c4" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس امریکانو (عربیکا)", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8477d59383e8d754e91c6" + }, + "index": 12, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:00:33.256Z" + }, + "updated_at": { + "$date": "2024-05-16T18:48:52.326Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8605a59383e8d754e95ed" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک وانیل ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847df59383e8d754e91cf" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:03:38.760Z" + }, + "updated_at": { + "$date": "2024-05-16T19:04:28.642Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8607f59383e8d754e95f7" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک قهوه", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847df59383e8d754e91cf" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:04:15.884Z" + }, + "updated_at": { + "$date": "2024-05-16T19:01:38.830Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8609b59383e8d754e9607" + }, + "price": 870000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک بادام زمینی ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847df59383e8d754e91cf" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:04:43.873Z" + }, + "updated_at": { + "$date": "2023-08-25T08:05:04.831Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e860d559383e8d754e9627" + }, + "price": 870000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک کارامل سالت", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847df59383e8d754e91cf" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:05:41.396Z" + }, + "updated_at": { + "$date": "2023-08-25T08:05:41.396Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e860fe59383e8d754e9634" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847df59383e8d754e91cf" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:06:22.067Z" + }, + "updated_at": { + "$date": "2023-08-25T08:06:22.067Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8612e59383e8d754e9653" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847df59383e8d754e91cf" + }, + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:07:10.281Z" + }, + "updated_at": { + "$date": "2023-08-25T08:07:10.281Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8615659383e8d754e9663" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک موز شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847df59383e8d754e91cf" + }, + "index": 7, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:07:50.165Z" + }, + "updated_at": { + "$date": "2024-05-16T19:05:19.514Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8617959383e8d754e9676" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک شکلات بادام", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847df59383e8d754e91cf" + }, + "index": 8, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:08:25.120Z" + }, + "updated_at": { + "$date": "2023-08-25T08:08:25.120Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8619659383e8d754e9680" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847fe59383e8d754e91d8" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:08:54.139Z" + }, + "updated_at": { + "$date": "2024-05-16T18:54:04.842Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e861bb59383e8d754e968f" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جینجر رزماری ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847fe59383e8d754e91d8" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:09:31.496Z" + }, + "updated_at": { + "$date": "2024-05-16T19:00:24.072Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8620659383e8d754e96a4" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورنج لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847fe59383e8d754e91d8" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:10:46.912Z" + }, + "updated_at": { + "$date": "2024-05-16T18:57:53.169Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8622759383e8d754e96ae" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847fe59383e8d754e91d8" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:11:19.611Z" + }, + "updated_at": { + "$date": "2024-05-16T18:57:16.872Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8624959383e8d754e96b8" + }, + "price": 720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رد موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847fe59383e8d754e91d8" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:11:53.832Z" + }, + "updated_at": { + "$date": "2024-05-16T18:56:53.811Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8626d59383e8d754e96c2" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوربری ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847fe59383e8d754e91d8" + }, + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:12:29.153Z" + }, + "updated_at": { + "$date": "2024-05-16T18:56:34.950Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e862b359383e8d754e96cd" + }, + "price": 870000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تروپیکال فروت", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847fe59383e8d754e91d8" + }, + "index": 7, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:13:39.202Z" + }, + "updated_at": { + "$date": "2024-05-16T18:55:48.296Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e862e459383e8d754e96ea" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلواسکای ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847fe59383e8d754e91d8" + }, + "index": 8, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:14:28.374Z" + }, + "updated_at": { + "$date": "2024-05-16T18:54:48.215Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8630a59383e8d754e96f4" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "انبه شاتوت ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847fe59383e8d754e91d8" + }, + "index": 9, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T08:15:06.366Z" + }, + "updated_at": { + "$date": "2024-05-16T18:58:36.602Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8752c59383e8d754e98e3" + }, + "price": 5500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رول دارچین ساده", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8488859383e8d754e9202" + }, + "index": 7, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T09:32:28.308Z" + }, + "updated_at": { + "$date": "2024-05-30T11:36:16.697Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8761359383e8d754e997e" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کروسان مغزدار ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8488859383e8d754e9202" + }, + "index": 13, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T09:36:19.667Z" + }, + "updated_at": { + "$date": "2024-05-30T11:39:55.936Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64e8763559383e8d754e9994" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شات سیروپ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e848ce59383e8d754e920b" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-08-25T09:36:53.332Z" + }, + "updated_at": { + "$date": "2024-05-30T11:40:20.221Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64edb3c859383e8d754ef5d7" + }, + "price": 4800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چانو(سیر و استیک)", + "description": "گوشت گوساله مزه دار شده،پپرونی،زیتون،قارچ،سس سیر", + "short_description": "", + "category": { + "$oid": "64edb2bb59383e8d754ef59b" + }, + "index": 1, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T09:00:56.333Z" + }, + "updated_at": { + "$date": "2025-08-27T15:23:50.171Z" + }, + "__v": 0, + "image": "food_1733223584119.png" +}, +{ + "_id": { + "$oid": "64edb3f159383e8d754ef5e1" + }, + "price": 3900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پپرونی", + "description": "ژامبون پپرونی،قارچ،فلفل دلمه", + "short_description": "", + "category": { + "$oid": "64edb2bb59383e8d754ef59b" + }, + "index": 2, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T09:01:37.598Z" + }, + "updated_at": { + "$date": "2025-08-27T15:22:09.442Z" + }, + "__v": 0, + "image": "food_1733221872848.png" +}, +{ + "_id": { + "$oid": "64edb41559383e8d754ef5ee" + }, + "price": 3900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میت ژامبون", + "description": "ژامبون گوشت،پنیر گودا،زیتون،قارچ", + "short_description": "", + "category": { + "$oid": "64edb2bb59383e8d754ef59b" + }, + "index": 3, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T09:02:13.966Z" + }, + "updated_at": { + "$date": "2025-08-27T15:22:54.993Z" + }, + "__v": 0, + "image": "food_1733221914467.png" +}, +{ + "_id": { + "$oid": "64edb44259383e8d754ef5f8" + }, + "price": 4400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیده(مخصوص یامی)", + "description": ":گوشت چرخ شده با ژامبون گوشت و مرغ،فلفل دلمه،فلفل هالوپینو،قارچ", + "short_description": "", + "category": { + "$oid": "64edb2bb59383e8d754ef59b" + }, + "index": 4, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T09:02:58.924Z" + }, + "updated_at": { + "$date": "2025-08-27T15:21:08.415Z" + }, + "__v": 0, + "image": "food_1699784972822.png" +}, +{ + "_id": { + "$oid": "64edb46a59383e8d754ef603" + }, + "price": 4400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن پستو", + "description": "مرغ مزه دار شده،قارچ،پنیر گودا،سس پستو", + "short_description": "", + "category": { + "$oid": "64edb2bb59383e8d754ef59b" + }, + "index": 5, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T09:03:38.895Z" + }, + "updated_at": { + "$date": "2025-08-27T15:20:10.803Z" + }, + "__v": 0, + "image": "food_1699785036611.png" +}, +{ + "_id": { + "$oid": "64edb4aa59383e8d754ef617" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد طبیعی", + "description": "", + "short_description": "", + "category": { + "$oid": "64edb2e659383e8d754ef5a4" + }, + "index": 0, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T09:04:42.366Z" + }, + "updated_at": { + "$date": "2025-04-05T16:22:48.669Z" + }, + "__v": 0, + "image": "food_1733222964994.png" +}, +{ + "_id": { + "$oid": "64edb54859383e8d754ef621" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو طبیعی", + "description": "", + "short_description": "", + "category": { + "$oid": "64edb2e659383e8d754ef5a4" + }, + "index": 0, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T09:07:20.038Z" + }, + "updated_at": { + "$date": "2025-04-05T16:22:36.779Z" + }, + "__v": 0, + "image": "food_1733222984965.png" +}, +{ + "_id": { + "$oid": "64edb5e059383e8d754ef651" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دلستر قوطی", + "description": "", + "short_description": "", + "category": { + "$oid": "64edb2e659383e8d754ef5a4" + }, + "index": 0, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T09:09:52.347Z" + }, + "updated_at": { + "$date": "2025-08-27T15:19:29.163Z" + }, + "__v": 0, + "image": "food_1733223033671.png" +}, +{ + "_id": { + "$oid": "64edb61e59383e8d754ef669" + }, + "price": 430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوشابه قوطی", + "description": "", + "short_description": "", + "category": { + "$oid": "64edb2e659383e8d754ef5a4" + }, + "index": 0, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T09:10:54.038Z" + }, + "updated_at": { + "$date": "2025-08-27T15:17:08.419Z" + }, + "__v": 0, + "image": "food_1733223011213.png" +}, +{ + "_id": { + "$oid": "64edb64259383e8d754ef673" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دلستر خانواده", + "description": "", + "short_description": "", + "category": { + "$oid": "64edb2e659383e8d754ef5a4" + }, + "index": 0, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T09:11:30.950Z" + }, + "updated_at": { + "$date": "2025-08-27T15:18:23.102Z" + }, + "__v": 0, + "image": "food_1733223060511.png" +}, +{ + "_id": { + "$oid": "64edb66e59383e8d754ef67e" + }, + "price": 120000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آب معدنی", + "description": "", + "short_description": "", + "category": { + "$oid": "64edb2e659383e8d754ef5a4" + }, + "index": 0, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-08-29T09:12:14.704Z" + }, + "updated_at": { + "$date": "2025-08-27T15:15:51.003Z" + }, + "__v": 0, + "image": "food_1733223199180.png" +}, +{ + "_id": { + "$oid": "64f4400059383e8d754f7164" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847df59383e8d754e91cf" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T08:12:48.440Z" + }, + "updated_at": { + "$date": "2023-11-20T19:04:16.212Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f4402d59383e8d754f716e" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک اورئو", + "description": "", + "short_description": "", + "category": { + "$oid": "64e847df59383e8d754e91cf" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T08:13:33.194Z" + }, + "updated_at": { + "$date": "2023-11-20T19:03:58.410Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f445cc59383e8d754f71ff" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "افوگاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "64e845ce59383e8d754e9185" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T08:37:32.728Z" + }, + "updated_at": { + "$date": "2024-05-16T18:27:30.286Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f446b559383e8d754f723c" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای دمی با قوری", + "description": "", + "short_description": "", + "category": { + "$oid": "64e846b359383e8d754e91b1" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T08:41:25.574Z" + }, + "updated_at": { + "$date": "2024-05-16T18:45:21.843Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f449cf59383e8d754f7332" + }, + "price": 720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنه سوییسی ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8488859383e8d754e9202" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T08:54:39.019Z" + }, + "updated_at": { + "$date": "2024-05-30T13:21:00.398Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f449ff59383e8d754f7341" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نان توییست", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8488859383e8d754e9202" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T08:55:27.918Z" + }, + "updated_at": { + "$date": "2023-11-20T19:01:20.287Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f44a4859383e8d754f7363" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کرافین", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8488859383e8d754e9202" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T08:56:40.333Z" + }, + "updated_at": { + "$date": "2024-05-30T11:42:31.332Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f44afa59383e8d754f7390" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تارت کروسان", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8488859383e8d754e9202" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T08:59:38.385Z" + }, + "updated_at": { + "$date": "2024-05-30T11:43:10.368Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f44b1b59383e8d754f73aa" + }, + "price": 720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نان نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "64e8488859383e8d754e9202" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T09:00:11.825Z" + }, + "updated_at": { + "$date": "2024-05-30T11:57:43.501Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f44bf059383e8d754f7414" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دسر انبه", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T09:03:44.056Z" + }, + "updated_at": { + "$date": "2024-05-30T12:01:18.393Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f44c0859383e8d754f741e" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تیرامیسو", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T09:04:08.503Z" + }, + "updated_at": { + "$date": "2024-05-30T11:59:31.926Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f44c6459383e8d754f7454" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تارت تتن", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T09:05:40.531Z" + }, + "updated_at": { + "$date": "2024-05-30T12:02:23.862Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f44c9659383e8d754f746e" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میلفوی", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T09:06:30.423Z" + }, + "updated_at": { + "$date": "2024-05-30T12:11:59.477Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f44f7f59383e8d754f7507" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک چوکوبری", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T09:18:55.498Z" + }, + "updated_at": { + "$date": "2024-05-30T12:03:12.487Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f4872959383e8d754f7b10" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نیمرو", + "description": "", + "short_description": "", + "category": { + "$oid": "64f486f059383e8d754f7b03" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T13:16:25.105Z" + }, + "updated_at": { + "$date": "2023-09-03T13:16:25.105Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f4874559383e8d754f7b1a" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "املت فرانسوی", + "description": "", + "short_description": "", + "category": { + "$oid": "64f486f059383e8d754f7b03" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T13:16:53.172Z" + }, + "updated_at": { + "$date": "2023-09-03T13:16:53.172Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f4878959383e8d754f7b24" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیوب تست و موز کاراملی", + "description": "", + "short_description": "", + "category": { + "$oid": "64f486f059383e8d754f7b03" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T13:18:01.376Z" + }, + "updated_at": { + "$date": "2023-09-03T13:18:01.376Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f487b059383e8d754f7b31" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استافد کروسان", + "description": "", + "short_description": "", + "category": { + "$oid": "64f486f059383e8d754f7b03" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T13:18:40.546Z" + }, + "updated_at": { + "$date": "2023-09-03T13:18:40.546Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "64f487da59383e8d754f7b3b" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنکیک المانی با کارامل نمکی", + "description": "", + "short_description": "", + "category": { + "$oid": "64f486f059383e8d754f7b03" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-09-03T13:19:22.599Z" + }, + "updated_at": { + "$date": "2023-09-03T13:19:22.599Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "650035dc59383e8d7550446c" + }, + "price": 2400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیاز سوخاری .. onion rings ", + "description": "10 عدد پیاز سوخاری / سس مخصوص..fried onion/special sauce ", + "short_description": "", + "category": { + "$oid": "61ac607926d2e0e4fbd9b465" + }, + "index": 2, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-09-12T09:56:44.749Z" + }, + "updated_at": { + "$date": "2025-12-04T11:56:44.903Z" + }, + "__v": 0, + "image": "food_1715934447089.png" +}, +{ + "_id": { + "$oid": "6501931b59383e8d75505d8d" + }, + "price": 2770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی با دیپ چدار و بیکن(new)", + "description": "سیب زمینی وجز ، سس چدار، بیکن، پولبیبر، رد اویل، میکرو گرین", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 8, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2023-09-13T10:46:51.129Z" + }, + "updated_at": { + "$date": "2025-12-25T12:33:04.599Z" + }, + "__v": 0, + "image": "food_1728330958600.png" +}, +{ + "_id": { + "$oid": "650c0e0159383e8d75510585" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "اسپرسو، شیر داغ", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 0, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "image": "food_1695288832011.png", + "created_at": { + "$date": "2023-09-21T09:33:53.631Z" + }, + "updated_at": { + "$date": "2025-01-12T19:06:45.988Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "650c0f0d59383e8d755105ec" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو ", + "description": "اسپرسو، شیر فوم دار", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 0, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "image": "food_1695289099887.png", + "created_at": { + "$date": "2023-09-21T09:38:21.327Z" + }, + "updated_at": { + "$date": "2025-01-12T19:06:17.144Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6513f1c959383e8d7551861d" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته سرد", + "description": "اسپرسو، شیر، یخ", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 12, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "image": "food_1695805895784.png", + "created_at": { + "$date": "2023-09-27T09:11:37.183Z" + }, + "updated_at": { + "$date": "2025-01-12T19:05:42.104Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6513f2c159383e8d75518639" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا سرد", + "description": "چای ماسالا، شیر، یخ", + "short_description": "", + "category": { + "$oid": "6783ffa2a4463c0057e4a32b" + }, + "index": 13, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "image": "food_1695806144076.png", + "created_at": { + "$date": "2023-09-27T09:15:45.297Z" + }, + "updated_at": { + "$date": "2025-01-12T19:05:15.679Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6513f99159383e8d7551872d" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کافی ژلاتو", + "description": "اسپرسو، سه اسکوپ بستنی، سس شکلات یا کارامل", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 14, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "image": "food_1695807888134.png", + "created_at": { + "$date": "2023-09-27T09:44:49.901Z" + }, + "updated_at": { + "$date": "2025-01-12T19:01:35.757Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6513fa6d59383e8d75518737" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپاچیلو", + "description": "شیر شیک شده،اسپرسو، بستنی، یخ", + "short_description": "", + "category": { + "$oid": "6783ffeea4463c0057e4a367" + }, + "index": 1, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "image": "food_1695808108259.png", + "created_at": { + "$date": "2023-09-27T09:48:29.532Z" + }, + "updated_at": { + "$date": "2025-01-12T19:31:21.166Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6513fcbd59383e8d755187b3" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل کاپاچیلو سرد", + "description": "شیر شیک شده،اسپرسو، بستنی، یخ، کارامل", + "short_description": "", + "category": { + "$oid": "6783ffeea4463c0057e4a367" + }, + "index": 2, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "image": "food_1695808700457.png", + "created_at": { + "$date": "2023-09-27T09:58:21.786Z" + }, + "updated_at": { + "$date": "2025-01-12T19:32:30.403Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6513fdaf59383e8d755187ea" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکاچیلو ", + "description": "شیر شیک شده،اسپرسو، شکلات، بستنی، یخ", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 17, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2023-09-27T10:02:23.261Z" + }, + "updated_at": { + "$date": "2025-01-12T18:59:18.965Z" + }, + "__v": 0, + "image": "food_1695915741217.png" +}, +{ + "_id": { + "$oid": "6519740159383e8d7551dfd0" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن آلفردو", + "description": "پنه ، فیله مرغ ، قارچ ، سس آلفردو ، پیازچه ، پارمژان", + "short_description": "", + "category": { + "$oid": "6519726759383e8d7551df83" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:28:33.011Z" + }, + "updated_at": { + "$date": "2025-03-31T13:45:23.025Z" + }, + "__v": 0, + "image": "food_1700505401539.png" +}, +{ + "_id": { + "$oid": "6519744459383e8d7551dfe0" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلاسیک فرایز", + "description": "سیب زمینی سرخ شده ، ادویه سیب زمینی،شات سس کچاپ", + "short_description": "", + "category": { + "$oid": "651971c059383e8d7551df47" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:29:40.961Z" + }, + "updated_at": { + "$date": "2025-04-01T12:46:38.758Z" + }, + "__v": 0, + "image": "food_1697470183400.png" +}, +{ + "_id": { + "$oid": "6519748a59383e8d7551dff0" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وگاس فرایز", + "description": "سیب زمینی سرخ شده ، دیپ گودا ، بیکن گوساله ، ادویه مخصوص ، جعفری،شات سس کچاپ", + "short_description": "", + "category": { + "$oid": "651971c059383e8d7551df47" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:30:50.077Z" + }, + "updated_at": { + "$date": "2025-04-01T12:47:07.736Z" + }, + "__v": 0, + "image": "food_1697470153246.png" +}, +{ + "_id": { + "$oid": "651974b959383e8d7551dffa" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت فرایز", + "description": "سیب زمینی سرخ شده ، سس قارچ ،ادویه مخصوص ، جعفری", + "short_description": "", + "category": { + "$oid": "651971c059383e8d7551df47" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:31:37.135Z" + }, + "updated_at": { + "$date": "2025-04-01T12:47:39.480Z" + }, + "__v": 0, + "image": "food_1697470087842.png" +}, +{ + "_id": { + "$oid": "651977a059383e8d7551e007" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز فرایز", + "description": "سیب زمینی سرخ شده ، بیکن گوساله ، قارچ، پنیرپیتزا ،ادوی مخصوص جعفری ،سس کچاپ", + "short_description": "", + "category": { + "$oid": "651971c059383e8d7551df47" + }, + "index": 4, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:44:00.650Z" + }, + "updated_at": { + "$date": "2025-04-01T12:48:06.082Z" + }, + "__v": 0, + "image": "food_1697470068926.png" +}, +{ + "_id": { + "$oid": "651977fd59383e8d7551e011" + }, + "price": 2850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "داینامیت شریمپ", + "description": "میگوهای سوخاری شده جا افتاده در سس داینامیت شرقی به همراه سالاد کلم ،رایس نودل", + "short_description": "", + "category": { + "$oid": "651971c059383e8d7551df47" + }, + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:45:33.576Z" + }, + "updated_at": { + "$date": "2025-04-01T12:48:28.621Z" + }, + "__v": 0, + "image": "food_1700064997776.png" +}, +{ + "_id": { + "$oid": "6519788459383e8d7551e01b" + }, + "price": 2400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورینتال چیکن", + "description": "تکه های فیله مرغ سوخاری شده به همراه سیب زمینی ساته شده با سیر و ادویه،رایس نودل،سالاد کلم سس سیر و کچاپ", + "short_description": "", + "category": { + "$oid": "651971c059383e8d7551df47" + }, + "index": 6, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:47:48.832Z" + }, + "updated_at": { + "$date": "2025-04-01T12:48:55.354Z" + }, + "__v": 0, + "image": "food_1697470045975.png" +}, +{ + "_id": { + "$oid": "6519791659383e8d7551e03f" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوپ روز", + "description": "", + "short_description": "", + "category": { + "$oid": "651971c059383e8d7551df47" + }, + "index": 7, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:50:14.758Z" + }, + "updated_at": { + "$date": "2025-04-01T12:49:15.360Z" + }, + "__v": 0, + "image": "food_1700503529696.png" +}, +{ + "_id": { + "$oid": "65197a2e59383e8d7551e062" + }, + "price": 4950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کته استیک", + "description": "220 گرم فیله گوساله گریل شده ، برنج اعلاء ایرانی ، گوجه ساته شده ، دورچین", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:54:54.883Z" + }, + "updated_at": { + "$date": "2024-10-10T17:19:01.339Z" + }, + "__v": 0, + "image": "food_1705685449063.png" +}, +{ + "_id": { + "$oid": "65197acf59383e8d7551e097" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جوجه کباب زعفرانی ", + "description": "برنج اعلاء ایرانی ،۲ عدد سیخ چوبی فیله مرغ طعم دار شده با زعفران ، دورچین ،", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:57:35.942Z" + }, + "updated_at": { + "$date": "2025-03-31T14:51:58.520Z" + }, + "__v": 0, + "image": "food_1700418953476.png" +}, +{ + "_id": { + "$oid": "65197af759383e8d7551e0a7" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ته چین مرغ شیرازی", + "description": "ته چین مرغ ، بادمجان دودی ، دورچین ", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 4, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:58:15.575Z" + }, + "updated_at": { + "$date": "2025-03-31T14:51:07.220Z" + }, + "__v": 0, + "image": "food_1700418905745.png" +}, +{ + "_id": { + "$oid": "65197b3159383e8d7551e0b1" + }, + "price": 4100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ته چین گوشت ", + "description": "ته چین به همراه گوشت فرآوری شده ، بادمجان دودی ، دورچین", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T13:59:13.075Z" + }, + "updated_at": { + "$date": "2025-03-31T14:50:41.164Z" + }, + "__v": 0, + "image": "food_1700418859025.png" +}, +{ + "_id": { + "$oid": "65197c5659383e8d7551e0e0" + }, + "price": 3700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فسنجان عیانی", + "description": "ران مرغ جا افتاده در خورشت فسنجان ، مغز گردو ، کته زعفرانی ، دورچین", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 7, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:04:06.811Z" + }, + "updated_at": { + "$date": "2025-01-07T14:38:35.127Z" + }, + "__v": 0, + "image": "food_1700418787599.png" +}, +{ + "_id": { + "$oid": "65197cff59383e8d7551e0f0" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک قزل آلا", + "description": "ماهی قزل آلا سرخ شده ، بروکلی و هویج ساته شده ، سس صدف ، سس سیر، سالسا لبو و آناناس زنجبیلی ، خرما مغز دار", + "short_description": "", + "category": { + "$oid": "6519733c59383e8d7551df9e" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:06:55.819Z" + }, + "updated_at": { + "$date": "2025-04-01T12:55:12.669Z" + }, + "__v": 0, + "image": "food_1700506766244.png" +}, +{ + "_id": { + "$oid": "65197d5e59383e8d7551e0fa" + }, + "price": 6750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراید شریمپ", + "description": "شاه میگو سوخاری شده ، مش پوتیتو ، سبزیجات ساته شده با سس صدف ، سس سیر ، سالسا آناناس زنجبیلی ، خرما مغزدار", + "short_description": "", + "category": { + "$oid": "6519733c59383e8d7551df9e" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:08:30.093Z" + }, + "updated_at": { + "$date": "2025-04-01T12:54:50.901Z" + }, + "__v": 0, + "image": "food_1711381169606.png" +}, +{ + "_id": { + "$oid": "65197db859383e8d7551e122" + }, + "price": 3700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیف آلفردو ", + "description": "پنه ، فیله گوساله ، قارچ ، سس آلفردو ، پیازچه ، پارمژان", + "short_description": "", + "category": { + "$oid": "6519726759383e8d7551df83" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:10:00.250Z" + }, + "updated_at": { + "$date": "2025-03-31T13:46:24.592Z" + }, + "__v": 0, + "image": "food_1709920205103.png" +}, +{ + "_id": { + "$oid": "65197e9359383e8d7551e139" + }, + "price": 3150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فتوچینی پستو", + "description": "فتوچینی ، فیله مرغ گریل شده، قارچ ، سس پستو جنوا ،گردو ، پارمژان", + "short_description": "", + "category": { + "$oid": "6519726759383e8d7551df83" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:13:39.840Z" + }, + "updated_at": { + "$date": "2025-03-31T13:46:02.383Z" + }, + "__v": 0, + "image": "food_1700505314228.png" +}, +{ + "_id": { + "$oid": "65197f3459383e8d7551e14c" + }, + "price": 3900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اوشن اسپایسی", + "description": "فتوچینی ، میگو سوخاری ، سس پیری پیری، بروکلی ، پارمژان", + "short_description": "", + "category": { + "$oid": "6519726759383e8d7551df83" + }, + "index": 4, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:16:20.597Z" + }, + "updated_at": { + "$date": "2025-03-31T13:44:51.139Z" + }, + "__v": 0, + "image": "food_1711381126223.png" +}, +{ + "_id": { + "$oid": "65197f9759383e8d7551e156" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پوتانسکا", + "description": "پنه ، بیکن گوساله تفت داده شده با کره ، سس آلفردو ، قارچ ، پیازچه ، پنیر هالومی ، پارمژان", + "short_description": "", + "category": { + "$oid": "6519726759383e8d7551df83" + }, + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:17:59.023Z" + }, + "updated_at": { + "$date": "2025-03-31T13:44:19.727Z" + }, + "__v": 0, + "image": "food_1711381107855.png" +}, +{ + "_id": { + "$oid": "65197fc659383e8d7551e160" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لازانیا ", + "description": "لازانیا ،به انتخاب شما(بیکن. گوشت چرخ کرده.مرغ) سس خامه،سس مارینارا،قارچ ، پنیر پیتزا", + "short_description": "", + "category": { + "$oid": "6519726759383e8d7551df83" + }, + "index": 6, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:18:46.532Z" + }, + "updated_at": { + "$date": "2025-03-31T13:43:56.435Z" + }, + "__v": 0, + "image": "food_1700065921952.png" +}, +{ + "_id": { + "$oid": "6519804c59383e8d7551e170" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلاسیک برگر", + "description": "130 گرم گوشت مزه دار شده، کاهو فرانسه، گوجه، خیارشور، سس دست ساز BBQ،سس فرانسوی،سیب زمینی تنوری،شات سس کچاپ", + "short_description": "", + "category": { + "$oid": "6519723359383e8d7551df6b" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:21:00.246Z" + }, + "updated_at": { + "$date": "2025-04-01T12:52:23.824Z" + }, + "__v": 0, + "image": "food_1700064676261.png" +}, +{ + "_id": { + "$oid": "6519806359383e8d7551e17a" + }, + "price": 4050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هاوایی برگر", + "description": "130 گرم گوشت مزه دار شده،ورق طلا، بیکن کریسپی، آناناس گریل شده، کاهو فرانسه، دیپ آووکادو، گوجه،خیارشور،سیب زمینی تنوری", + "short_description": "", + "category": { + "$oid": "6519723359383e8d7551df6b" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:21:23.607Z" + }, + "updated_at": { + "$date": "2025-06-28T17:20:01.190Z" + }, + "__v": 0, + "image": "food_1700064706052.png" +}, +{ + "_id": { + "$oid": "6519807e59383e8d7551e184" + }, + "price": 3950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هانی بیف", + "description": "130 گرم گوشت مزه دار شده، دیپ گودا، بیکن کریسپی، پیاز کاراملایز، کاهو فرانسه، گوجه،خیار شور، پنیر هالومی،سیب زمینی تنوری،شات سس کچاپ", + "short_description": "", + "category": { + "$oid": "6519723359383e8d7551df6b" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:21:50.007Z" + }, + "updated_at": { + "$date": "2025-04-01T12:51:29.885Z" + }, + "__v": 0, + "image": "food_1700579878511.png" +}, +{ + "_id": { + "$oid": "6519809359383e8d7551e18e" + }, + "price": 4050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماریا برگر", + "description": "130 گرم گوشت مزه دار شده ،شنسل مرغ سوخاری ،دیپ گودا،سس فرانسوی، کاهو فرانسه، گوجه،خیارشور، سس دست ساز BBQ،سیب زمینی تنوری", + "short_description": "", + "category": { + "$oid": "6519723359383e8d7551df6b" + }, + "index": 4, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:22:11.246Z" + }, + "updated_at": { + "$date": "2025-06-28T17:18:54.996Z" + }, + "__v": 0, + "image": "food_1700579834554.png" +}, +{ + "_id": { + "$oid": "651980aa59383e8d7551e19e" + }, + "price": 3350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلک اند بلو", + "description": "130 گرم گوشت مزه دار شده، دریایی از پنیر بلوچیز، کاهو فرانسه، گوجه،خیارشور، قارچ بلانچ شده،سیب زمینی تنوری،شات سس کچاپ", + "short_description": "", + "category": { + "$oid": "6519723359383e8d7551df6b" + }, + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:22:34.965Z" + }, + "updated_at": { + "$date": "2025-06-28T17:18:28.502Z" + }, + "__v": 0, + "image": "food_1711380975664.png" +}, +{ + "_id": { + "$oid": "6519817c59383e8d7551e1ae" + }, + "price": 3350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراید چیکن", + "description": "3 عدد فیله سوخاری، دیپ گودا، سالاد کلم،سس فرانسوی،سیب زمینی تنوری،شات سس کچاپ", + "short_description": "", + "category": { + "$oid": "6519723359383e8d7551df6b" + }, + "index": 6, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:26:04.987Z" + }, + "updated_at": { + "$date": "2025-06-28T17:18:08.682Z" + }, + "__v": 0, + "image": "food_1700579747065.png" +}, +{ + "_id": { + "$oid": "651981b059383e8d7551e1cb" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس دست ساز BBQ", + "description": "", + "short_description": "", + "category": { + "$oid": "6519819c59383e8d7551e1be" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:26:56.839Z" + }, + "updated_at": { + "$date": "2025-01-07T14:44:29.099Z" + }, + "__v": 0, + "image": "food_1711381413862.png" +}, +{ + "_id": { + "$oid": "651981c159383e8d7551e1d5" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دیپ گودا", + "description": "", + "short_description": "", + "category": { + "$oid": "6519819c59383e8d7551e1be" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:27:13.330Z" + }, + "updated_at": { + "$date": "2025-01-07T14:44:08.477Z" + }, + "__v": 0, + "image": "food_1711381392297.png" +}, +{ + "_id": { + "$oid": "651981eb59383e8d7551e1df" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس بلوچیز", + "description": "", + "short_description": "", + "category": { + "$oid": "6519819c59383e8d7551e1be" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:27:55.536Z" + }, + "updated_at": { + "$date": "2024-03-25T15:42:55.841Z" + }, + "__v": 0, + "image": "food_1711381375392.png" +}, +{ + "_id": { + "$oid": "6519820c59383e8d7551e1f3" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس آووکادو ", + "description": "", + "short_description": "", + "category": { + "$oid": "6519819c59383e8d7551e1be" + }, + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:28:28.356Z" + }, + "updated_at": { + "$date": "2024-03-25T18:53:19.786Z" + }, + "__v": 0, + "image": "food_1711392780130.png" +}, +{ + "_id": { + "$oid": "6519821c59383e8d7551e1fd" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس قارچ", + "description": "", + "short_description": "", + "category": { + "$oid": "6519819c59383e8d7551e1be" + }, + "index": 6, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:28:44.245Z" + }, + "updated_at": { + "$date": "2024-03-26T19:23:15.464Z" + }, + "__v": 0, + "image": "food_1711392409168.png" +}, +{ + "_id": { + "$oid": "6519827a59383e8d7551e21d" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار با مرغ گریل", + "description": "کاهو رسمی، گوجه گیلاسی، نان کراتان، فیله مرغ گریل شده، سس سزار لانکا، پارمژان", + "short_description": "", + "category": { + "$oid": "6519730759383e8d7551df92" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:30:18.405Z" + }, + "updated_at": { + "$date": "2025-03-31T14:46:58.680Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6519829159383e8d7551e22a" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار سوخاری", + "description": "کاهو رسمی، گوجه گیلاسی، نان کراتان، 2 عدد رول مرغ سوخاری پنیری، سس سزار لانکا، پارمژان", + "short_description": "", + "category": { + "$oid": "6519730759383e8d7551df92" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:30:41.518Z" + }, + "updated_at": { + "$date": "2025-03-31T14:44:45.242Z" + }, + "__v": 0, + "image": "food_1700064850761.png" +}, +{ + "_id": { + "$oid": "651982a659383e8d7551e234" + }, + "price": 3450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد لانکا", + "description": "کاهو رسمی، گردو کاراملی، بادام هندی،مویز، نان مغزدار، کرنبری،، پرک بادام، نعنا تازه،سس آنتراکت", + "short_description": "", + "category": { + "$oid": "6519730759383e8d7551df92" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:31:02.929Z" + }, + "updated_at": { + "$date": "2025-03-31T14:44:00.099Z" + }, + "__v": 0, + "image": "food_1709920706028.png" +}, +{ + "_id": { + "$oid": "651982c259383e8d7551e23e" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد هالومی بیکن", + "description": "کاهو رسمی، بیکن کریسپی، پنیر هالومی، نان ترتیلا، گوجه چری، کاپاریس،سس گرین", + "short_description": "", + "category": { + "$oid": "6519730759383e8d7551df92" + }, + "index": 4, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:31:30.231Z" + }, + "updated_at": { + "$date": "2025-03-31T14:44:19.675Z" + }, + "__v": 0, + "image": "food_1700064817754.png" +}, +{ + "_id": { + "$oid": "651982db59383e8d7551e248" + }, + "price": 2600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد آسیایی", + "description": "کاهو رسمی، کینوا، بروکلی، خیار، گوجه چری، نخود پخته شده، پیاز شارلوط، سس بالزامیک ،روغن زیتون فرابکر", + "short_description": "", + "category": { + "$oid": "6519730759383e8d7551df92" + }, + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:31:55.808Z" + }, + "updated_at": { + "$date": "2025-01-07T14:12:26.478Z" + }, + "__v": 0, + "image": "food_1700506184020.png" +}, +{ + "_id": { + "$oid": "651983ba59383e8d7551e27a" + }, + "price": 8650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استیک فیله مینیون", + "description": "250 گرم فیله گوساله گریل شده ، مش پوتیتو ، سبزیجات ساته شده با سس صدف,سس قارچ", + "short_description": "", + "category": { + "$oid": "6519724d59383e8d7551df74" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:35:38.429Z" + }, + "updated_at": { + "$date": "2025-06-28T17:17:36.372Z" + }, + "__v": 0, + "image": "food_1711381090415.png" +}, +{ + "_id": { + "$oid": "6519840d59383e8d7551e293" + }, + "price": 9500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استیک لانکا", + "description": "700 الی 850گرم ریبای استیک،ورق طلا،مش پوتیتو،سبزیجات ساته شده با سس صدف،سس قارچ(پخت مدیوم)", + "short_description": "", + "category": { + "$oid": "6519724d59383e8d7551df74" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:37:01.059Z" + }, + "updated_at": { + "$date": "2025-04-01T12:54:02.706Z" + }, + "__v": 0, + "image": "food_1709920062622.png" +}, +{ + "_id": { + "$oid": "6519844359383e8d7551e2a3" + }, + "price": 7450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لمب استیک ", + "description": "راسته گوسفندی گریل شده ، مش پوتیتو ، سبزیجات ساته شده با سس صدف،سس قارچ", + "short_description": "", + "category": { + "$oid": "6519724d59383e8d7551df74" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:37:55.608Z" + }, + "updated_at": { + "$date": "2025-04-01T12:53:41.778Z" + }, + "__v": 0, + "image": "food_1711381067217.png" +}, +{ + "_id": { + "$oid": "6519848e59383e8d7551e2ad" + }, + "price": 8100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سورف اند تورف", + "description": "250گرم فیله گوساله گریل شده ، 3عددشاه میگو سوخاری شده ، مش پوتیتو ، سبزیجات ساته شده با سس صدف ، سس ترخون", + "short_description": "", + "category": { + "$oid": "6519724d59383e8d7551df74" + }, + "index": 4, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:39:10.705Z" + }, + "updated_at": { + "$date": "2025-06-28T16:46:51.731Z" + }, + "__v": 0, + "image": "food_1711381042187.png" +}, +{ + "_id": { + "$oid": "651984d259383e8d7551e2bd" + }, + "price": 4150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن استیک", + "description": "شنسل مرغ گریل شده ، مش پوتیتو ، سبزیجات ساته شده با سس صدف ،سس قارچ", + "short_description": "", + "category": { + "$oid": "6519724d59383e8d7551df74" + }, + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:40:18.703Z" + }, + "updated_at": { + "$date": "2025-04-01T12:52:47.998Z" + }, + "__v": 0, + "image": "food_1711381020688.png" +}, +{ + "_id": { + "$oid": "6519866459383e8d7551e305" + }, + "price": 4600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دل کاپو", + "description": "سس سیر، پنیر پیتزا ، فیله گوساله طعم دار شده با سیر ، بیکن گوساله ، قارچ ، زیتون سیاه ، ارگانو،شات سس کچاپ", + "short_description": "", + "category": { + "$oid": "6519720759383e8d7551df62" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:47:00.115Z" + }, + "updated_at": { + "$date": "2025-06-28T16:46:16.835Z" + }, + "__v": 0, + "image": "food_1700504370110.png" +}, +{ + "_id": { + "$oid": "651986ab59383e8d7551e311" + }, + "price": 3900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن جنوا", + "description": "سس پستو جنوا ، پنیر پیتزا ، فیله مرغ ، قارچ ، دلمه رنگی ، زیتون سیاه ، ذرت ،ریحان،شات سس", + "short_description": "", + "category": { + "$oid": "6519720759383e8d7551df62" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:48:11.601Z" + }, + "updated_at": { + "$date": "2025-03-31T13:39:38.161Z" + }, + "__v": 0, + "image": "food_1700065708184.png" +}, +{ + "_id": { + "$oid": "651986ff59383e8d7551e321" + }, + "price": 4050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دیاوولا(پپرونی)", + "description": "سس بوفالو(HOT)، پنیر پیتزا ، پپرونی ، هالوپینو،شات سس کچاپ", + "short_description": "", + "category": { + "$oid": "6519720759383e8d7551df62" + }, + "index": 4, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:49:35.882Z" + }, + "updated_at": { + "$date": "2025-06-28T16:18:22.578Z" + }, + "__v": 0, + "image": "food_1705681791453.png" +}, +{ + "_id": { + "$oid": "651987a859383e8d7551e34d" + }, + "price": 4100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکاورده", + "description": "سس ناپولیتن ، پنیر پیتزا ، فیله گوساله طعم دار شده با سیر ، فیله مرغ ، قارچ ، دلمه رنگی ، زیتون سیاه،شات سس کچاپ", + "short_description": "", + "category": { + "$oid": "6519720759383e8d7551df62" + }, + "index": 6, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-01T14:52:24.071Z" + }, + "updated_at": { + "$date": "2025-06-28T16:17:57.030Z" + }, + "__v": 0, + "image": "food_1700065792298.png" +}, +{ + "_id": { + "$oid": "651d77c259383e8d75521da1" + }, + "price": 1560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد مرغ کاریCurry chicken salad", + "description": "سینه مرغ طمع دار شده-کاهو-سیب زمینی-جعفری-هویج سرخ شده-نان ساج ترکی-سس مخصوص", + "short_description": "", + "category": { + "$oid": "6398a0a482d7fc8d726a7f22" + }, + "index": 6, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696430012307.png", + "created_at": { + "$date": "2023-10-04T14:33:38.500Z" + }, + "updated_at": { + "$date": "2023-12-02T16:12:14.542Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651d79a659383e8d75521de4" + }, + "price": 1770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد گرین green salad", + "description": "کاهو-سبزیجات معطر-سویا-مغزیجات-زیتون-dried tomato-نان بلغور-سس میوه", + "short_description": "", + "category": { + "$oid": "6398a0a482d7fc8d726a7f22" + }, + "index": 8, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696430495660.png", + "created_at": { + "$date": "2023-10-04T14:41:42.035Z" + }, + "updated_at": { + "$date": "2023-12-02T16:24:57.747Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651d8cb259383e8d75522046" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز برگر", + "description": "گوشت گوساله-دیپ چدار-کاهو-پیاز-گوجه-خیارشور", + "short_description": "", + "category": { + "$oid": "651d815259383e8d75521f12" + }, + "index": 1, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696435374474.png", + "created_at": { + "$date": "2023-10-04T16:02:58.513Z" + }, + "updated_at": { + "$date": "2023-10-04T18:16:53.638Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651d8eb659383e8d755220ad" + }, + "price": 1530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن برگر ", + "description": "مرغ گریل -کاهو -پنیر -خیارشور -گوجه -سس مخصوص ", + "short_description": "", + "category": { + "$oid": "651d815259383e8d75521f12" + }, + "index": 3, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696435891017.png", + "created_at": { + "$date": "2023-10-04T16:11:34.170Z" + }, + "updated_at": { + "$date": "2023-10-04T16:11:34.170Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651d9c3559383e8d75522383" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 2, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696439347250.png", + "created_at": { + "$date": "2023-10-04T17:09:09.428Z" + }, + "updated_at": { + "$date": "2023-10-04T17:09:09.428Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651d9ee559383e8d75522481" + }, + "price": 590000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مینت چاکلت", + "description": "شکلات نعنایی+شیر", + "short_description": "", + "category": { + "$oid": "639887a782d7fc8d726a7b2d" + }, + "index": 9, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696440035125.png", + "created_at": { + "$date": "2023-10-04T17:20:37.480Z" + }, + "updated_at": { + "$date": "2023-10-04T17:20:37.480Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651da99059383e8d755226f0" + }, + "price": 520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز و نعنا", + "description": "", + "short_description": "", + "category": { + "$oid": "6456a24198ff3c741441c6ef" + }, + "index": 5, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696442765180.png", + "created_at": { + "$date": "2023-10-04T18:06:08.992Z" + }, + "updated_at": { + "$date": "2023-10-04T18:06:08.992Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651daa2e59383e8d75522733" + }, + "price": 490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش کوهی", + "description": "", + "short_description": "", + "category": { + "$oid": "6456a24198ff3c741441c6ef" + }, + "index": 6, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696442921555.png", + "created_at": { + "$date": "2023-10-04T18:08:46.061Z" + }, + "updated_at": { + "$date": "2023-10-04T18:08:46.061Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651db23d59383e8d75522963" + }, + "price": 890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک منگو دریم ", + "description": "بستنی وانیل-آب انبه-دارچین-موز", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 6, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696444988115.png", + "created_at": { + "$date": "2023-10-04T18:43:09.695Z" + }, + "updated_at": { + "$date": "2023-10-04T18:43:09.695Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651db45c59383e8d7552299a" + }, + "price": 890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز شیک ", + "description": "بستنی وانیل -پنیر ماسکارپونه-لیدی فینگر ", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 7, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696445529672.png", + "created_at": { + "$date": "2023-10-04T18:52:12.235Z" + }, + "updated_at": { + "$date": "2023-11-30T12:48:03.070Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651db59c59383e8d755229c9" + }, + "price": 910000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک اورئو ", + "description": "بستنی وانیل - بیسکویئت اورئو ", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 8, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696445850261.png", + "created_at": { + "$date": "2023-10-04T18:57:32.582Z" + }, + "updated_at": { + "$date": "2023-11-30T12:47:19.160Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651dba0759383e8d75522a37" + }, + "price": 710000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاوندر", + "description": "اسطوخودوس-پنیرک-انبه-آب لیمو", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 3, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696446980423.png", + "created_at": { + "$date": "2023-10-04T19:16:23.773Z" + }, + "updated_at": { + "$date": "2023-10-04T19:16:23.773Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651dbb5459383e8d75522a5c" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وینو", + "description": "آلبالو -چای ترش - توت فرنگی -فلفل", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 4, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696447312768.png", + "created_at": { + "$date": "2023-10-04T19:21:56.231Z" + }, + "updated_at": { + "$date": "2023-10-04T19:21:56.231Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651dbcb559383e8d75522aa6" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اس تی بلک", + "description": "چای سیاه سرد دم - توت فرنگی-سودا", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 13, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696447665612.png", + "created_at": { + "$date": "2023-10-04T19:27:49.282Z" + }, + "updated_at": { + "$date": "2023-10-04T19:28:20.769Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651dbd3959383e8d75522abd" + }, + "price": 630000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیزی بلک", + "description": "چای سیاه سرد دم -لیمو -سودا", + "short_description": "", + "category": { + "$oid": "62dd42c0faacb066e12063cc" + }, + "index": 14, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696447800091.png", + "created_at": { + "$date": "2023-10-04T19:30:01.587Z" + }, + "updated_at": { + "$date": "2023-10-04T19:30:01.587Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651dbfad59383e8d75522b60" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "love", + "description": "", + "short_description": "", + "category": { + "$oid": "651dbf1359383e8d75522b44" + }, + "index": 1, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696448428513.png", + "created_at": { + "$date": "2023-10-04T19:40:29.503Z" + }, + "updated_at": { + "$date": "2023-10-04T19:40:29.503Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651dbfef59383e8d75522b73" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیدی کیلر", + "description": "", + "short_description": "", + "category": { + "$oid": "651dbf1359383e8d75522b44" + }, + "index": 2, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696448494533.png", + "created_at": { + "$date": "2023-10-04T19:41:35.562Z" + }, + "updated_at": { + "$date": "2023-10-04T19:41:35.562Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651dc03859383e8d75522b9a" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آدامس دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "651dbf1359383e8d75522b44" + }, + "index": 3, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696448567661.png", + "created_at": { + "$date": "2023-10-04T19:42:48.675Z" + }, + "updated_at": { + "$date": "2023-10-04T19:42:48.675Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651dc05859383e8d75522ba4" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب یخ", + "description": "", + "short_description": "", + "category": { + "$oid": "651dbf1359383e8d75522b44" + }, + "index": 4, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696448599521.png", + "created_at": { + "$date": "2023-10-04T19:43:20.513Z" + }, + "updated_at": { + "$date": "2023-10-04T19:43:20.513Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651dc07559383e8d75522bb1" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آلو یخ", + "description": "", + "short_description": "", + "category": { + "$oid": "651dbf1359383e8d75522b44" + }, + "index": 5, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696448628354.png", + "created_at": { + "$date": "2023-10-04T19:43:49.450Z" + }, + "updated_at": { + "$date": "2023-10-04T19:48:38.229Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651dc18159383e8d75522bef" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هندوانه نعنا", + "description": "", + "short_description": "", + "category": { + "$oid": "651dbf1359383e8d75522b44" + }, + "index": 6, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1696448896830.png", + "created_at": { + "$date": "2023-10-04T19:48:17.829Z" + }, + "updated_at": { + "$date": "2023-10-04T19:48:17.829Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "651ecac659383e8d75523694" + }, + "price": 3100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مارگریتا", + "description": "سس مارینارا،پنیر توپی موزارلا،گوجه اسلایس ،ریحان،پارمژان", + "short_description": "", + "category": { + "$oid": "6519720759383e8d7551df62" + }, + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T14:40:06.477Z" + }, + "updated_at": { + "$date": "2025-06-28T16:09:56.335Z" + }, + "__v": 0, + "image": "food_1728639153521.png" +}, +{ + "_id": { + "$oid": "651ee04b59383e8d75523c6a" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ", + "description": "", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:11:55.064Z" + }, + "updated_at": { + "$date": "2025-01-07T13:13:24.599Z" + }, + "__v": 0, + "image": "food_1697923414665.png" +}, +{ + "_id": { + "$oid": "651ee0e059383e8d75523cae" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو70/30", + "description": "", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:14:24.836Z" + }, + "updated_at": { + "$date": "2025-06-28T15:52:17.717Z" + }, + "__v": 0, + "image": "food_1697923462054.png" +}, +{ + "_id": { + "$oid": "651ee12e59383e8d75523cf0" + }, + "price": 950000, + "stock": 1, + "static_discount": 1, + "active": true, + "name": "امریکانو", + "description": "اسپرسو+آب جوش", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:15:42.923Z" + }, + "updated_at": { + "$date": "2025-06-28T16:17:14.562Z" + }, + "__v": 0, + "image": "food_1697923497768.png" +}, +{ + "_id": { + "$oid": "651ee22c59383e8d75523d4f" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو", + "description": "اسپرسو+بستنی ", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 12, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:19:56.127Z" + }, + "updated_at": { + "$date": "2025-06-28T16:15:57.809Z" + }, + "__v": 0, + "image": "food_1697997795070.png" +}, +{ + "_id": { + "$oid": "651ee59c59383e8d75523ea8" + }, + "price": 1280000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "اسپرسو+190میل شیر", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:34:36.373Z" + }, + "updated_at": { + "$date": "2025-06-28T16:15:26.070Z" + }, + "__v": 0, + "image": "food_1697923705360.png" +}, +{ + "_id": { + "$oid": "651ee5c459383e8d75523ecd" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "اسپرسو+230 میل شیر", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 6, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:35:16.312Z" + }, + "updated_at": { + "$date": "2025-06-28T16:15:06.531Z" + }, + "__v": 0, + "image": "food_1697923748826.png" +}, +{ + "_id": { + "$oid": "651ee6dc59383e8d75523f66" + }, + "price": 1520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "اسپرسو+220میل شیر+شکلات", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 11, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:39:56.319Z" + }, + "updated_at": { + "$date": "2025-06-28T16:14:03.221Z" + }, + "__v": 0, + "image": "food_1697923777904.png" +}, +{ + "_id": { + "$oid": "651eeaea59383e8d755240f7" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماست موسیر", + "description": "", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 6, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:57:14.205Z" + }, + "updated_at": { + "$date": "2025-03-31T14:41:57.136Z" + }, + "__v": 0, + "image": "food_1700503768714.png" +}, +{ + "_id": { + "$oid": "651eeb2959383e8d7552412f" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بورانی بادمجان", + "description": "", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 8, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:58:17.685Z" + }, + "updated_at": { + "$date": "2025-03-31T14:41:42.006Z" + }, + "__v": 0, + "image": "food_1700503897293.png" +}, +{ + "_id": { + "$oid": "651eeb5259383e8d7552415a" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماست و خیار", + "description": "", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 9, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:58:58.819Z" + }, + "updated_at": { + "$date": "2025-03-31T14:41:22.073Z" + }, + "__v": 0, + "image": "food_1700503854385.png" +}, +{ + "_id": { + "$oid": "651eeb7259383e8d75524170" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زیتون پرورده", + "description": "", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 10, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T16:59:30.098Z" + }, + "updated_at": { + "$date": "2025-03-31T14:40:49.031Z" + }, + "__v": 0, + "image": "food_1700503801658.png" +}, +{ + "_id": { + "$oid": "651eebd259383e8d7552418f" + }, + "price": 1380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "651ee76759383e8d75523f8b" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:01:06.682Z" + }, + "updated_at": { + "$date": "2025-06-28T16:13:32.858Z" + }, + "__v": 0, + "image": "food_1699531171893.png" +}, +{ + "_id": { + "$oid": "651eebfa59383e8d755241a8" + }, + "price": 1420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "651ee76759383e8d75523f8b" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:01:46.155Z" + }, + "updated_at": { + "$date": "2025-06-28T16:11:50.241Z" + }, + "__v": 0, + "image": "food_1699531024668.png" +}, +{ + "_id": { + "$oid": "651eec1b59383e8d755241bb" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "651ee76759383e8d75523f8b" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:02:19.546Z" + }, + "updated_at": { + "$date": "2025-06-28T16:11:03.472Z" + }, + "__v": 0, + "image": "food_1699530957021.png" +}, +{ + "_id": { + "$oid": "651eecc059383e8d755241f7" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات لوتوس", + "description": "شیر+کره لوتوس", + "short_description": "", + "category": { + "$oid": "651ee76759383e8d75523f8b" + }, + "index": 4, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:05:04.906Z" + }, + "updated_at": { + "$date": "2025-06-28T16:10:46.455Z" + }, + "__v": 0, + "image": "food_1697997963811.png" +}, +{ + "_id": { + "$oid": "651eecf259383e8d75524212" + }, + "price": 980000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر کارامل دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "651ee76759383e8d75523f8b" + }, + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:05:54.031Z" + }, + "updated_at": { + "$date": "2025-06-28T16:09:11.159Z" + }, + "__v": 0, + "image": "food_1697997918424.png" +}, +{ + "_id": { + "$oid": "651eee1159383e8d75524276" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "651eedbd59383e8d7552425d" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:10:41.848Z" + }, + "updated_at": { + "$date": "2025-06-28T16:08:48.967Z" + }, + "__v": 0, + "image": "food_1700505148529.png" +}, +{ + "_id": { + "$oid": "651eee3b59383e8d7552428f" + }, + "price": 1380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "651eedbd59383e8d7552425d" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:11:23.359Z" + }, + "updated_at": { + "$date": "2025-06-28T16:07:54.555Z" + }, + "__v": 0, + "image": "food_1700505066167.png" +}, +{ + "_id": { + "$oid": "651eee7a59383e8d7552429f" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس کوکی لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "651eedbd59383e8d7552425d" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:12:26.270Z" + }, + "updated_at": { + "$date": "2025-06-29T14:07:38.848Z" + }, + "__v": 0, + "image": "food_1700505009799.png" +}, +{ + "_id": { + "$oid": "651ef01159383e8d75524330" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس پاپکورن لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "651eedbd59383e8d7552425d" + }, + "index": 4, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:19:13.557Z" + }, + "updated_at": { + "$date": "2025-06-29T14:08:19.686Z" + }, + "__v": 0, + "image": "food_1700504953778.png" +}, +{ + "_id": { + "$oid": "651ef04959383e8d75524346" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس کارامل ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "651eedbd59383e8d7552425d" + }, + "index": 5, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:20:09.165Z" + }, + "updated_at": { + "$date": "2025-06-29T14:07:53.544Z" + }, + "__v": 0, + "image": "food_1700504882868.png" +}, +{ + "_id": { + "$oid": "651ef08e59383e8d75524360" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس کوکو لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "651eedbd59383e8d7552425d" + }, + "index": 6, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:21:18.306Z" + }, + "updated_at": { + "$date": "2025-06-29T14:06:34.391Z" + }, + "__v": 0, + "image": "food_1700504694051.png" +}, +{ + "_id": { + "$oid": "651ef0da59383e8d75524393" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لوتوس باتر", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef0b759383e8d7552437a" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:22:34.659Z" + }, + "updated_at": { + "$date": "2025-06-28T15:56:07.365Z" + }, + "__v": 0, + "image": "food_1697995109260.png" +}, +{ + "_id": { + "$oid": "651ef0fc59383e8d755243a9" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لایف چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef0b759383e8d7552437a" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:23:08.539Z" + }, + "updated_at": { + "$date": "2025-06-28T15:55:38.425Z" + }, + "__v": 0, + "image": "food_1697998248760.png" +}, +{ + "_id": { + "$oid": "651ef11e59383e8d755243b9" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پینات باتر", + "description": "بستنی+بادام زمینی", + "short_description": "", + "category": { + "$oid": "651ef0b759383e8d7552437a" + }, + "index": 3, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:23:42.318Z" + }, + "updated_at": { + "$date": "2025-06-28T15:55:11.796Z" + }, + "__v": 0, + "image": "food_1697999716171.png" +}, +{ + "_id": { + "$oid": "651ef26259383e8d75524443" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef22159383e8d75524416" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:29:06.858Z" + }, + "updated_at": { + "$date": "2025-06-29T14:24:30.858Z" + }, + "__v": 0, + "image": "food_1697998467799.png" +}, +{ + "_id": { + "$oid": "651ef30b59383e8d7552446b" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ویرجین موهیتو", + "description": "(همراه با عرق نیشکر)", + "short_description": "", + "category": { + "$oid": "651ef22159383e8d75524416" + }, + "index": 2, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-05T17:31:55.909Z" + }, + "updated_at": { + "$date": "2025-06-29T14:24:13.606Z" + }, + "__v": 0, + "image": "food_1697998418915.png" +}, +{ + "_id": { + "$oid": "651fe09859383e8d75525110" + }, + "price": 1030000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز کیک لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "651eff7759383e8d75524961" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-06T10:25:28.697Z" + }, + "updated_at": { + "$date": "2024-12-12T17:28:58.090Z" + }, + "__v": 0, + "image": "food_1734024510493.png" +}, +{ + "_id": { + "$oid": "65219ca459383e8d7552761e" + }, + "price": 3400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله استریپس 3 تیکه ", + "description": "3 تیکه فیله مرغ کریسپی شده،سیب زمینی سرخ شده بهمراه ادویه، سالاد کلم،نان مک،سس چیلی،سس سیر", + "short_description": "", + "category": { + "$oid": "65219db959383e8d75527683" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-07T18:00:04.785Z" + }, + "updated_at": { + "$date": "2025-06-28T15:54:30.555Z" + }, + "__v": 0, + "image": "food_1697469906857.png" +}, +{ + "_id": { + "$oid": "65219d0959383e8d75527631" + }, + "price": 4100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراید پلیت ", + "description": "2تیکه فیله مرغ کریسپی شده،قارچ سوخاری،پیاز سوخاری.چیکن پنیری.سیب زمینی سوخاری،گل کلم سوخاری سالاد کلم،سس چیلی،سس سیر", + "short_description": "", + "category": { + "$oid": "65219db959383e8d75527683" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-07T18:01:45.632Z" + }, + "updated_at": { + "$date": "2025-06-28T15:54:11.517Z" + }, + "__v": 0, + "image": "food_1705682276880.png" +}, +{ + "_id": { + "$oid": "65219e4559383e8d755276cf" + }, + "price": 2220000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بوفالو وینگز", + "description": "بال مرغ سوخاری،رایس نودل،سالاد کلم،سس بوفالو (HOT) ", + "short_description": "", + "category": { + "$oid": "651971c059383e8d7551df47" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-07T18:07:01.962Z" + }, + "updated_at": { + "$date": "2025-04-01T12:49:51.754Z" + }, + "__v": 0, + "image": "food_1697469854714.png" +}, +{ + "_id": { + "$oid": "65219ee859383e8d755276d9" + }, + "price": 4500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله استریپس 5تیکه", + "description": "5عدد فیله مرغ کریسپی شده ،سالاد کلم،نان مک،سیب زمینی سرخ شده بهمراه ادویه ،سس سیر-چیلی تای", + "short_description": "", + "category": { + "$oid": "65219db959383e8d75527683" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-07T18:09:44.317Z" + }, + "updated_at": { + "$date": "2025-06-28T15:53:48.705Z" + }, + "__v": 0, + "image": "food_1697469825117.png" +}, +{ + "_id": { + "$oid": "65226e9059383e8d75527b7f" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه", + "description": "", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-08T08:55:44.224Z" + }, + "updated_at": { + "$date": "2025-06-29T14:23:42.862Z" + }, + "__v": 0, + "image": "food_1734024149641.png" +}, +{ + "_id": { + "$oid": "6522b25959383e8d75528169" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه 2 نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-08T13:44:57.375Z" + }, + "updated_at": { + "$date": "2025-06-29T14:23:16.743Z" + }, + "__v": 0, + "image": "food_1697923912214.png" +}, +{ + "_id": { + "$oid": "6522b29259383e8d75528177" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه 4نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-08T13:45:54.237Z" + }, + "updated_at": { + "$date": "2025-06-29T14:22:54.902Z" + }, + "__v": 0, + "image": "food_1697923944307.png" +}, +{ + "_id": { + "$oid": "6522b90b59383e8d755281fe" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اقیانوس آبی ", + "description": "لوندر فرانسوی . نخود پروانه ای . بلوبری", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-08T14:13:31.070Z" + }, + "updated_at": { + "$date": "2025-01-07T13:40:18.361Z" + }, + "__v": 0, + "image": "food_1734023335326.png" +}, +{ + "_id": { + "$oid": "6522b99d59383e8d75528215" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش بعد از شام", + "description": "سیب. به . زنجبیل . رزماری", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-08T14:15:57.177Z" + }, + "updated_at": { + "$date": "2025-01-07T13:39:07.461Z" + }, + "__v": 0, + "image": "food_1734023260428.png" +}, +{ + "_id": { + "$oid": "6523dc5f59383e8d75529446" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اکسترا فیله ", + "description": "یک عدد فیله مرغ گریل شده", + "short_description": "", + "category": { + "$oid": "6519730759383e8d7551df92" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-09T10:56:31.354Z" + }, + "updated_at": { + "$date": "2025-01-07T14:24:38.232Z" + }, + "__v": 0, + "image": "food_1697469803784.png" +}, +{ + "_id": { + "$oid": "6523f3f459383e8d7552966a" + }, + "price": 4350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پولد بیف ", + "description": "سس خامه،پنیر پیتزا،مغز ران پخته شده طعم دار،فلفل دلمه رنگی ،قارچ،زیتون سیاه،گوجه خشک مزه دار شده،شات سس کچاپ", + "short_description": "", + "category": { + "$oid": "6519720759383e8d7551df62" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-09T12:37:08.639Z" + }, + "updated_at": { + "$date": "2025-03-31T13:42:17.227Z" + }, + "__v": 0, + "image": "food_1705682387141.png" +}, +{ + "_id": { + "$oid": "652693fd59383e8d7552ba60" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو عربیکا", + "description": "", + "short_description": "", + "category": { + "$oid": "652693dc59383e8d7552ba53" + }, + "index": 1, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-11T12:24:29.212Z" + }, + "updated_at": { + "$date": "2025-01-07T13:31:30.868Z" + }, + "__v": 0, + "image": "food_1701607992109.png" +}, +{ + "_id": { + "$oid": "6527fd2e59383e8d7552d4cc" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلو اوشن", + "description": "", + "short_description": "", + "category": { + "$oid": "6527fce059383e8d7552d4be" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-12T14:05:34.943Z" + }, + "updated_at": { + "$date": "2025-01-07T13:52:45.722Z" + }, + "__v": 0, + "image": "food_1697996464397.png" +}, +{ + "_id": { + "$oid": "6527fd9b59383e8d7552d4e6" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لانکا بری", + "description": "", + "short_description": "", + "category": { + "$oid": "6527fce059383e8d7552d4be" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-12T14:07:23.408Z" + }, + "updated_at": { + "$date": "2025-01-07T13:51:56.834Z" + }, + "__v": 0, + "image": "food_1697998762565.png" +}, +{ + "_id": { + "$oid": "6527ffa059383e8d7552d553" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلک ویدو", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef22159383e8d75524416" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-12T14:16:00.837Z" + }, + "updated_at": { + "$date": "2025-06-29T14:26:43.330Z" + }, + "__v": 0, + "image": "food_1697998657211.png" +}, +{ + "_id": { + "$oid": "6527fffe59383e8d7552d56a" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیلی فلاور", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef22159383e8d75524416" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-12T14:17:34.460Z" + }, + "updated_at": { + "$date": "2025-06-29T14:26:28.383Z" + }, + "__v": 0, + "image": "food_1697993972425.png" +}, +{ + "_id": { + "$oid": "6528018259383e8d7552d5ed" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیتر آلموند ", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef22159383e8d75524416" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-10-12T14:24:02.137Z" + }, + "updated_at": { + "$date": "2025-06-29T14:25:55.892Z" + }, + "__v": 0, + "image": "food_1697923853450.png" +}, +{ + "_id": { + "$oid": "652a47a859383e8d755304ea" + }, + "price": 430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو 50-50", + "description": "", + "short_description": "", + "category": { + "$oid": "652693dc59383e8d7552ba53" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:47:52.165Z" + }, + "updated_at": { + "$date": "2025-01-07T13:30:00.482Z" + }, + "__v": 0, + "image": "food_1701608031535.png" +}, +{ + "_id": { + "$oid": "652a47f659383e8d755304f7" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ربوستا دوپیو ربوستا", + "description": "", + "short_description": "", + "category": { + "$oid": "652693dc59383e8d7552ba53" + }, + "index": 3, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:49:10.688Z" + }, + "updated_at": { + "$date": "2025-01-07T13:29:24.951Z" + }, + "__v": 0, + "image": "food_1701608129536.png" +}, +{ + "_id": { + "$oid": "652a485259383e8d75530505" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "V 60", + "description": "اتیوپی هامبلا", + "short_description": "", + "category": { + "$oid": "652a478059383e8d755304db" + }, + "index": 1, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:50:42.856Z" + }, + "updated_at": { + "$date": "2025-01-07T13:31:58.382Z" + }, + "__v": 0, + "image": "food_1701608093471.png" +}, +{ + "_id": { + "$oid": "652a49b659383e8d75530566" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا اسپرسو", + "description": "اسپرسو دوبل-پودر ماسالا-شیر", + "short_description": "", + "category": { + "$oid": "652a46a959383e8d7553049a" + }, + "index": 4, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:56:38.628Z" + }, + "updated_at": { + "$date": "2025-01-07T13:38:57.557Z" + }, + "__v": 0, + "image": "food_1701607738884.png" +}, +{ + "_id": { + "$oid": "652a49d959383e8d75530573" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "652a46a959383e8d7553049a" + }, + "index": 1, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:57:13.224Z" + }, + "updated_at": { + "$date": "2025-01-07T13:38:11.313Z" + }, + "__v": 0, + "image": "food_1700662718913.png" +}, +{ + "_id": { + "$oid": "652a49fb59383e8d75530580" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت فندوقی", + "description": "شیر-پودر هات چاکلت-سیروپ فندوق", + "short_description": "", + "category": { + "$oid": "652a46a959383e8d7553049a" + }, + "index": 2, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:57:47.967Z" + }, + "updated_at": { + "$date": "2025-01-07T13:35:50.727Z" + }, + "__v": 0, + "image": "food_1701607453105.png" +}, +{ + "_id": { + "$oid": "652a4a2759383e8d7553058a" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا", + "description": "شیر-زنجبیل-هل-دارچین", + "short_description": "", + "category": { + "$oid": "652a46a959383e8d7553049a" + }, + "index": 4, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:58:31.057Z" + }, + "updated_at": { + "$date": "2025-01-07T13:27:31.575Z" + }, + "__v": 0, + "image": "food_1701607360495.png" +}, +{ + "_id": { + "$oid": "652a4a7959383e8d755305a0" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "652a46a959383e8d7553049a" + }, + "index": 5, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T07:59:53.672Z" + }, + "updated_at": { + "$date": "2025-01-07T13:28:04.861Z" + }, + "__v": 0, + "image": "food_1701608212804.png" +}, +{ + "_id": { + "$oid": "652a4a9b59383e8d755305aa" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر فندوق", + "description": "شیر-فندوق-سیروپ فندوق", + "short_description": "", + "category": { + "$oid": "652a46a959383e8d7553049a" + }, + "index": 8, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:00:27.974Z" + }, + "updated_at": { + "$date": "2025-01-07T13:15:13.849Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a4b1659383e8d755305e1" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر عسل", + "description": "شیر گرم فوم دار شده-عسل طبیعی", + "short_description": "", + "category": { + "$oid": "652a46a959383e8d7553049a" + }, + "index": 6, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:02:30.749Z" + }, + "updated_at": { + "$date": "2025-01-07T13:13:50.824Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a4b8459383e8d755305ff" + }, + "price": 530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو 50-50", + "description": "اسپرسو دوبل 50-50 -آب-یخ", + "short_description": "", + "category": { + "$oid": "652a46d159383e8d755304a3" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:04:20.962Z" + }, + "updated_at": { + "$date": "2025-01-07T13:17:19.131Z" + }, + "__v": 0, + "image": "food_1701608264002.png" +}, +{ + "_id": { + "$oid": "652a4ba159383e8d7553060a" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو ربوستا", + "description": "اسپرسو دوبل ربوستا-آب-یخ", + "short_description": "", + "category": { + "$oid": "652a46d159383e8d755304a3" + }, + "index": 1, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:04:49.418Z" + }, + "updated_at": { + "$date": "2025-01-07T13:17:53.667Z" + }, + "__v": 0, + "image": "food_1701606499539.png" +}, +{ + "_id": { + "$oid": "652a4bbd59383e8d75530614" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا", + "description": "اسپرسو دوبل-شیر-سیروپ شکلات-یخ", + "short_description": "", + "category": { + "$oid": "652a46d159383e8d755304a3" + }, + "index": 3, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:05:17.373Z" + }, + "updated_at": { + "$date": "2025-01-07T13:18:45.138Z" + }, + "__v": 0, + "image": "food_1701606450996.png" +}, +{ + "_id": { + "$oid": "652a4c5659383e8d75530656" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لیان", + "description": "پودر هات چاکلت-قهوه گلد-سیروپ فندوق-نوتلا-شیر-یخ", + "short_description": "", + "category": { + "$oid": "652a46d159383e8d755304a3" + }, + "index": 4, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:07:50.602Z" + }, + "updated_at": { + "$date": "2025-01-07T13:19:28.836Z" + }, + "__v": 0, + "image": "food_1701605340716.png" +}, +{ + "_id": { + "$oid": "652a4d4b59383e8d755306a9" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موز شکلات", + "description": "بستنی شکلاتی-موز ", + "short_description": "", + "category": { + "$oid": "652a476859383e8d755304cf" + }, + "index": 1, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:11:55.281Z" + }, + "updated_at": { + "$date": "2024-05-28T12:41:40.440Z" + }, + "__v": 0, + "image": "food_1701606038603.png" +}, +{ + "_id": { + "$oid": "652a4d6059383e8d755306b3" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بادام زمینی", + "description": "بستنی وانیل-کره بادام زمینی-شیر", + "short_description": "", + "category": { + "$oid": "652a476859383e8d755304cf" + }, + "index": 2, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:12:16.942Z" + }, + "updated_at": { + "$date": "2025-01-07T13:22:17.860Z" + }, + "__v": 0, + "image": "food_1701605978968.png" +}, +{ + "_id": { + "$oid": "652a4d7259383e8d755306bd" + }, + "price": 980000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "نوتلا توییکس", + "description": "بستنی وانیل-نوتلا-شکلات توییکس-شیر", + "short_description": "", + "category": { + "$oid": "652a476859383e8d755304cf" + }, + "index": 4, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:12:34.337Z" + }, + "updated_at": { + "$date": "2024-06-04T07:31:40.118Z" + }, + "__v": 0, + "image": "food_1701605889766.png" +}, +{ + "_id": { + "$oid": "652a4d9959383e8d755306d1" + }, + "price": 750000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": " اسپرسو", + "description": "اسپرسو دبل-بستنی وانیل-شیر", + "short_description": "", + "category": { + "$oid": "652a476859383e8d755304cf" + }, + "index": 3, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T08:13:13.657Z" + }, + "updated_at": { + "$date": "2025-01-07T13:23:20.856Z" + }, + "__v": 0, + "image": "food_1701605808978.png" +}, +{ + "_id": { + "$oid": "652a618559383e8d7553089d" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه", + "description": "چای عطری دمی", + "short_description": "", + "category": { + "$oid": "652a55c759383e8d7553078a" + }, + "index": 1, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T09:38:13.008Z" + }, + "updated_at": { + "$date": "2024-09-02T18:28:42.113Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "652a61a759383e8d755308a7" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای زعفران", + "description": "چای سیاه دمی-زعفران", + "short_description": "", + "category": { + "$oid": "652a55c759383e8d7553078a" + }, + "index": 2, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T09:38:47.996Z" + }, + "updated_at": { + "$date": "2024-05-28T12:30:51.113Z" + }, + "__v": 0, + "image": "food_1701604795540.png" +}, +{ + "_id": { + "$oid": "652a650459383e8d7553092b" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مدیترانه", + "description": "چای ترش-سیب-نسترن-کشمش-پوست پرتقال-به لیمو", + "short_description": "", + "category": { + "$oid": "652a55c759383e8d7553078a" + }, + "index": 6, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-14T09:53:08.573Z" + }, + "updated_at": { + "$date": "2024-09-02T18:26:44.031Z" + }, + "__v": 0, + "image": "food_1701608482959.png" +}, +{ + "_id": { + "$oid": "652e6e0959383e8d75534081" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته", + "description": "شیر-اسپرسو دبل-سیروپ دلخواه-یخ", + "short_description": "", + "category": { + "$oid": "652a46d159383e8d755304a3" + }, + "index": 2, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2023-10-17T11:20:41.327Z" + }, + "updated_at": { + "$date": "2025-01-07T13:24:49.936Z" + }, + "__v": 0, + "image": "food_1725301291531.png" +}, +{ + "_id": { + "$oid": "6537f76859383e8d7553ef4c" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب سرخ کرده", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f60059383e8d7553eedc" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-10-24T16:57:12.963Z" + }, + "updated_at": { + "$date": "2023-10-24T16:57:12.963Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6537f78459383e8d7553ef56" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بروسکتا آل پومودرو", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f60059383e8d7553eedc" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-10-24T16:57:40.241Z" + }, + "updated_at": { + "$date": "2024-05-11T16:19:48.094Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6537f7c359383e8d7553ef7f" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f5f059383e8d7553eed0" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-10-24T16:58:43.621Z" + }, + "updated_at": { + "$date": "2024-05-13T16:19:23.585Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6537f7e159383e8d7553efa1" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیکن تنوری", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f5f059383e8d7553eed0" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-10-24T16:59:13.743Z" + }, + "updated_at": { + "$date": "2024-05-11T16:10:57.952Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6537f82159383e8d7553f006" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن الفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f80159383e8d7553efcf" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2023-10-24T17:00:17.622Z" + }, + "updated_at": { + "$date": "2024-05-11T16:10:25.002Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6549280059383e8d75552fc6" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز کیک سن سباستین", + "description": "", + "short_description": "", + "category": { + "$oid": "651eff7759383e8d75524961" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-11-06T17:53:04.503Z" + }, + "updated_at": { + "$date": "2024-12-12T17:25:03.265Z" + }, + "__v": 0, + "image": "food_1705685420900.png" +}, +{ + "_id": { + "$oid": "654cc66759383e8d755566bf" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه ترک", + "description": "", + "short_description": "", + "category": { + "$oid": "6522a77659383e8d75527f18" + }, + "index": 1, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-11-09T11:45:43.390Z" + }, + "updated_at": { + "$date": "2025-04-12T18:18:35.082Z" + }, + "__v": 0, + "image": "food_1744480231161.png" +}, +{ + "_id": { + "$oid": "654cc6b059383e8d755566e4" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "V-60", + "description": "", + "short_description": "", + "category": { + "$oid": "6522a77659383e8d75527f18" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-11-09T11:46:56.428Z" + }, + "updated_at": { + "$date": "2025-01-07T13:32:15.309Z" + }, + "__v": 0, + "image": "food_1711380844317.png" +}, +{ + "_id": { + "$oid": "65509f4259383e8d7555b834" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ اسپشیال", + "description": "هات داگ ٧٠٪‏،قارچ،پنیر،سس مخصوص،کاهو،خیارشور،گوجه", + "short_description": "", + "category": { + "$oid": "65509e8659383e8d7555b820" + }, + "index": 1, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-11-12T09:47:46.644Z" + }, + "updated_at": { + "$date": "2025-09-03T15:11:11.075Z" + }, + "__v": 0, + "image": "food_1733223422595.png" +}, +{ + "_id": { + "$oid": "6550ad0159383e8d7555bb28" + }, + "price": 4500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میت لاورز ", + "description": "گوشت طعم دار شده، زیتون،قارچ،سس مخصوص،پنیر گودا،پنیر پیتزا", + "short_description": "", + "category": { + "$oid": "64edb2bb59383e8d754ef59b" + }, + "index": 6, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-11-12T10:46:25.449Z" + }, + "updated_at": { + "$date": "2025-08-27T15:15:08.425Z" + }, + "__v": 0, + "image": "food_1733221743797.png" +}, +{ + "_id": { + "$oid": "6550ad3959383e8d7555bb35" + }, + "price": 4500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میکس تو", + "description": "گوشت طعم دار شده،مرغ طعم دار شده،قارچ،زیتون،پنیر پیتزا", + "short_description": "", + "category": { + "$oid": "64edb2bb59383e8d754ef59b" + }, + "index": 7, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2023-11-12T10:47:21.705Z" + }, + "updated_at": { + "$date": "2025-08-27T15:13:17.109Z" + }, + "__v": 0, + "image": "food_1733221726935.png" +}, +{ + "_id": { + "$oid": "6557df2f59383e8d755646e9" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جگر گوسفندی ", + "description": "جگر", + "short_description": "", + "category": { + "$oid": "6557c63859383e8d7556459b" + }, + "index": 2, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700257580271.png", + "created_at": { + "$date": "2023-11-17T21:46:23.453Z" + }, + "updated_at": { + "$date": "2023-12-01T08:06:10.647Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558629959383e8d75564845" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دل گوسفندی", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c63859383e8d7556459b" + }, + "index": 1, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700291221757.png", + "created_at": { + "$date": "2023-11-18T07:07:05.208Z" + }, + "updated_at": { + "$date": "2023-12-01T08:06:45.725Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "655863b159383e8d75564861" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قلوه گوسفندی", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c63859383e8d7556459b" + }, + "index": 3, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T07:11:45.299Z" + }, + "updated_at": { + "$date": "2023-11-18T07:11:45.299Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558afa759383e8d75564b71" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چنجه دنبه ", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c63859383e8d7556459b" + }, + "index": 4, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700310947996.png", + "created_at": { + "$date": "2023-11-18T12:35:51.560Z" + }, + "updated_at": { + "$date": "2023-11-18T12:35:51.560Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558afe459383e8d75564b7b" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چنجه ", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c63859383e8d7556459b" + }, + "index": 5, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T12:36:52.241Z" + }, + "updated_at": { + "$date": "2023-11-18T12:36:52.241Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b03a59383e8d75564b85" + }, + "price": 1220000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دل شکاری", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c63859383e8d7556459b" + }, + "index": 6, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700311095564.png", + "created_at": { + "$date": "2023-11-18T12:38:18.633Z" + }, + "updated_at": { + "$date": "2023-12-01T08:08:05.571Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b06e59383e8d75564b93" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قلوه شکاری", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c63859383e8d7556459b" + }, + "index": 7, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T12:39:10.439Z" + }, + "updated_at": { + "$date": "2023-12-01T08:09:06.489Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b0c559383e8d75564b9d" + }, + "price": 4950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سینی جگر دو نفره ", + "description": "۱۰سیخ جیگر - ۲ سیخ دل - ۲ سیخ قلوه و ۱ سیخ قارچ ۱سیخ دنبه", + "short_description": "", + "category": { + "$oid": "6557c63859383e8d7556459b" + }, + "index": 8, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T12:40:37.729Z" + }, + "updated_at": { + "$date": "2023-12-01T08:54:14.756Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b14659383e8d75564ba7" + }, + "price": 9200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سینی چهار نفره ", + "description": "14سیخ جیگر -۴ سیخ قلوه - ۴سیخ دل-۲ سیخ دنبه ‌ - ۲ سیخ قارچ", + "short_description": "", + "category": { + "$oid": "6557c63859383e8d7556459b" + }, + "index": 9, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T12:42:46.850Z" + }, + "updated_at": { + "$date": "2023-12-01T08:58:57.036Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b19e59383e8d75564bbb" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جگر گوساله", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c64c59383e8d755645a7" + }, + "index": 1, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700311451584.png", + "created_at": { + "$date": "2023-11-18T12:44:14.717Z" + }, + "updated_at": { + "$date": "2023-12-01T08:21:30.269Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b36059383e8d75564bcd" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دل گوساله", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c64c59383e8d755645a7" + }, + "index": 2, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T12:51:44.505Z" + }, + "updated_at": { + "$date": "2023-12-01T08:22:28.997Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b38c59383e8d75564bd7" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قلوه گوساله", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c64c59383e8d755645a7" + }, + "index": 3, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T12:52:28.753Z" + }, + "updated_at": { + "$date": "2023-11-18T12:52:28.753Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b45859383e8d75564be1" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جگر دنبه", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c64c59383e8d755645a7" + }, + "index": 4, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T12:55:52.546Z" + }, + "updated_at": { + "$date": "2023-11-18T12:55:52.546Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b47f59383e8d75564beb" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جگر پیچ", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c64c59383e8d755645a7" + }, + "index": 5, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T12:56:31.135Z" + }, + "updated_at": { + "$date": "2023-12-01T08:24:20.914Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b4da59383e8d75564bf8" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دل دنبه ", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c64c59383e8d755645a7" + }, + "index": 6, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T12:58:02.353Z" + }, + "updated_at": { + "$date": "2023-11-18T12:58:02.353Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b54659383e8d75564c08" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماهی کباب", + "description": "قزل ", + "short_description": "", + "category": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "index": 1, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700312385716.png", + "created_at": { + "$date": "2023-11-18T12:59:50.076Z" + }, + "updated_at": { + "$date": "2023-12-01T08:25:10.919Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b67659383e8d75564c14" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کباب کوبیده ممتاز", + "description": "", + "short_description": "", + "category": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "index": 0, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T13:04:54.488Z" + }, + "updated_at": { + "$date": "2023-11-18T13:04:54.488Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b69359383e8d75564c1e" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دنبه", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c63859383e8d7556459b" + }, + "index": 10, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T13:05:23.283Z" + }, + "updated_at": { + "$date": "2023-11-18T13:05:23.283Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b76a59383e8d75564c37" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جوجه زعفرانی مخصوص", + "description": "250 گرمی ", + "short_description": "", + "category": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "index": 2, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700312935278.png", + "created_at": { + "$date": "2023-11-18T13:08:58.223Z" + }, + "updated_at": { + "$date": "2023-11-18T13:08:58.223Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b80f59383e8d75564c48" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جوجه مکزیکی", + "description": "250 گرمی", + "short_description": "", + "category": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "index": 3, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700313100271.png", + "created_at": { + "$date": "2023-11-18T13:11:43.100Z" + }, + "updated_at": { + "$date": "2023-11-18T13:11:43.100Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b8b159383e8d75564c53" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جوجه ترش مخصوص ", + "description": "۲۵۰ گرم ران مرغ", + "short_description": "", + "category": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "index": 4, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700313261875.png", + "created_at": { + "$date": "2023-11-18T13:14:25.346Z" + }, + "updated_at": { + "$date": "2023-12-01T08:28:01.390Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b93b59383e8d75564c61" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کتف و بال زعفرانی ", + "description": "330 گرمی ", + "short_description": "", + "category": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "index": 5, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700313401274.png", + "created_at": { + "$date": "2023-11-18T13:16:43.797Z" + }, + "updated_at": { + "$date": "2023-11-18T13:16:43.797Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558b9e559383e8d75564c76" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کتف و بال ترش ", + "description": "330 گرمی", + "short_description": "", + "category": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "index": 7, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T13:19:33.010Z" + }, + "updated_at": { + "$date": "2023-12-01T08:49:52.143Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558ba6359383e8d75564c80" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سینی کباب دو نفره ", + "description": "دوسیخ کوبیده - یک سیخ جوجه ", + "short_description": "", + "category": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "index": 8, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T13:21:39.600Z" + }, + "updated_at": { + "$date": "2023-11-18T13:21:39.600Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558bae359383e8d75564c8c" + }, + "price": 5300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سینی کباب 4 نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "index": 9, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T13:23:47.387Z" + }, + "updated_at": { + "$date": "2023-11-18T13:23:47.387Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558bb3259383e8d75564c96" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گوجه کبابی", + "description": "", + "short_description": "", + "category": { + "$oid": "62318f05a03b80e0a44f2d2f" + }, + "index": 1, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T13:25:06.710Z" + }, + "updated_at": { + "$date": "2023-12-01T08:04:57.257Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558bb8e59383e8d75564ca0" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قارچ کبابی ساده ", + "description": "", + "short_description": "", + "category": { + "$oid": "62318f05a03b80e0a44f2d2f" + }, + "index": 2, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700313994866.png", + "created_at": { + "$date": "2023-11-18T13:26:38.536Z" + }, + "updated_at": { + "$date": "2023-11-18T13:26:38.536Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558bbd959383e8d75564caa" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قارچ کبابی طعم دار", + "description": "", + "short_description": "", + "category": { + "$oid": "62318f05a03b80e0a44f2d2f" + }, + "index": 3, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700314072117.png", + "created_at": { + "$date": "2023-11-18T13:27:53.848Z" + }, + "updated_at": { + "$date": "2023-11-18T13:27:53.848Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d39159383e8d75564eb7" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیوان دوغ محلی", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 1, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700320142532.png", + "created_at": { + "$date": "2023-11-18T15:09:05.230Z" + }, + "updated_at": { + "$date": "2023-11-18T15:09:05.230Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d3b759383e8d75564ec4" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکا قوطی ", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 2, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:09:43.604Z" + }, + "updated_at": { + "$date": "2023-11-18T15:09:43.604Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d3d359383e8d75564ece" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فانتا قوطی ", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 3, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:10:11.417Z" + }, + "updated_at": { + "$date": "2023-11-18T15:10:11.417Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d3e959383e8d75564ed8" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرایت", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 4, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:10:33.988Z" + }, + "updated_at": { + "$date": "2023-11-18T15:10:33.988Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d43059383e8d75564ee5" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 5, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:11:44.041Z" + }, + "updated_at": { + "$date": "2023-11-18T15:11:44.041Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d46159383e8d75564ef2" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 6, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:12:33.624Z" + }, + "updated_at": { + "$date": "2023-11-18T15:12:33.624Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d50a59383e8d75564f14" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 7, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:15:22.039Z" + }, + "updated_at": { + "$date": "2023-11-18T15:15:22.039Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d54259383e8d75564f21" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورنج کوک", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 8, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:16:18.467Z" + }, + "updated_at": { + "$date": "2023-11-18T15:16:18.467Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d56759383e8d75564f43" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استراکوک", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 9, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:16:55.533Z" + }, + "updated_at": { + "$date": "2023-11-18T15:16:55.533Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d58d59383e8d75564f56" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ردسور", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 10, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:17:33.025Z" + }, + "updated_at": { + "$date": "2023-11-18T15:17:33.025Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d5b759383e8d75564f60" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مانگوپانگو", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 11, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:18:15.016Z" + }, + "updated_at": { + "$date": "2023-11-18T15:18:15.016Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d62159383e8d75564f7d" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 12, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700320798249.png", + "created_at": { + "$date": "2023-11-18T15:20:01.635Z" + }, + "updated_at": { + "$date": "2023-11-18T15:20:01.635Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d65e59383e8d75564f87" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c67959383e8d755645b6" + }, + "index": 13, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700320859207.png", + "created_at": { + "$date": "2023-11-18T15:21:02.286Z" + }, + "updated_at": { + "$date": "2023-11-18T15:21:02.286Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d70559383e8d75564f98" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چایی تک نفره و باقلوا", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 1, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700321026241.png", + "created_at": { + "$date": "2023-11-18T15:23:49.260Z" + }, + "updated_at": { + "$date": "2023-11-18T15:23:49.260Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d74259383e8d75564fab" + }, + "price": 980000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سرویس چایی و باقلوا ", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 2, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "image": "food_1700321087269.png", + "created_at": { + "$date": "2023-11-18T15:24:50.832Z" + }, + "updated_at": { + "$date": "2023-11-18T15:24:50.832Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d77f59383e8d75564fc4" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چایی ماچا", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 3, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:25:51.241Z" + }, + "updated_at": { + "$date": "2023-11-18T15:25:51.241Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d7a459383e8d75564fd1" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چایی ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 4, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:26:28.894Z" + }, + "updated_at": { + "$date": "2023-11-18T15:26:28.894Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d7d759383e8d75564fde" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جانگل فروت ", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 5, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:27:19.574Z" + }, + "updated_at": { + "$date": "2023-11-18T15:27:19.574Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d7f859383e8d75564fe8" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چایی آویشن ", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 6, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:27:52.468Z" + }, + "updated_at": { + "$date": "2023-11-18T15:27:52.468Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d83059383e8d75564ff2" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رستیرتو", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 7, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:28:48.508Z" + }, + "updated_at": { + "$date": "2023-11-18T15:28:48.508Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d84d59383e8d75564ffc" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 8, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:29:17.761Z" + }, + "updated_at": { + "$date": "2023-11-18T15:29:17.761Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d86759383e8d75565006" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لانگو", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 9, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:29:43.290Z" + }, + "updated_at": { + "$date": "2023-11-18T15:29:43.290Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d88759383e8d75565010" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 10, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:30:15.585Z" + }, + "updated_at": { + "$date": "2023-11-18T15:30:15.585Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d8a959383e8d7556501a" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 11, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:30:49.522Z" + }, + "updated_at": { + "$date": "2023-11-18T15:30:49.522Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d8de59383e8d75565036" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 12, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:31:42.562Z" + }, + "updated_at": { + "$date": "2023-11-18T15:31:42.562Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d8fb59383e8d75565040" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 13, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:32:11.893Z" + }, + "updated_at": { + "$date": "2023-11-18T15:32:11.893Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d91e59383e8d7556504a" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 14, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:32:46.620Z" + }, + "updated_at": { + "$date": "2023-11-18T15:32:46.620Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d93e59383e8d7556505a" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مینت چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 15, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:33:18.938Z" + }, + "updated_at": { + "$date": "2023-11-18T15:33:18.938Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d95e59383e8d75565064" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 16, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:33:50.317Z" + }, + "updated_at": { + "$date": "2023-11-18T15:33:50.317Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6558d99b59383e8d7556506e" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه ", + "description": "فرانسه نسل ۳", + "short_description": "", + "category": { + "$oid": "6557c6a959383e8d755645c3" + }, + "index": 17, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-11-18T15:34:51.916Z" + }, + "updated_at": { + "$date": "2023-11-18T15:37:53.861Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "655b793159383e8d75567a50" + }, + "price": 1670000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر کلاسیک", + "description": "130 گرم گوشت خالص ، کاهو ، گوجه ، خیارشور", + "short_description": "", + "category": { + "$oid": "6450ac7a98ff3c741441425a" + }, + "index": 5, + "storeId": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "created_at": { + "$date": "2023-11-20T15:20:17.340Z" + }, + "updated_at": { + "$date": "2023-11-20T15:20:17.340Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6569980b8c7e0ed750eab0f5" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جگر دنبه ", + "description": "", + "short_description": "", + "category": { + "$oid": "6557c64c59383e8d755645a7" + }, + "index": 0, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-12-01T08:23:39.629Z" + }, + "updated_at": { + "$date": "2023-12-01T08:23:39.629Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "656998c68c7e0ed750eab12c" + }, + "price": 3150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاسه کباب", + "description": "کوبیده یک سیخ - جوجه یک سیخ - چنجه یک سیخ", + "short_description": "", + "category": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "index": 0, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-12-01T08:26:46.770Z" + }, + "updated_at": { + "$date": "2023-12-01T08:26:46.770Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65699e6f8c7e0ed750eab231" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کتف و بال مکزیکی", + "description": "", + "short_description": "", + "category": { + "$oid": "62318f3ca03b80e0a44f2d4a" + }, + "index": 0, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-12-01T08:50:55.096Z" + }, + "updated_at": { + "$date": "2023-12-01T08:50:55.096Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6569a0cd8c7e0ed750eab318" + }, + "price": 2690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سینی جگر تک نفره", + "description": "5سیخ جگر -۲سیخ دل - ۱سیخ قلوه ", + "short_description": "", + "category": { + "$oid": "6557c64c59383e8d755645a7" + }, + "index": 0, + "storeId": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "created_at": { + "$date": "2023-12-01T09:01:01.081Z" + }, + "updated_at": { + "$date": "2023-12-01T09:01:01.081Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "656b56028c7e0ed750eadc1b" + }, + "price": 1170000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رول اسفناج و پنیر", + "description": "اسفناج پخته شده و پنیر و نان ", + "short_description": "", + "category": { + "$oid": "6398a0a482d7fc8d726a7f22" + }, + "index": 2, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1701533184098.png", + "created_at": { + "$date": "2023-12-02T16:06:26.020Z" + }, + "updated_at": { + "$date": "2023-12-02T16:12:46.293Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "656b568f8c7e0ed750eadc2b" + }, + "price": 1190000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رول بادمجان و گوجه ", + "description": "بادمجان و گوجه بخار پز شده ", + "short_description": "", + "category": { + "$oid": "6398a0a482d7fc8d726a7f22" + }, + "index": 1, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1701533325745.png", + "created_at": { + "$date": "2023-12-02T16:08:47.628Z" + }, + "updated_at": { + "$date": "2023-12-02T16:12:32.706Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "656b59b78c7e0ed750eadd56" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیده پپرونی", + "description": "", + "short_description": "", + "category": { + "$oid": "6398a0a482d7fc8d726a7f22" + }, + "index": 3, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1701534131794.png", + "created_at": { + "$date": "2023-12-02T16:22:15.915Z" + }, + "updated_at": { + "$date": "2023-12-02T16:22:15.915Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "656b5a1f8c7e0ed750eadd78" + }, + "price": 1280000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیده سبزیجات ", + "description": "", + "short_description": "", + "category": { + "$oid": "6398a0a482d7fc8d726a7f22" + }, + "index": 4, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1701534236314.png", + "created_at": { + "$date": "2023-12-02T16:23:59.811Z" + }, + "updated_at": { + "$date": "2023-12-02T16:23:59.811Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "656b5ab98c7e0ed750eaddc9" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیده اسفناج و تخم مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "6398a0a482d7fc8d726a7f22" + }, + "index": 5, + "storeId": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "image": "food_1701534392361.png", + "created_at": { + "$date": "2023-12-02T16:26:33.737Z" + }, + "updated_at": { + "$date": "2023-12-02T16:33:47.797Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "657357878c7e0ed750eb7961" + }, + "price": 4530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماشروم برگر", + "description": "نان برگر ،برگر 150 گرمی ، پنیر گودا ،سس قارچ،کاهو لوتوس،گوجه فرنگی، ساید سالاد و سیب زمینی(سرو سالن)", + "short_description": "", + "category": { + "$oid": "6207a2681ee4b0270db4c429" + }, + "index": 4, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2023-12-08T17:51:03.532Z" + }, + "updated_at": { + "$date": "2025-12-25T12:33:20.291Z" + }, + "__v": 0, + "image": "food_1729756411302.png" +}, +{ + "_id": { + "$oid": "657c55ae8c7e0ed750ec0b5d" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ویکتوریا تک نفره Victoria ", + "description": "لیمو چای ترش وانیل", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 2, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-12-15T13:33:34.721Z" + }, + "updated_at": { + "$date": "2024-05-16T09:57:20.427Z" + }, + "__v": 0, + "image": "food_1715853437636.png" +}, +{ + "_id": { + "$oid": "657c57f58c7e0ed750ec0da2" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیزن موهیتو - season mojito", + "description": "پرتقال / توت فرنگی / هندوانه / کیوی / نارنگی ", + "short_description": "", + "category": { + "$oid": "61b1a1a2fc1eece3d7626383" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-12-15T13:43:17.137Z" + }, + "updated_at": { + "$date": "2025-09-29T10:31:07.314Z" + }, + "__v": 0, + "image": "food_1715790991573.png" +}, +{ + "_id": { + "$oid": "657c5a548c7e0ed750ec0f17" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ویکتوریا دو نفره Victoria ", + "description": "چای ترش لیمو وانیل ", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2023-12-15T13:53:24.954Z" + }, + "updated_at": { + "$date": "2024-05-16T09:56:51.406Z" + }, + "__v": 0, + "image": "food_1715853408811.png" +}, +{ + "_id": { + "$oid": "658aa88ac14e0a00575f249f" + }, + "price": 4600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیر و استیک", + "description": "سس سیر.پنیر پیتزا.فیله گوساله طعم دار شده با سیر.ارگانو.شات سس کچاپ", + "short_description": "", + "category": { + "$oid": "6519720759383e8d7551df62" + }, + "index": 7, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-12-26T10:18:50.283Z" + }, + "updated_at": { + "$date": "2025-06-28T15:53:04.800Z" + }, + "__v": 0, + "image": "food_1705685396897.png" +}, +{ + "_id": { + "$oid": "658ec595c14e0a00575f7a6b" + }, + "price": 6300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک ماهیچه گوسفندی", + "description": "ماهیچه بره ارام پخته شده در کره و روغن/سس پیاز فرانسوی/دورچین", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2023-12-29T13:11:49.915Z" + }, + "updated_at": { + "$date": "2024-10-10T17:19:16.752Z" + }, + "__v": 0, + "image": "food_1705681718685.png" +}, +{ + "_id": { + "$oid": "65aa9ffdcff12d007b2b7ce0" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن پنیری", + "description": "", + "short_description": "", + "category": { + "$oid": "651971c059383e8d7551df47" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1705680891927.png", + "created_at": { + "$date": "2024-01-19T16:14:53.869Z" + }, + "updated_at": { + "$date": "2024-10-11T16:52:06.206Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4392b45700b0061064c17" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو سینگل عربیکا", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:03:55.871Z" + }, + "updated_at": { + "$date": "2025-07-15T10:45:10.025Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4394945700b0061064c21" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو دوبل روبوستا", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 3, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:04:25.920Z" + }, + "updated_at": { + "$date": "2025-07-15T10:45:31.602Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4396945700b0061064c2b" + }, + "price": 760000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو عربیکا", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 4, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:04:57.186Z" + }, + "updated_at": { + "$date": "2025-07-15T10:50:06.128Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4398745700b0061064c35" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 5, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:05:27.888Z" + }, + "updated_at": { + "$date": "2025-07-15T10:45:51.909Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4399a45700b0061064c3f" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:05:46.935Z" + }, + "updated_at": { + "$date": "2025-07-15T10:47:29.143Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f439b645700b0061064c49" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 6, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:06:14.409Z" + }, + "updated_at": { + "$date": "2025-07-15T10:46:42.497Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f43a2845700b0061064c61" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو ", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 8, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:08:08.287Z" + }, + "updated_at": { + "$date": "2025-07-15T10:47:44.924Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f43a5945700b0061064c7d" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 9, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:08:57.052Z" + }, + "updated_at": { + "$date": "2025-07-15T10:47:10.708Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f43a7045700b0061064c8a" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 10, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:09:20.489Z" + }, + "updated_at": { + "$date": "2025-07-15T10:00:30.804Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f43a8f45700b0061064c94" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیرکاکائو", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 11, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:09:51.333Z" + }, + "updated_at": { + "$date": "2025-07-15T10:00:18.841Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f43aa545700b0061064ca7" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 12, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:10:13.575Z" + }, + "updated_at": { + "$date": "2025-07-15T10:00:00.526Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f43abe45700b0061064cb1" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیرعسل", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 13, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:10:38.597Z" + }, + "updated_at": { + "$date": "2025-07-15T09:59:25.257Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f43d0545700b0061064cbe" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر نسکافه", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 14, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:20:21.033Z" + }, + "updated_at": { + "$date": "2025-07-15T09:59:37.296Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f43d2845700b0061064cc8" + }, + "price": 660000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو 50/50", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 15, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:20:56.107Z" + }, + "updated_at": { + "$date": "2025-07-15T09:55:40.167Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f43e5f45700b0061064cf2" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 18, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:26:07.650Z" + }, + "updated_at": { + "$date": "2025-07-15T09:54:24.183Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4436b45700b0061064d68" + }, + "price": 280000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436d045700b0061064b94" + }, + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:47:39.486Z" + }, + "updated_at": { + "$date": "2025-07-15T09:52:35.567Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4440745700b0061064d8d" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436d045700b0061064b94" + }, + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T12:50:15.899Z" + }, + "updated_at": { + "$date": "2025-07-15T09:52:17.381Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4473145700b0061064de0" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای نعنا", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436d045700b0061064b94" + }, + "index": 3, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:03:45.045Z" + }, + "updated_at": { + "$date": "2025-07-15T09:52:06.102Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4474a45700b0061064ded" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای هل", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436d045700b0061064b94" + }, + "index": 4, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:04:10.414Z" + }, + "updated_at": { + "$date": "2025-07-15T09:51:54.268Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4476045700b0061064df7" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436d045700b0061064b94" + }, + "index": 5, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:04:32.172Z" + }, + "updated_at": { + "$date": "2025-07-15T09:51:42.235Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4477745700b0061064e01" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436d045700b0061064b94" + }, + "index": 6, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:04:55.484Z" + }, + "updated_at": { + "$date": "2025-07-15T09:51:25.118Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4479045700b0061064e0b" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436d045700b0061064b94" + }, + "index": 7, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:05:20.113Z" + }, + "updated_at": { + "$date": "2025-07-15T09:51:10.169Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f447a545700b0061064e15" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر گرم", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 8, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:05:41.997Z" + }, + "updated_at": { + "$date": "2025-07-15T09:50:53.464Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f448a045700b0061064e23" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش مخصوص میلکو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436e045700b0061064b9d" + }, + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:09:52.082Z" + }, + "updated_at": { + "$date": "2025-07-15T09:49:56.228Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f448b445700b0061064e2d" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش گل گاوزبان", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436e045700b0061064b9d" + }, + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:10:12.191Z" + }, + "updated_at": { + "$date": "2025-07-15T09:49:32.592Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f448cb45700b0061064e37" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش به لیمو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436e045700b0061064b9d" + }, + "index": 3, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:10:35.082Z" + }, + "updated_at": { + "$date": "2025-07-15T09:49:18.047Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f448de45700b0061064e41" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش سیب دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436e045700b0061064b9d" + }, + "index": 4, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:10:54.401Z" + }, + "updated_at": { + "$date": "2025-07-15T09:49:04.050Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f448f445700b0061064e4b" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش آویشن و عسل", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436e045700b0061064b9d" + }, + "index": 5, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:11:16.500Z" + }, + "updated_at": { + "$date": "2025-07-15T09:48:50.133Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4490545700b0061064e55" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش آرامش میلکو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436e045700b0061064b9d" + }, + "index": 6, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:11:33.764Z" + }, + "updated_at": { + "$date": "2025-07-15T09:48:25.904Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4492645700b0061064e5f" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک اسنیکرز", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:12:06.661Z" + }, + "updated_at": { + "$date": "2025-07-15T09:48:02.480Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4494b45700b0061064e69" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:12:43.903Z" + }, + "updated_at": { + "$date": "2025-07-15T09:47:37.532Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f44feb45700b0061064eb0" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک شکلات ", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 3, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:40:59.476Z" + }, + "updated_at": { + "$date": "2025-07-15T09:47:17.818Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4500045700b0061064eba" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 4, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:41:20.128Z" + }, + "updated_at": { + "$date": "2025-07-15T09:46:59.951Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4501345700b0061064ec4" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 5, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:41:39.509Z" + }, + "updated_at": { + "$date": "2025-07-15T09:46:39.821Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4502945700b0061064ece" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک توت فرنگی نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 6, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:42:01.124Z" + }, + "updated_at": { + "$date": "2025-07-15T09:46:21.892Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4503945700b0061064ed8" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "معجون", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 7, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:42:17.597Z" + }, + "updated_at": { + "$date": "2025-07-15T09:45:52.028Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4504f45700b0061064ee2" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 8, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:42:39.689Z" + }, + "updated_at": { + "$date": "2025-07-15T09:45:35.742Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f450be45700b0061064f07" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:44:30.511Z" + }, + "updated_at": { + "$date": "2025-07-15T09:45:00.142Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f450df45700b0061064f11" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیکو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:45:03.610Z" + }, + "updated_at": { + "$date": "2025-07-15T09:44:46.929Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4513f45700b0061064f28" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "منگوهاوایی", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 4, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:46:39.404Z" + }, + "updated_at": { + "$date": "2025-07-15T09:44:08.254Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4515b45700b0061064f32" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پانچ بهار", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 5, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:47:07.013Z" + }, + "updated_at": { + "$date": "2025-07-15T09:43:47.794Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4517045700b0061064f3c" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شربت شیراز", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 6, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:47:28.209Z" + }, + "updated_at": { + "$date": "2025-07-15T09:43:34.143Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4521b45700b0061064f4c" + }, + "price": 2150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:50:19.560Z" + }, + "updated_at": { + "$date": "2025-07-15T09:43:15.508Z" + }, + "__v": 0, + "image": "food_1714229914645.png" +}, +{ + "_id": { + "$oid": "65f4523b45700b0061064f59" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": " برگر الفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:50:51.696Z" + }, + "updated_at": { + "$date": "2025-07-15T09:43:01.365Z" + }, + "__v": 0, + "image": "food_1714229843007.png" +}, +{ + "_id": { + "$oid": "65f4528145700b0061064f63" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میلکو برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 3, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:52:01.934Z" + }, + "updated_at": { + "$date": "2025-07-15T09:42:23.257Z" + }, + "__v": 0, + "image": "food_1714229794246.png" +}, +{ + "_id": { + "$oid": "65f4532d45700b0061064f88" + }, + "price": 2650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 4, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:54:53.155Z" + }, + "updated_at": { + "$date": "2025-07-13T12:27:30.699Z" + }, + "__v": 0, + "image": "food_1714229694410.png" +}, +{ + "_id": { + "$oid": "65f4534f45700b0061064fad" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هالوپینو برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 5, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:55:27.063Z" + }, + "updated_at": { + "$date": "2025-07-13T12:27:00.002Z" + }, + "__v": 0, + "image": "food_1714229659721.png" +}, +{ + "_id": { + "$oid": "65f4536d45700b0061064fd5" + }, + "price": 2380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "باربیکیو برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 6, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:55:57.239Z" + }, + "updated_at": { + "$date": "2025-07-13T12:26:40.859Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f4538145700b0061064fe2" + }, + "price": 2150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 7, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:56:17.924Z" + }, + "updated_at": { + "$date": "2025-07-13T12:26:25.183Z" + }, + "__v": 0, + "image": "food_1714229555597.png" +}, +{ + "_id": { + "$oid": "65f4539745700b0061064fef" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر آلفردو (سس قارچ)", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 8, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:56:39.377Z" + }, + "updated_at": { + "$date": "2025-07-13T12:26:08.894Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f453b145700b006106500e" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4373d45700b0061064bc7" + }, + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:57:05.647Z" + }, + "updated_at": { + "$date": "2025-07-13T12:25:46.016Z" + }, + "__v": 0, + "image": "food_1714231997120.png" +}, +{ + "_id": { + "$oid": "65f453ea45700b006106502b" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ باربیکیو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4373d45700b0061064bc7" + }, + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:58:02.794Z" + }, + "updated_at": { + "$date": "2025-07-13T12:25:28.125Z" + }, + "__v": 0, + "image": "food_1714231799092.png" +}, +{ + "_id": { + "$oid": "65f4540345700b0061065035" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ قارچ و پنیر", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4373d45700b0061064bc7" + }, + "index": 3, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:58:27.225Z" + }, + "updated_at": { + "$date": "2025-07-13T12:25:11.140Z" + }, + "__v": 0, + "image": "food_1714231644573.png" +}, +{ + "_id": { + "$oid": "65f4543345700b006106504c" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ مخصوص میلکو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4373d45700b0061064bc7" + }, + "index": 4, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:59:15.757Z" + }, + "updated_at": { + "$date": "2025-07-13T12:24:52.205Z" + }, + "__v": 0, + "image": "food_1714231434599.png" +}, +{ + "_id": { + "$oid": "65f4545445700b006106505f" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ هالوپینو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4373d45700b0061064bc7" + }, + "index": 5, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T13:59:48.234Z" + }, + "updated_at": { + "$date": "2025-07-13T12:24:35.075Z" + }, + "__v": 0, + "image": "food_1714231390596.png" +}, +{ + "_id": { + "$oid": "65f4547545700b0061065069" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکتل ساده ", + "description": "خیار شور گوجه کاهو", + "short_description": "", + "category": { + "$oid": "65f4375845700b0061064bd0" + }, + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:00:21.587Z" + }, + "updated_at": { + "$date": "2025-07-13T12:24:00.973Z" + }, + "__v": 0, + "image": "food_1714232175149.png" +}, +{ + "_id": { + "$oid": "65f4597e45700b00610650cb" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تک لقمه ساده", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4375845700b0061064bd0" + }, + "index": 4, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:21:50.585Z" + }, + "updated_at": { + "$date": "2025-07-13T12:23:17.318Z" + }, + "__v": 0, + "image": "food_1714232152695.png" +}, +{ + "_id": { + "$oid": "65f4599245700b00610650d5" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تک لقمه مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4375845700b0061064bd0" + }, + "index": 5, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:22:10.914Z" + }, + "updated_at": { + "$date": "2025-07-13T12:23:00.478Z" + }, + "__v": 0, + "image": "food_1714232119536.png" +}, +{ + "_id": { + "$oid": "65f459a745700b00610650df" + }, + "price": 2300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بال و کتف سوخاری۷تکه", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4377d45700b0061064be5" + }, + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:22:31.924Z" + }, + "updated_at": { + "$date": "2025-07-13T12:22:00.561Z" + }, + "__v": 0, + "image": "food_1714233976658.png" +}, +{ + "_id": { + "$oid": "65f459be45700b00610650e9" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بال و کتف۹تکه +سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4377d45700b0061064be5" + }, + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:22:54.343Z" + }, + "updated_at": { + "$date": "2025-07-13T12:21:42.928Z" + }, + "__v": 0, + "image": "food_1714233954479.png" +}, +{ + "_id": { + "$oid": "65f459d945700b00610650f3" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله سوخاری ۳ تیکه", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4377d45700b0061064be5" + }, + "index": 3, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:23:21.207Z" + }, + "updated_at": { + "$date": "2025-07-13T12:21:14.939Z" + }, + "__v": 0, + "image": "food_1714233374520.png" +}, +{ + "_id": { + "$oid": "65f459ec45700b00610650fd" + }, + "price": 2750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله سوخاری ۵ تیکه با سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4377d45700b0061064be5" + }, + "index": 4, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:23:40.427Z" + }, + "updated_at": { + "$date": "2025-07-13T12:20:53.931Z" + }, + "__v": 0, + "image": "food_1714233347221.png" +}, +{ + "_id": { + "$oid": "65f45a0145700b0061065107" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله سوخاری ۷ تیکه با سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4377d45700b0061064be5" + }, + "index": 5, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:24:01.953Z" + }, + "updated_at": { + "$date": "2025-07-13T12:19:25.894Z" + }, + "__v": 0, + "image": "food_1714233322046.png" +}, +{ + "_id": { + "$oid": "65f45a3045700b006106511b" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی ساده (متوسط)", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:24:48.989Z" + }, + "updated_at": { + "$date": "2025-07-13T12:18:40.192Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f45a4845700b0061065125" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی ساده (بزرگ)", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:25:12.753Z" + }, + "updated_at": { + "$date": "2025-07-13T12:18:11.088Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f45a7b45700b006106512f" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوسیس سیب زمینی با دیپ گودا(متوسط)", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 3, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:26:03.897Z" + }, + "updated_at": { + "$date": "2025-07-13T12:17:14.624Z" + }, + "__v": 0, + "image": "food_1714233563859.png" +}, +{ + "_id": { + "$oid": "65f45a8d45700b0061065139" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوسیس سیب زمینی با دیپ گودا (بزرگ)", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 4, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:26:21.326Z" + }, + "updated_at": { + "$date": "2025-07-13T12:17:33.121Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f45aa245700b0061065143" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی با ژامبون دیپ پنیر گودا (بزرگ)", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 5, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:26:42.027Z" + }, + "updated_at": { + "$date": "2025-07-13T12:15:51.865Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f45aba45700b006106514d" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی با ژامبون و دیپ پنیر گودا ( متوسط)", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 6, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:27:06.981Z" + }, + "updated_at": { + "$date": "2025-07-13T12:15:23.855Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "65f45afb45700b0061065157" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی آلفردو متوسط", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 7, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:28:11.325Z" + }, + "updated_at": { + "$date": "2025-07-13T12:14:26.976Z" + }, + "__v": 0, + "image": "food_1714233584644.png" +}, +{ + "_id": { + "$oid": "65f45b1145700b0061065161" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی آلفردو بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 8, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-03-15T14:28:33.224Z" + }, + "updated_at": { + "$date": "2025-07-13T12:14:07.521Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6601c75945700b00610739be" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس چیلی تای", + "description": "", + "short_description": "", + "category": { + "$oid": "6519819c59383e8d7551e1be" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1711392599728.png", + "created_at": { + "$date": "2024-03-25T18:50:01.199Z" + }, + "updated_at": { + "$date": "2025-03-31T14:39:38.097Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "660316bf45700b006107527f" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رول سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "6519730759383e8d7551df92" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1711478461824.png", + "created_at": { + "$date": "2024-03-26T18:41:03.159Z" + }, + "updated_at": { + "$date": "2025-03-31T14:39:23.272Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661953c845700b006108c895" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو سینگل", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:31:20.140Z" + }, + "updated_at": { + "$date": "2024-04-12T15:31:20.140Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661953f245700b006108c8a9" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو دوبل", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:32:02.453Z" + }, + "updated_at": { + "$date": "2024-04-12T15:32:02.453Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619557145700b006108c904" + }, + "price": 6250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استیک مرغ.. chicken steak ", + "description": "سینه ی مرغ /سیب زمینی تنوری/سبزیجات و صیفی جات بخار پز/سس قارچ..chicken breast/roast potatoes/steamed vegetables/steamed summer crops/ mushroom sauce ", + "short_description": "", + "category": { + "$oid": "61ac5f9b26d2e0e4fbd9b3fe" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-04-12T15:38:25.982Z" + }, + "updated_at": { + "$date": "2025-12-04T11:51:47.455Z" + }, + "__v": 0, + "image": "food_1715700983206.png" +}, +{ + "_id": { + "$oid": "661955d045700b006108c914" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو روبوستا", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 0, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:40:00.530Z" + }, + "updated_at": { + "$date": "2024-04-12T15:40:00.530Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619566d45700b006108c924" + }, + "price": 470000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 0, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:42:37.859Z" + }, + "updated_at": { + "$date": "2024-04-12T15:42:37.859Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619569845700b006108c92e" + }, + "price": 460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 0, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:43:20.566Z" + }, + "updated_at": { + "$date": "2024-04-12T15:43:20.566Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661956cb45700b006108c93b" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 0, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:44:11.246Z" + }, + "updated_at": { + "$date": "2024-04-12T15:44:11.246Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661957eb45700b006108c951" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 8, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:48:59.805Z" + }, + "updated_at": { + "$date": "2024-04-12T15:48:59.805Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619587c45700b006108c98b" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 8, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:51:24.306Z" + }, + "updated_at": { + "$date": "2024-04-12T15:51:24.306Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619595045700b006108c9ad" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 9, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:54:56.713Z" + }, + "updated_at": { + "$date": "2024-04-12T15:54:56.713Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619599c45700b006108c9c3" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 10, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:56:12.852Z" + }, + "updated_at": { + "$date": "2024-04-12T15:56:12.852Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661959e945700b006108c9da" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 12, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:57:29.005Z" + }, + "updated_at": { + "$date": "2024-04-12T15:57:29.005Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195a2d45700b006108c9ea" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619523245700b006108c824" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:58:37.461Z" + }, + "updated_at": { + "$date": "2024-04-12T15:58:37.461Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195a5945700b006108c9f7" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619523245700b006108c824" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T15:59:21.343Z" + }, + "updated_at": { + "$date": "2024-04-12T15:59:21.343Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195a8d45700b006108ca1f" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر کاکائو", + "description": "", + "short_description": "", + "category": { + "$oid": "6619523245700b006108c824" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:00:13.878Z" + }, + "updated_at": { + "$date": "2024-04-12T16:00:13.878Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195afc45700b006108ca4b" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619523245700b006108c824" + }, + "index": 5, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:02:04.711Z" + }, + "updated_at": { + "$date": "2024-04-12T16:02:04.711Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195c3f45700b006108ca7f" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر عسل", + "description": "", + "short_description": "", + "category": { + "$oid": "6619523245700b006108c824" + }, + "index": 6, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:07:27.760Z" + }, + "updated_at": { + "$date": "2024-04-12T16:07:27.760Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195c8545700b006108ca95" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر نسکافه کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619523245700b006108c824" + }, + "index": 7, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:08:37.664Z" + }, + "updated_at": { + "$date": "2024-04-12T16:08:37.664Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195caf45700b006108ca9f" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر نسکافه بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619523245700b006108c824" + }, + "index": 8, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:09:19.682Z" + }, + "updated_at": { + "$date": "2024-04-12T16:09:19.682Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195cef45700b006108cab2" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دارک چاکلت کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619523245700b006108c824" + }, + "index": 9, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:10:23.796Z" + }, + "updated_at": { + "$date": "2024-04-12T16:10:23.796Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195d1245700b006108cabf" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دارک چاکلت بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619523245700b006108c824" + }, + "index": 10, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:10:58.847Z" + }, + "updated_at": { + "$date": "2024-04-12T16:10:58.847Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195dc345700b006108cad2" + }, + "price": 460000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "661952b045700b006108c839" + }, + "index": 0, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:13:55.478Z" + }, + "updated_at": { + "$date": "2024-04-12T16:13:55.478Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195dec45700b006108cadc" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "661952b045700b006108c839" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:14:36.429Z" + }, + "updated_at": { + "$date": "2024-04-12T16:14:36.429Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195e0d45700b006108cae9" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "661952b045700b006108c839" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:15:09.633Z" + }, + "updated_at": { + "$date": "2024-04-12T16:15:09.633Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195e2e45700b006108caf3" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "661952b045700b006108c839" + }, + "index": 4, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:15:42.127Z" + }, + "updated_at": { + "$date": "2024-04-12T16:15:42.127Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195f3245700b006108cb3f" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گل گاوزبان کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619527445700b006108c82d" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:20:02.730Z" + }, + "updated_at": { + "$date": "2024-04-12T16:20:02.730Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195f5645700b006108cb5e" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گل گاوزبان بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619527445700b006108c82d" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:20:38.652Z" + }, + "updated_at": { + "$date": "2024-04-12T16:20:38.652Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195f7645700b006108cb68" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "به لیمو کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619527445700b006108c82d" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:21:10.885Z" + }, + "updated_at": { + "$date": "2024-04-12T16:21:10.885Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195f9745700b006108cb72" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "به لیمو بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619527445700b006108c82d" + }, + "index": 4, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:21:43.398Z" + }, + "updated_at": { + "$date": "2024-04-12T16:21:43.398Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195fbe45700b006108cb91" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب دارچین کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619527445700b006108c82d" + }, + "index": 5, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:22:22.475Z" + }, + "updated_at": { + "$date": "2024-04-12T16:22:22.475Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66195fde45700b006108cb9e" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب دارچین بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619527445700b006108c82d" + }, + "index": 6, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:22:54.563Z" + }, + "updated_at": { + "$date": "2024-04-12T16:22:54.563Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619600b45700b006108cba8" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آویشن عسل کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619527445700b006108c82d" + }, + "index": 7, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:23:39.788Z" + }, + "updated_at": { + "$date": "2024-04-12T16:23:39.788Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619603545700b006108cbbb" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آویشن عسل بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619527445700b006108c82d" + }, + "index": 8, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:24:21.392Z" + }, + "updated_at": { + "$date": "2024-04-12T16:24:21.392Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619626f45700b006108cc52" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مخصوص کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619527445700b006108c82d" + }, + "index": 9, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:33:51.033Z" + }, + "updated_at": { + "$date": "2024-04-12T16:33:51.033Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619629245700b006108cc5c" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مخصوص بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619527445700b006108c82d" + }, + "index": 10, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:34:26.564Z" + }, + "updated_at": { + "$date": "2024-04-12T16:34:26.564Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661962c445700b006108cc66" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "منگو هاوایی", + "description": "", + "short_description": "", + "category": { + "$oid": "661952f345700b006108c845" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:35:16.203Z" + }, + "updated_at": { + "$date": "2024-04-12T16:35:16.203Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661962e345700b006108cc70" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پانچ بهاری", + "description": "", + "short_description": "", + "category": { + "$oid": "661952f345700b006108c845" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:35:47.691Z" + }, + "updated_at": { + "$date": "2024-04-12T16:35:47.691Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619631445700b006108cc7d" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شربت شیراز", + "description": "", + "short_description": "", + "category": { + "$oid": "661952f345700b006108c845" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:36:36.664Z" + }, + "updated_at": { + "$date": "2024-04-12T16:36:36.664Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619635e45700b006108cc8a" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ساده کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:37:50.099Z" + }, + "updated_at": { + "$date": "2024-04-12T16:37:50.099Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619637f45700b006108cc97" + }, + "price": 230000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ساده بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:38:23.883Z" + }, + "updated_at": { + "$date": "2024-04-12T16:38:23.883Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661963aa45700b006108ccad" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای زعفران کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:39:06.773Z" + }, + "updated_at": { + "$date": "2024-04-12T16:39:06.773Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661963cf45700b006108ccc0" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای زعفران بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 4, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:39:43.702Z" + }, + "updated_at": { + "$date": "2024-04-12T16:39:43.702Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661963fe45700b006108cce2" + }, + "price": 220000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای نعنا کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 5, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:40:30.205Z" + }, + "updated_at": { + "$date": "2024-04-12T16:40:30.205Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619642e45700b006108cd13" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای نعنا بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 6, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:41:18.691Z" + }, + "updated_at": { + "$date": "2024-04-12T16:41:18.691Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619645245700b006108cd2c" + }, + "price": 220000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای هل کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 7, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:41:54.785Z" + }, + "updated_at": { + "$date": "2024-04-12T16:41:54.785Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619647e45700b006108cd45" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای هل بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 8, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:42:38.634Z" + }, + "updated_at": { + "$date": "2024-04-12T16:42:38.634Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661964ac45700b006108cd5b" + }, + "price": 220000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای دارچین کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 9, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:43:24.158Z" + }, + "updated_at": { + "$date": "2024-04-12T16:43:24.158Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661964e145700b006108cd80" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای دارچین بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 10, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:44:17.271Z" + }, + "updated_at": { + "$date": "2024-04-12T16:44:17.271Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619652a45700b006108cd99" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 11, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:45:30.542Z" + }, + "updated_at": { + "$date": "2024-04-12T16:45:30.542Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619654f45700b006108cda9" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 12, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:46:07.286Z" + }, + "updated_at": { + "$date": "2024-04-12T16:46:07.286Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619657645700b006108cdb6" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ترش کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 13, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:46:46.181Z" + }, + "updated_at": { + "$date": "2024-04-12T16:46:46.181Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661965a545700b006108cdc7" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ترش بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 14, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:47:33.849Z" + }, + "updated_at": { + "$date": "2024-04-12T16:47:33.849Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661965cf45700b006108cdd4" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر چای کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 15, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:48:15.947Z" + }, + "updated_at": { + "$date": "2024-04-12T16:48:15.947Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661965f745700b006108cdea" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر چای بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619531845700b006108c84e" + }, + "index": 16, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:48:55.036Z" + }, + "updated_at": { + "$date": "2024-04-12T16:48:55.036Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619665f45700b006108ce0d" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "6619662545700b006108cdf7" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:50:39.389Z" + }, + "updated_at": { + "$date": "2024-04-12T16:50:39.389Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619667e45700b006108ce17" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک اسنیکرز", + "description": "", + "short_description": "", + "category": { + "$oid": "6619662545700b006108cdf7" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:51:10.159Z" + }, + "updated_at": { + "$date": "2024-04-12T16:51:10.159Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661966a145700b006108ce2a" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "6619662545700b006108cdf7" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:51:45.759Z" + }, + "updated_at": { + "$date": "2024-04-12T16:51:45.759Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661966c845700b006108ce40" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "6619662545700b006108cdf7" + }, + "index": 4, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:52:24.353Z" + }, + "updated_at": { + "$date": "2024-04-12T16:52:24.353Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619672745700b006108ce6f" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک نوتلا توت فرنگی ", + "description": "", + "short_description": "", + "category": { + "$oid": "6619662545700b006108cdf7" + }, + "index": 6, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:53:59.062Z" + }, + "updated_at": { + "$date": "2024-04-12T16:53:59.062Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619676b45700b006108ce82" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک معجون", + "description": "", + "short_description": "", + "category": { + "$oid": "6619662545700b006108cdf7" + }, + "index": 7, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:55:07.123Z" + }, + "updated_at": { + "$date": "2024-04-12T16:55:07.123Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619678445700b006108ce8c" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک کوکی", + "description": "", + "short_description": "", + "category": { + "$oid": "6619662545700b006108cdf7" + }, + "index": 8, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T16:55:32.630Z" + }, + "updated_at": { + "$date": "2024-04-12T16:55:32.630Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619691245700b006108cf31" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6618e55545700b006108be13" + }, + "index": 11, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T17:02:10.732Z" + }, + "updated_at": { + "$date": "2024-04-12T17:02:10.732Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6619693545700b006108cf41" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6619523245700b006108c824" + }, + "index": 11, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-12T17:02:45.077Z" + }, + "updated_at": { + "$date": "2024-04-12T17:02:45.077Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661c1d8245700b006108fdc0" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "6619662545700b006108cdf7" + }, + "index": 5, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-14T18:16:34.797Z" + }, + "updated_at": { + "$date": "2024-04-14T18:16:34.797Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "661c1da045700b006108fdd9" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "6619662545700b006108cdf7" + }, + "index": 9, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-14T18:17:04.784Z" + }, + "updated_at": { + "$date": "2024-04-14T18:17:04.784Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627e1027d6ac20062281e18" + }, + "price": 5200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کته جوجه کباب .. chicken kebab & rice/3 skewers ", + "description": "٣ سیخ جوجه کباب/زیتون /سالاد شیرازی/ماست/سبزی خوردن/گوجه کبابی..chicken kebab/shirazi salad/yogurt/vegetable/p/tomato", + "short_description": "", + "category": { + "$oid": "6627dff97d6ac20062281dd2" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-04-23T16:25:38.261Z" + }, + "updated_at": { + "$date": "2025-12-04T11:15:58.460Z" + }, + "__v": 0, + "image": "food_1714079813660.png" +}, +{ + "_id": { + "$oid": "6627e1a47d6ac20062281e4e" + }, + "price": 8800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کته استیک .. fillet steak & rice ", + "description": "فیله استیک،برنج کته ایرانی٫،سیب زمینی تنوری ..steak fillet/iranian rice/meat sauce/roast potatoes ", + "short_description": "", + "category": { + "$oid": "6627dff97d6ac20062281dd2" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-04-23T16:28:20.962Z" + }, + "updated_at": { + "$date": "2025-12-04T11:15:27.591Z" + }, + "__v": 0, + "image": "food_1713941274547.png" +}, +{ + "_id": { + "$oid": "6627e1d47d6ac20062281e6d" + }, + "price": 7700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کته کباب چنجه .. chenjeh kabab & rice ", + "description": "٢ سیخ فیله/سالاد شیرازی/ماست/سبزی خوردن..Iranian rice/2skewers fillet/shirazi salad/yogurt/vegetable", + "short_description": "", + "category": { + "$oid": "6627dff97d6ac20062281dd2" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-04-23T16:29:08.600Z" + }, + "updated_at": { + "$date": "2025-12-04T11:14:59.671Z" + }, + "__v": 0, + "image": "food_1715696779861.png" +}, +{ + "_id": { + "$oid": "6627e4227d6ac20062281f21" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنیر سوخاری .. cheese fries ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ac607926d2e0e4fbd9b465" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-04-23T16:38:58.754Z" + }, + "updated_at": { + "$date": "2025-12-04T11:56:11.387Z" + }, + "__v": 0, + "image": "food_1715934346706.png" +}, +{ + "_id": { + "$oid": "6627f2847d6ac2006228228c" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا پپرونی تک نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0d37d6ac20062282203" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:40:20.601Z" + }, + "updated_at": { + "$date": "2024-04-23T17:40:20.601Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f2b27d6ac20062282296" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا پپرونی دو نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0d37d6ac20062282203" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:41:06.530Z" + }, + "updated_at": { + "$date": "2024-04-23T17:41:06.530Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f2d17d6ac200622822a0" + }, + "price": 2300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا بیکن تک نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0d37d6ac20062282203" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:41:37.171Z" + }, + "updated_at": { + "$date": "2024-04-25T19:05:38.455Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f2f57d6ac200622822ad" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا بیکن دو نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0d37d6ac20062282203" + }, + "index": 4, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:42:13.242Z" + }, + "updated_at": { + "$date": "2024-04-23T17:42:13.242Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f31f7d6ac200622822b7" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا چیکن تک نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0d37d6ac20062282203" + }, + "index": 5, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:42:55.326Z" + }, + "updated_at": { + "$date": "2024-04-25T19:06:36.065Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f34b7d6ac200622822ca" + }, + "price": 3100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا چیکن دو نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0d37d6ac20062282203" + }, + "index": 6, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:43:39.592Z" + }, + "updated_at": { + "$date": "2024-04-23T17:43:39.592Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f37b7d6ac200622822d7" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا رست بیف تک نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0d37d6ac20062282203" + }, + "index": 7, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:44:27.290Z" + }, + "updated_at": { + "$date": "2024-04-23T17:44:27.290Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f39c7d6ac200622822e1" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا رست بیف دو نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0d37d6ac20062282203" + }, + "index": 8, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:45:00.986Z" + }, + "updated_at": { + "$date": "2024-04-23T17:45:00.986Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f4557d6ac20062282300" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا پنیر گردو تک نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0d37d6ac20062282203" + }, + "index": 9, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:48:05.947Z" + }, + "updated_at": { + "$date": "2024-04-23T17:48:05.947Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f4797d6ac20062282322" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا پنیر گردو دو نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0d37d6ac20062282203" + }, + "index": 10, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:48:41.229Z" + }, + "updated_at": { + "$date": "2024-04-23T17:48:41.229Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f4b37d6ac20062282344" + }, + "price": 1280000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نان سیر", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0d37d6ac20062282203" + }, + "index": 11, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:49:39.505Z" + }, + "updated_at": { + "$date": "2024-04-23T17:49:39.505Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f56e7d6ac2006228239c" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0f37d6ac20062282218" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:52:46.679Z" + }, + "updated_at": { + "$date": "2024-04-23T17:52:46.679Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f5b07d6ac200622823b2" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر کلاسیک ذغالی", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0f37d6ac20062282218" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:53:52.606Z" + }, + "updated_at": { + "$date": "2024-04-23T17:53:52.606Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f5e77d6ac200622823f8" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0f37d6ac20062282218" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:54:47.250Z" + }, + "updated_at": { + "$date": "2024-04-23T17:54:47.250Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f6167d6ac20062282408" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز برگر ذغالی", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0f37d6ac20062282218" + }, + "index": 4, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:55:34.240Z" + }, + "updated_at": { + "$date": "2024-04-23T17:55:34.240Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f63e7d6ac20062282427" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هالوپینو برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0f37d6ac20062282218" + }, + "index": 5, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:56:14.391Z" + }, + "updated_at": { + "$date": "2024-04-23T17:56:14.391Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f66a7d6ac2006228244f" + }, + "price": 2050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هالوپینو برگر ذغالی", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0f37d6ac20062282218" + }, + "index": 6, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T17:56:58.198Z" + }, + "updated_at": { + "$date": "2024-04-23T17:56:58.198Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f7457d6ac20062282460" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0f37d6ac20062282218" + }, + "index": 7, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T18:00:37.850Z" + }, + "updated_at": { + "$date": "2024-04-23T18:00:37.850Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f7747d6ac2006228246f" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیکن برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0f37d6ac20062282218" + }, + "index": 8, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T18:01:24.571Z" + }, + "updated_at": { + "$date": "2024-04-23T18:01:24.571Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f7987d6ac20062282479" + }, + "price": 2150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیکن برگر ذغالی", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0f37d6ac20062282218" + }, + "index": 9, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T18:02:00.034Z" + }, + "updated_at": { + "$date": "2024-04-23T18:02:00.034Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f7c17d6ac2006228248f" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر آلفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0f37d6ac20062282218" + }, + "index": 10, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T18:02:41.868Z" + }, + "updated_at": { + "$date": "2024-04-23T18:02:41.868Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6627f7e47d6ac200622824a2" + }, + "price": 2050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر آلفردو ذغالی", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f0f37d6ac20062282218" + }, + "index": 11, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-23T18:03:16.521Z" + }, + "updated_at": { + "$date": "2024-04-23T18:03:16.521Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6628a85e7d6ac20062282cff" + }, + "price": 5100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کته کباب دیگی .. digi kebab & rice ", + "description": "گوشت،سیب زمینی تنوری،گوجه سس کباب دیگی،فلفل دلمه ای،برنج ایرانی ..meat/roast potatoes/tomato/digi kebab sauce/sweet pepper/iranian rice", + "short_description": "", + "category": { + "$oid": "6627dff97d6ac20062281dd2" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "image": "food_1714732721495.png", + "created_at": { + "$date": "2024-04-24T06:36:14.946Z" + }, + "updated_at": { + "$date": "2025-12-04T11:14:35.457Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6629602a7d6ac20062284377" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f1ca7d6ac2006228224e" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-24T19:40:26.957Z" + }, + "updated_at": { + "$date": "2024-04-24T19:40:26.957Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662960c97d6ac2006228438b" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ باربیکیو", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f1ca7d6ac2006228224e" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-24T19:43:05.081Z" + }, + "updated_at": { + "$date": "2024-04-24T19:43:05.081Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662960fb7d6ac2006228439e" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ مجاری", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f1ca7d6ac2006228224e" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-24T19:43:55.502Z" + }, + "updated_at": { + "$date": "2024-04-24T19:43:55.502Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6629611e7d6ac200622843a8" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ هالوپینو", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f1ca7d6ac2006228224e" + }, + "index": 4, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-24T19:44:30.173Z" + }, + "updated_at": { + "$date": "2024-04-24T19:44:30.173Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662962737d6ac200622843eb" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ آلمانی قارچ و پنیر", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f1ee7d6ac20062282257" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-24T19:50:11.096Z" + }, + "updated_at": { + "$date": "2024-04-25T17:50:52.272Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a1cf17d6ac20062284b3e" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کته .. rice ", + "description": "برنج ایرانی ..Iranian rice", + "short_description": "", + "category": { + "$oid": "6627dff97d6ac20062281dd2" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-04-25T09:05:53.164Z" + }, + "updated_at": { + "$date": "2025-12-04T11:13:39.340Z" + }, + "__v": 0, + "image": "food_1714293401098.png" +}, +{ + "_id": { + "$oid": "662a8bd97d6ac20062285d5d" + }, + "price": 13500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "باقالی پلو با گردن دو نفره", + "description": "دو عدد باقالی پلو. گردن با ون 1 کیلوگرم به همراه دورچین کامل", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2024-04-25T16:59:05.978Z" + }, + "updated_at": { + "$date": "2024-09-25T16:40:46.054Z" + }, + "__v": 0, + "image": "food_1714733620233.png" +}, +{ + "_id": { + "$oid": "662a96fb7d6ac2006228614c" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ کوکتل", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f1ee7d6ac20062282257" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T17:46:35.828Z" + }, + "updated_at": { + "$date": "2024-04-25T17:46:35.828Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a97257d6ac20062286162" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ کوکتل قارچ و پنیر", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f1ee7d6ac20062282257" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T17:47:17.406Z" + }, + "updated_at": { + "$date": "2024-04-25T17:47:17.406Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a97477d6ac20062286178" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ آلمانی", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f1ee7d6ac20062282257" + }, + "index": 4, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T17:47:51.497Z" + }, + "updated_at": { + "$date": "2024-04-25T17:47:51.497Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a97a27d6ac2006228618b" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تک لقمه ساده", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f1ee7d6ac20062282257" + }, + "index": 5, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T17:49:22.026Z" + }, + "updated_at": { + "$date": "2024-04-25T17:49:22.026Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a97c87d6ac2006228619b" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تک لقمه مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f1ee7d6ac20062282257" + }, + "index": 6, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T17:50:00.480Z" + }, + "updated_at": { + "$date": "2024-04-25T17:50:00.480Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a982b7d6ac200622861e4" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بال و کتف ۷ تکه", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2047d6ac20062282260" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T17:51:39.455Z" + }, + "updated_at": { + "$date": "2024-04-25T17:51:39.455Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a98597d6ac200622861fa" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بال و کتف ۹ تکه و سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2047d6ac20062282260" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T17:52:25.014Z" + }, + "updated_at": { + "$date": "2024-04-25T17:52:25.014Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a988a7d6ac20062286222" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله سوخاری ۵ تکه و سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2047d6ac20062282260" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T17:53:14.550Z" + }, + "updated_at": { + "$date": "2024-04-25T17:53:14.550Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a98d07d6ac20062286250" + }, + "price": 2150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله سوخاری ۷ تکه و سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2047d6ac20062282260" + }, + "index": 4, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T17:54:24.146Z" + }, + "updated_at": { + "$date": "2024-04-25T17:54:24.146Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a9ae77d6ac2006228638f" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی ساده متوسط", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2207d6ac20062282275" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:03:19.235Z" + }, + "updated_at": { + "$date": "2024-04-25T18:03:19.235Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a9b1c7d6ac200622863cc" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی ساده بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2207d6ac20062282275" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:04:12.572Z" + }, + "updated_at": { + "$date": "2024-04-25T18:04:12.572Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a9b437d6ac20062286403" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی و سوسیس متوسط", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2207d6ac20062282275" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:04:51.605Z" + }, + "updated_at": { + "$date": "2024-04-25T18:04:51.605Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a9b697d6ac20062286425" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی و سوسیس بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2207d6ac20062282275" + }, + "index": 4, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:05:29.611Z" + }, + "updated_at": { + "$date": "2024-04-25T18:05:29.611Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a9b9a7d6ac20062286435" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی و ژامبون متوسط", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2207d6ac20062282275" + }, + "index": 5, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:06:18.080Z" + }, + "updated_at": { + "$date": "2024-04-25T18:06:18.080Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a9bc27d6ac20062286442" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی و ژامبون بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2207d6ac20062282275" + }, + "index": 6, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:06:58.796Z" + }, + "updated_at": { + "$date": "2024-04-25T18:06:58.796Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a9c007d6ac20062286460" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت فرایز متوسط", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2207d6ac20062282275" + }, + "index": 7, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:08:00.098Z" + }, + "updated_at": { + "$date": "2024-04-25T18:10:00.781Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a9c477d6ac20062286491" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت فرایز بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6627f2207d6ac20062282275" + }, + "index": 8, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:09:11.742Z" + }, + "updated_at": { + "$date": "2024-04-25T18:09:11.742Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a9d3c7d6ac20062286501" + }, + "price": 1560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنه آلفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "662a9ce07d6ac200622864dc" + }, + "index": 1, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:13:16.176Z" + }, + "updated_at": { + "$date": "2024-04-25T18:13:16.176Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662a9d637d6ac20062286523" + }, + "price": 1830000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنه گوشت", + "description": "", + "short_description": "", + "category": { + "$oid": "662a9ce07d6ac200622864dc" + }, + "index": 2, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:13:55.941Z" + }, + "updated_at": { + "$date": "2024-08-26T17:51:37.461Z" + }, + "__v": 0, + "image": "food_1724694688777.png" +}, +{ + "_id": { + "$oid": "662a9d927d6ac2006228653f" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنه سبزیجات", + "description": "", + "short_description": "", + "category": { + "$oid": "662a9ce07d6ac200622864dc" + }, + "index": 3, + "storeId": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "created_at": { + "$date": "2024-04-25T18:14:42.404Z" + }, + "updated_at": { + "$date": "2024-04-25T18:14:42.404Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662bfac07d6ac20062288539" + }, + "price": 10300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ریبای استیک . ribeye steak & mushroom sauce ", + "description": "500 گرم گوشت گوساله ،سبزیجات بخار پز،سس قارچ..500g veal meat/steamed vegetables/ mushroom sauce ", + "short_description": "", + "category": { + "$oid": "61ac5f9b26d2e0e4fbd9b3fe" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-04-26T19:04:32.445Z" + }, + "updated_at": { + "$date": "2025-12-04T11:51:17.180Z" + }, + "__v": 0, + "image": "food_1714242244841.png" +}, +{ + "_id": { + "$oid": "662cdbed7d6ac20062288dff" + }, + "price": 4450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه کباب. Chicken kebab/3 skewers ", + "description": "٣ سیخ جوجه/گوجه گیلاسی/سبزی خوردن/سالاد شیرازی/ماست..chicken/tomato/vegetable/shirazi salad/yogurt", + "short_description": "", + "category": { + "$oid": "6627dff97d6ac20062281dd2" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-04-27T11:05:17.223Z" + }, + "updated_at": { + "$date": "2025-12-04T11:13:05.438Z" + }, + "__v": 0, + "image": "food_1715696138450.png" +}, +{ + "_id": { + "$oid": "662d15b97d6ac2006228925d" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رویال برگر ", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 9, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "image": "food_1714230711903.png", + "created_at": { + "$date": "2024-04-27T15:11:53.131Z" + }, + "updated_at": { + "$date": "2025-07-13T12:13:43.948Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662d1bc47d6ac20062289393" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکتل قارچ وپنیر ", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4375845700b0061064bd0" + }, + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-04-27T15:37:40.819Z" + }, + "updated_at": { + "$date": "2025-07-13T12:13:21.574Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662d21f27d6ac20062289619" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میکس برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 10, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "image": "food_1714233840875.png", + "created_at": { + "$date": "2024-04-27T16:04:02.593Z" + }, + "updated_at": { + "$date": "2025-07-13T12:13:01.190Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "662e816c7d6ac2006228b797" + }, + "price": 5580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب پروتئین(رژیمی).. dietetic foods", + "description": "گوشت گوساله،فیله مرغ،بی بی اسفناج،سبزیجات روز،سیب زمینی تنوری،تخم مرغ آب پز،قارچ،سس مخصوص ژیوان..veal/chicken fillet/baby spinach/vegetable/roast potatoes/boiled egg/mushrom/ special Zhivan sauce ", + "short_description": "", + "category": { + "$oid": "61ac5f9b26d2e0e4fbd9b3fe" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-04-28T17:03:40.227Z" + }, + "updated_at": { + "$date": "2025-12-04T11:49:59.648Z" + }, + "__v": 0, + "image": "food_1715701220774.png" +}, +{ + "_id": { + "$oid": "66312e427d6ac2006228ef60" + }, + "price": 10500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کته استیک ریبای . Ribeye steak & rice", + "description": "۵٠٠ گرم گوشت گوساله، برنج ایرانی، سالاد شیرازی، ماست..500g veal meat/iranian rice/shirazi salad/yogurt", + "short_description": "", + "category": { + "$oid": "6627dff97d6ac20062281dd2" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-04-30T17:45:38.868Z" + }, + "updated_at": { + "$date": "2025-12-04T11:12:38.241Z" + }, + "__v": 0, + "image": "food_1715697744094.png" +}, +{ + "_id": { + "$oid": "66365ef17d6ac20062295ecd" + }, + "price": 560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو روبوستا", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 22, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-05-04T16:14:41.238Z" + }, + "updated_at": { + "$date": "2025-07-15T10:49:47.682Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663660217d6ac20062295f4c" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو سینگل روبوستا ", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-05-04T16:19:45.349Z" + }, + "updated_at": { + "$date": "2025-07-15T10:44:50.707Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663661f37d6ac20062296014" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو سینگل 50/50", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 23, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-05-04T16:27:31.552Z" + }, + "updated_at": { + "$date": "2025-07-15T10:44:35.063Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663662167d6ac2006229601e" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو دوبل 50/50", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 24, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-05-04T16:28:06.985Z" + }, + "updated_at": { + "$date": "2025-07-15T10:44:15.467Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663a587b7d6ac20062299f08" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیما...Sima", + "description": "بهارنارنج،تخم شربتی،citrus aurantium/chia/", + "short_description": "", + "category": { + "$oid": "663a58217d6ac20062299ee4" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-05-07T16:36:11.899Z" + }, + "updated_at": { + "$date": "2025-09-29T11:00:13.449Z" + }, + "__v": 0, + "image": "food_1715700359170.png" +}, +{ + "_id": { + "$oid": "663a58b17d6ac20062299f1e" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هما .. Homa", + "description": "خیار،سکنجبین،لیمو..cucumber/ skanjbin/lemon", + "short_description": "", + "category": { + "$oid": "663a58217d6ac20062299ee4" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-05-07T16:37:05.196Z" + }, + "updated_at": { + "$date": "2025-09-29T10:59:40.267Z" + }, + "__v": 0, + "image": "food_1715700302453.png" +}, +{ + "_id": { + "$oid": "663a5ccc7d6ac2006229a03d" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جانا .. Jana", + "description": "زعفران،گل محمدی،تخم شربتی..saffron/damask rose/chia", + "short_description": "", + "category": { + "$oid": "663a58217d6ac20062299ee4" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-05-07T16:54:36.816Z" + }, + "updated_at": { + "$date": "2025-09-29T10:59:24.174Z" + }, + "__v": 0, + "image": "food_1715700257579.png" +}, +{ + "_id": { + "$oid": "663f95297d6ac200622a0bb6" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار گریل", + "description": "", + "short_description": "", + "category": { + "$oid": "663f829e7d6ac200622a0925" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T15:56:25.708Z" + }, + "updated_at": { + "$date": "2024-05-11T15:56:25.708Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f95a47d6ac200622a0bc9" + }, + "price": 2650000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "سالاد سزار دو رول", + "description": "", + "short_description": "", + "category": { + "$oid": "663f829e7d6ac200622a0925" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T15:58:28.179Z" + }, + "updated_at": { + "$date": "2024-05-11T17:28:59.663Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f95e47d6ac200622a0bd5" + }, + "price": 2200000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "فروت سالاد", + "description": "اهو سیب سبز کیوی توت فرنگی سس زرشک و تمشک", + "short_description": "", + "category": { + "$oid": "663f829e7d6ac200622a0925" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T15:59:32.513Z" + }, + "updated_at": { + "$date": "2024-05-12T14:06:26.871Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f96097d6ac200622a0be2" + }, + "price": 1100000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "سالاد مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "663f829e7d6ac200622a0925" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:00:09.520Z" + }, + "updated_at": { + "$date": "2024-05-11T16:00:58.163Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f967b7d6ac200622a0c01" + }, + "price": 2400000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "سالاد بیستکا", + "description": "کاهو فیله گوساله جوانه گندم سس مخصوص", + "short_description": "", + "category": { + "$oid": "663f829e7d6ac200622a0925" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:02:03.607Z" + }, + "updated_at": { + "$date": "2024-05-12T14:05:02.112Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f96ab7d6ac200622a0c0d" + }, + "price": 700000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "سالاد کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "663f829e7d6ac200622a0925" + }, + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:02:51.433Z" + }, + "updated_at": { + "$date": "2024-05-11T16:02:51.433Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f982a7d6ac200622a0ca3" + }, + "price": 2650000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "پاین", + "description": "ژامبون گوشت ٫ فیله مرغ ٫ قارچ ٫ پنیر مخصوص", + "short_description": "", + "category": { + "$oid": "663f97b97d6ac200622a0c62" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:09:14.453Z" + }, + "updated_at": { + "$date": "2024-05-26T11:08:09.532Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9b347d6ac200622a0d5b" + }, + "price": 2650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سه تیکه استریپس", + "description": "", + "short_description": "", + "category": { + "$oid": "663f79ac7d6ac200622a0814" + }, + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:22:12.629Z" + }, + "updated_at": { + "$date": "2024-05-11T16:22:12.629Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9b707d6ac200622a0d81" + }, + "price": 3450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنج تیکه استریپس", + "description": "", + "short_description": "", + "category": { + "$oid": "663f79ac7d6ac200622a0814" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:23:12.957Z" + }, + "updated_at": { + "$date": "2024-05-11T16:23:12.957Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9b9d7d6ac200622a0d8b" + }, + "price": 2450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دبل دان", + "description": "", + "short_description": "", + "category": { + "$oid": "663f79ac7d6ac200622a0814" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:23:57.145Z" + }, + "updated_at": { + "$date": "2024-05-11T16:23:57.145Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9bdf7d6ac200622a0d95" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میگو سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "663f79ac7d6ac200622a0814" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:25:03.938Z" + }, + "updated_at": { + "$date": "2024-05-11T16:25:03.938Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9c0a7d6ac200622a0d9f" + }, + "price": 2850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب سوخاری", + "description": "2فیله مرغ 5قارچ سوخاری 2پیازحلقه سیب سوخاری", + "short_description": "", + "category": { + "$oid": "663f79ac7d6ac200622a0814" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:25:46.828Z" + }, + "updated_at": { + "$date": "2024-05-20T17:55:25.207Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9c437d6ac200622a0db2" + }, + "price": 2650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیف آلفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f80159383e8d7553efcf" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:26:43.215Z" + }, + "updated_at": { + "$date": "2024-05-11T16:26:43.215Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9c757d6ac200622a0dc2" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پستو", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f80159383e8d7553efcf" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:27:33.926Z" + }, + "updated_at": { + "$date": "2024-05-11T16:27:33.926Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9c9d7d6ac200622a0dcf" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لازانیا", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f80159383e8d7553efcf" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:28:13.914Z" + }, + "updated_at": { + "$date": "2024-05-11T16:28:13.914Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9cce7d6ac200622a0ddc" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز پاستا", + "description": "پنه سس مارتیارا سس قارچ پستو سس ریحان و مرغ", + "short_description": "", + "category": { + "$oid": "6537f80159383e8d7553efcf" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:29:02.971Z" + }, + "updated_at": { + "$date": "2024-05-12T14:10:58.965Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9d007d6ac200622a0de6" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیده گوشت", + "description": "", + "short_description": "", + "category": { + "$oid": "663f7b2c7d6ac200622a0843" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:29:52.087Z" + }, + "updated_at": { + "$date": "2024-05-11T16:29:52.087Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9d277d6ac200622a0df9" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیده مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "663f7b2c7d6ac200622a0843" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:30:31.305Z" + }, + "updated_at": { + "$date": "2024-05-11T16:30:31.305Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9d497d6ac200622a0e06" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وجترین", + "description": "", + "short_description": "", + "category": { + "$oid": "663f7b2c7d6ac200622a0843" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:31:05.154Z" + }, + "updated_at": { + "$date": "2024-05-11T16:31:05.154Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9d817d6ac200622a0e19" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیف استروگانف", + "description": "", + "short_description": "", + "category": { + "$oid": "663f7a717d6ac200622a0833" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:32:01.035Z" + }, + "updated_at": { + "$date": "2024-05-11T16:32:01.035Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9da87d6ac200622a0e2f" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن", + "description": "", + "short_description": "", + "category": { + "$oid": "663f7a717d6ac200622a0833" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:32:40.725Z" + }, + "updated_at": { + "$date": "2024-05-11T16:32:40.725Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9e197d6ac200622a0e42" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس سزار", + "description": "", + "short_description": "", + "category": { + "$oid": "64e848ce59383e8d754e920b" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:34:33.107Z" + }, + "updated_at": { + "$date": "2024-05-11T16:34:33.107Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9e3e7d6ac200622a0e52" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس قارچ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e848ce59383e8d754e920b" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:35:10.253Z" + }, + "updated_at": { + "$date": "2024-05-11T16:35:10.253Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9e647d6ac200622a0e62" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس دیپ", + "description": "", + "short_description": "", + "category": { + "$oid": "64e848ce59383e8d754e920b" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:35:48.289Z" + }, + "updated_at": { + "$date": "2024-05-11T16:35:48.289Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9e8c7d6ac200622a0e75" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس پستو", + "description": "", + "short_description": "", + "category": { + "$oid": "64e848ce59383e8d754e920b" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:36:28.045Z" + }, + "updated_at": { + "$date": "2024-05-11T16:36:28.045Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9eae7d6ac200622a0e7f" + }, + "price": 100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نان مک", + "description": "", + "short_description": "", + "category": { + "$oid": "64e848ce59383e8d754e920b" + }, + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:37:02.987Z" + }, + "updated_at": { + "$date": "2024-05-11T16:37:02.987Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9eed7d6ac200622a0e9e" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رولر", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f5f059383e8d7553eed0" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:38:05.537Z" + }, + "updated_at": { + "$date": "2024-05-11T16:38:05.537Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9f157d6ac200622a0eba" + }, + "price": 3100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دبل", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f5f059383e8d7553eed0" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:38:45.725Z" + }, + "updated_at": { + "$date": "2024-05-11T16:38:45.725Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9f447d6ac200622a0ed3" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاین برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f5f059383e8d7553eed0" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:39:32.740Z" + }, + "updated_at": { + "$date": "2024-05-11T16:39:32.740Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9f767d6ac200622a0f08" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f5f059383e8d7553eed0" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:40:22.074Z" + }, + "updated_at": { + "$date": "2024-05-11T16:40:22.074Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9fc07d6ac200622a0f21" + }, + "price": 2400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ فیله مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f5f059383e8d7553eed0" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:41:36.878Z" + }, + "updated_at": { + "$date": "2024-05-11T16:41:36.878Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663f9ff77d6ac200622a0f3d" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ رست بیف", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f5f059383e8d7553eed0" + }, + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:42:31.452Z" + }, + "updated_at": { + "$date": "2024-05-11T16:42:31.452Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa0447d6ac200622a0f61" + }, + "price": 5100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مینیون", + "description": "فیله گوساله سس قارچ", + "short_description": "", + "category": { + "$oid": "663f80f47d6ac200622a08ea" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:43:48.829Z" + }, + "updated_at": { + "$date": "2024-05-12T14:26:34.520Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa0637d6ac200622a0f6e" + }, + "price": 5300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ریبای", + "description": "", + "short_description": "", + "category": { + "$oid": "663f80f47d6ac200622a08ea" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:44:19.264Z" + }, + "updated_at": { + "$date": "2024-05-11T16:44:19.264Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa2697d6ac200622a0fce" + }, + "price": 5400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیلتو آل اجتو بالزامیک", + "description": "فیله گوساله سس بالزامیک", + "short_description": "", + "category": { + "$oid": "663f80f47d6ac200622a08ea" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:52:57.196Z" + }, + "updated_at": { + "$date": "2024-05-12T14:22:55.400Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa2b27d6ac200622a0fe7" + }, + "price": 3100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پتو دی پلو آل ملگارانوت", + "description": "", + "short_description": "", + "category": { + "$oid": "663f80f47d6ac200622a08ea" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:54:10.826Z" + }, + "updated_at": { + "$date": "2024-05-11T16:54:10.826Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa3057d6ac200622a0ffd" + }, + "price": 5100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیلتو گریلیا کونفوگیس", + "description": "فیله گوساله سس قارچ ", + "short_description": "", + "category": { + "$oid": "663f80f47d6ac200622a08ea" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:55:33.186Z" + }, + "updated_at": { + "$date": "2024-05-12T14:21:54.874Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa3477d6ac200622a1007" + }, + "price": 3200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیرواستیک", + "description": "راسته گوساله سیر فلفل دلمه ای و پنیر", + "short_description": "", + "category": { + "$oid": "6537f5e159383e8d7553eec7" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:56:39.030Z" + }, + "updated_at": { + "$date": "2024-05-29T15:17:34.839Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa3b87d6ac200622a1022" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پپرونی", + "description": "پپرونی و پنیر فلفل دلمه", + "short_description": "", + "category": { + "$oid": "6537f5e159383e8d7553eec7" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:58:32.358Z" + }, + "updated_at": { + "$date": "2024-05-29T15:14:09.685Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa3e07d6ac200622a102c" + }, + "price": 3100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوآترو پارتی", + "description": "پپرونی مرغ طمع دار شده هات داگ و سبزیجات", + "short_description": "", + "category": { + "$oid": "6537f5e159383e8d7553eec7" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:59:12.839Z" + }, + "updated_at": { + "$date": "2024-05-29T15:13:35.130Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa4087d6ac200622a1036" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیکن", + "description": "پنیر بیکن فلفل دلمه و قارچ", + "short_description": "", + "category": { + "$oid": "6537f5e159383e8d7553eec7" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T16:59:52.279Z" + }, + "updated_at": { + "$date": "2024-05-29T15:11:27.837Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa45a7d6ac200622a104a" + }, + "price": 2850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست بیف", + "description": "گوشت گوساله قارچ فلفل پنیر", + "short_description": "", + "category": { + "$oid": "663f97b97d6ac200622a0c62" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:01:14.686Z" + }, + "updated_at": { + "$date": "2024-05-12T14:15:18.907Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa4927d6ac200622a1055" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پپر", + "description": "ژامبون پپرونی ٫ قارچ ٫ فلفل دلمه ٫ پنیر مخصوص", + "short_description": "", + "category": { + "$oid": "663f97b97d6ac200622a0c62" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:02:10.329Z" + }, + "updated_at": { + "$date": "2024-05-26T11:11:56.239Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa4b77d6ac200622a105f" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سبزیجات", + "description": "قارچ فلفل گوجه پنیر", + "short_description": "", + "category": { + "$oid": "663f97b97d6ac200622a0c62" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:02:47.697Z" + }, + "updated_at": { + "$date": "2024-05-29T14:55:20.065Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa4de7d6ac200622a106c" + }, + "price": 2450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مونترال(مخلوط)", + "description": "ژامبون گوشت ٫ هات داگ ۹۰٪ ٫ قارچ ٫ پنیر مخصوص", + "short_description": "", + "category": { + "$oid": "663f97b97d6ac200622a0c62" + }, + "index": 5, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:03:26.683Z" + }, + "updated_at": { + "$date": "2024-05-29T14:54:58.132Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa4fc7d6ac200622a1088" + }, + "price": 2600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالامی", + "description": "ژامبون سالامی قارچ فلفل پنیرمخصوص", + "short_description": "", + "category": { + "$oid": "663f97b97d6ac200622a0c62" + }, + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:03:56.959Z" + }, + "updated_at": { + "$date": "2024-05-12T13:47:25.226Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa5297d6ac200622a1092" + }, + "price": 2570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ویکتوریا", + "description": "ژامبون گوشت ، ژامبون مرغ ٫ پنیر مخصوص", + "short_description": "", + "category": { + "$oid": "663f97b97d6ac200622a0c62" + }, + "index": 7, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:04:41.289Z" + }, + "updated_at": { + "$date": "2024-05-26T11:12:43.666Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa5467d6ac200622a10a2" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مکزیکی", + "description": "گوشت تند٫کاهو ٫چیپس٫پنیر مخصوص", + "short_description": "", + "category": { + "$oid": "663f97b97d6ac200622a0c62" + }, + "index": 8, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:05:10.942Z" + }, + "updated_at": { + "$date": "2024-05-26T11:04:21.099Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fa5687d6ac200622a10b2" + }, + "price": 2650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کالزونه", + "description": "ژامبون گوشت مرغ طمع دار شده قارچ پنیر گودا و دولایه خمیر ", + "short_description": "", + "category": { + "$oid": "663f97b97d6ac200622a0c62" + }, + "index": 9, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:05:44.974Z" + }, + "updated_at": { + "$date": "2024-05-29T14:54:16.464Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fabf07d6ac200622a12a1" + }, + "price": 8400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک چنجه.. chenjeh kebab/3 skewers", + "description": "۳سیخ کباب چنجه،سالاد شیرازی ،ماست،سبزی خوردن، سبزیجات بخار پز..chenjeh kebab/shirazi salad/yogurt/vegetable/steamed vegetables ", + "short_description": "", + "category": { + "$oid": "6627dff97d6ac20062281dd2" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-05-11T17:33:36.729Z" + }, + "updated_at": { + "$date": "2025-12-04T11:11:57.734Z" + }, + "__v": 0, + "image": "food_1715697924107.png" +}, +{ + "_id": { + "$oid": "663fac267d6ac200622a12b0" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رول پنیری", + "description": "3 عدد رول(خمیر مخصوص و ژامبون و پنیر چدار)", + "short_description": "", + "category": { + "$oid": "6537f60059383e8d7553eedc" + }, + "index": 1, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:34:30.404Z" + }, + "updated_at": { + "$date": "2024-05-29T14:53:22.043Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fac527d6ac200622a12bd" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن استیس", + "description": "دو سیخ جوجه سوخاری", + "short_description": "", + "category": { + "$oid": "6537f60059383e8d7553eedc" + }, + "index": 2, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:35:14.493Z" + }, + "updated_at": { + "$date": "2024-05-29T14:52:19.382Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fac8c7d6ac200622a12df" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قارچ سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f60059383e8d7553eedc" + }, + "index": 3, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:36:12.605Z" + }, + "updated_at": { + "$date": "2024-05-11T17:36:12.605Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663facea7d6ac200622a1330" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب تنوری", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f60059383e8d7553eedc" + }, + "index": 4, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:37:47.018Z" + }, + "updated_at": { + "$date": "2024-05-11T17:37:47.018Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fad757d6ac200622a138b" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی مخصوص", + "description": "سیب سرخ کرده و پنیر پیتزا زیتون و فلفل دلمه ", + "short_description": "", + "category": { + "$oid": "6537f60059383e8d7553eedc" + }, + "index": 6, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:40:05.723Z" + }, + "updated_at": { + "$date": "2024-05-12T13:40:54.557Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fad9e7d6ac200622a13a4" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f60059383e8d7553eedc" + }, + "index": 7, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:40:46.348Z" + }, + "updated_at": { + "$date": "2024-05-11T17:40:46.348Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fb0657d6ac200622a14c7" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا ایتالیایی وجترین", + "description": "کدو و بادمجان قارچ و فلفل دلمه ای و زیتون گوجه", + "short_description": "", + "category": { + "$oid": "6537f5e159383e8d7553eec7" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:52:37.679Z" + }, + "updated_at": { + "$date": "2024-05-29T14:49:01.067Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fb0897d6ac200622a14ec" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا پاین ایتالیایی", + "description": "فیله گوساله و بیکن گوشت قارچ بلانچ و فلفل دلمه ای", + "short_description": "", + "category": { + "$oid": "6537f5e159383e8d7553eec7" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:53:13.187Z" + }, + "updated_at": { + "$date": "2024-05-20T17:56:02.028Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "663fb1197d6ac200622a1535" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا آمریکایی چیکن", + "description": "مواد تشکیل دهنده: مرغ طمع دار شده و قارچ فلفل دلمه ای و پنیر مخصوص", + "short_description": "", + "category": { + "$oid": "663f97b97d6ac200622a0c62" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-11T17:55:37.275Z" + }, + "updated_at": { + "$date": "2024-05-29T14:48:18.024Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "664626e17d6ac200622a9184" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنه آلفردو ", + "description": "", + "short_description": "", + "category": { + "$oid": "664626607d6ac200622a915c" + }, + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-05-16T15:31:45.489Z" + }, + "updated_at": { + "$date": "2025-07-13T12:11:15.277Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "664627247d6ac200622a919d" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنه گوشت", + "description": "", + "short_description": "", + "category": { + "$oid": "664626607d6ac200622a915c" + }, + "index": 2, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-05-16T15:32:52.173Z" + }, + "updated_at": { + "$date": "2025-07-13T12:10:59.169Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "664b882e7d6ac200622b15ab" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 11, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-05-20T17:28:14.839Z" + }, + "updated_at": { + "$date": "2025-07-13T12:10:41.315Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66586e357d6ac200622c1a95" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز کیک لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-30T12:16:53.541Z" + }, + "updated_at": { + "$date": "2024-05-30T12:16:53.541Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66586e6d7d6ac200622c1a9f" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میکس بری", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-30T12:17:49.530Z" + }, + "updated_at": { + "$date": "2024-05-30T12:17:49.530Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66586e887d6ac200622c1aa9" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رول نیویورکی", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-30T12:18:16.437Z" + }, + "updated_at": { + "$date": "2024-05-30T12:18:16.437Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66586ea57d6ac200622c1ab6" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خمیر شو", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-30T12:18:45.461Z" + }, + "updated_at": { + "$date": "2024-05-30T12:18:45.461Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66586ee27d6ac200622c1ac3" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سن سباستین", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-30T12:19:46.454Z" + }, + "updated_at": { + "$date": "2024-05-30T12:19:46.454Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66586f047d6ac200622c1acd" + }, + "price": 920000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دسر نوتلا ", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-30T12:20:20.612Z" + }, + "updated_at": { + "$date": "2024-05-30T12:20:20.612Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66586f1a7d6ac200622c1ad7" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اکلر", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-30T12:20:42.620Z" + }, + "updated_at": { + "$date": "2024-05-30T12:20:42.620Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66586f397d6ac200622c1ae1" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاریس برس", + "description": "", + "short_description": "", + "category": { + "$oid": "64f44b7059383e8d754f73dd" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-05-30T12:21:13.039Z" + }, + "updated_at": { + "$date": "2024-05-30T12:21:13.039Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6663126b7d6ac200622cfca9" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو کباب ", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:00:11.783Z" + }, + "updated_at": { + "$date": "2024-06-07T14:00:11.783Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666312a97d6ac200622cfcb5" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو جوجه ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:01:13.324Z" + }, + "updated_at": { + "$date": "2024-06-07T14:01:13.324Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666312c17d6ac200622cfcbf" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو برگ", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:01:37.841Z" + }, + "updated_at": { + "$date": "2024-06-07T14:01:37.841Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666314c27d6ac200622cfd78" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زرشک پلو", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:10:10.510Z" + }, + "updated_at": { + "$date": "2024-07-17T11:32:04.162Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666315b87d6ac200622cfda9" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کباب", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:14:16.928Z" + }, + "updated_at": { + "$date": "2024-06-07T14:14:16.928Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666315d87d6ac200622cfdc3" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:14:48.188Z" + }, + "updated_at": { + "$date": "2024-06-07T14:19:18.881Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666316107d6ac200622cfdcd" + }, + "price": 2300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:15:45.002Z" + }, + "updated_at": { + "$date": "2024-06-07T14:15:45.002Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666316277d6ac200622cfdd7" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک برگ", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:16:07.057Z" + }, + "updated_at": { + "$date": "2024-07-17T11:29:45.257Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666316687d6ac200622cfde7" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک بختیاری", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:17:12.074Z" + }, + "updated_at": { + "$date": "2024-06-07T14:17:12.074Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6663168e7d6ac200622cfdf1" + }, + "price": 3400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک گردن", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:17:50.680Z" + }, + "updated_at": { + "$date": "2024-06-07T14:17:50.680Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666316b37d6ac200622cfdfe" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کباب نگینی", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:18:27.414Z" + }, + "updated_at": { + "$date": "2024-07-17T11:28:51.473Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666316d97d6ac200622cfe08" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کباب تبریزی", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:19:05.425Z" + }, + "updated_at": { + "$date": "2024-06-07T17:11:51.189Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666317157d6ac200622cfe1f" + }, + "price": 2400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کباب مصری ", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:20:05.955Z" + }, + "updated_at": { + "$date": "2024-06-07T14:20:05.955Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6663173a7d6ac200622cfe29" + }, + "price": 4300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک سلطانی", + "description": "یک سیخ کوبیده و یک سیخ برگ", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:20:42.160Z" + }, + "updated_at": { + "$date": "2024-07-17T11:30:50.096Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666317557d6ac200622cfe33" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:21:09.431Z" + }, + "updated_at": { + "$date": "2024-06-07T14:21:33.080Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666319a57d6ac200622cfeaa" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جگر", + "description": "", + "short_description": "", + "category": { + "$oid": "6663198a7d6ac200622cfe9a" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:31:01.611Z" + }, + "updated_at": { + "$date": "2024-06-07T14:31:01.611Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666319d27d6ac200622cfebd" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دل", + "description": "", + "short_description": "", + "category": { + "$oid": "6663198a7d6ac200622cfe9a" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:31:46.521Z" + }, + "updated_at": { + "$date": "2024-06-07T14:31:46.521Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666319e87d6ac200622cfec7" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قلوه", + "description": "", + "short_description": "", + "category": { + "$oid": "6663198a7d6ac200622cfe9a" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:32:08.561Z" + }, + "updated_at": { + "$date": "2024-06-07T14:32:08.561Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66631a077d6ac200622cfed7" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دنبه", + "description": "", + "short_description": "", + "category": { + "$oid": "6663198a7d6ac200622cfe9a" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:32:39.164Z" + }, + "updated_at": { + "$date": "2024-06-07T14:32:39.164Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66631a2a7d6ac200622cfee7" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کتف و بال", + "description": "", + "short_description": "", + "category": { + "$oid": "6663198a7d6ac200622cfe9a" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:33:14.048Z" + }, + "updated_at": { + "$date": "2024-06-07T14:33:14.048Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66631a437d6ac200622cfef7" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاسه کباب", + "description": "", + "short_description": "", + "category": { + "$oid": "6663198a7d6ac200622cfe9a" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:33:39.410Z" + }, + "updated_at": { + "$date": "2024-07-17T11:47:32.945Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66631a637d6ac200622cff10" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چنجه", + "description": "", + "short_description": "", + "category": { + "$oid": "6663198a7d6ac200622cfe9a" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:34:11.781Z" + }, + "updated_at": { + "$date": "2024-07-17T11:46:11.771Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66631a867d6ac200622cff23" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قارچ کبابی", + "description": "", + "short_description": "", + "category": { + "$oid": "6663198a7d6ac200622cfe9a" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:34:46.837Z" + }, + "updated_at": { + "$date": "2024-06-07T14:34:46.837Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66631a997d6ac200622cff69" + }, + "price": 50000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نان", + "description": "", + "short_description": "", + "category": { + "$oid": "6663198a7d6ac200622cfe9a" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-07T14:35:05.594Z" + }, + "updated_at": { + "$date": "2024-06-07T14:35:05.594Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "666c79257d6ac200622dc0db" + }, + "price": 5800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا هیرو / hero pizza", + "description": "فیله گوساله /قارچ/سبزیجات خارجی /گوجه اسلایس /فلفل دلمه ای /ریحان ایتالیایی/سس مخصوص کره بادام زمینی ژیوان ", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-06-14T17:08:53.582Z" + }, + "updated_at": { + "$date": "2025-12-04T11:22:08.728Z" + }, + "__v": 0, + "image": "food_1718492975613.png" +}, +{ + "_id": { + "$oid": "667185007d6ac200622e22de" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آل پولو ایتالیایی", + "description": "مرغ قارچ فلفل دلمه", + "short_description": "", + "category": { + "$oid": "6537f5e159383e8d7553eec7" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-18T13:00:48.485Z" + }, + "updated_at": { + "$date": "2024-06-18T13:00:48.485Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "667185497d6ac200622e22e8" + }, + "price": 2850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آل فونگی ایتالیایی", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f5e159383e8d7553eec7" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-18T13:02:01.054Z" + }, + "updated_at": { + "$date": "2024-06-18T13:03:00.453Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "667185f27d6ac200622e2308" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوآتروماژی ایتالیایی", + "description": "4 مدل پنیر", + "short_description": "", + "category": { + "$oid": "6537f5e159383e8d7553eec7" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-18T13:04:50.703Z" + }, + "updated_at": { + "$date": "2024-06-18T13:04:50.703Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "667186247d6ac200622e2314" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ریسو تندو", + "description": "", + "short_description": "", + "category": { + "$oid": "6537f60059383e8d7553eedc" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-18T13:05:40.110Z" + }, + "updated_at": { + "$date": "2024-06-18T13:05:40.110Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6671864a7d6ac200622e2321" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برنج سوخاری", + "description": "10 عدد برنج سوخاری", + "short_description": "", + "category": { + "$oid": "6537f60059383e8d7553eedc" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-06-18T13:06:18.345Z" + }, + "updated_at": { + "$date": "2024-06-18T13:06:18.345Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "667865f77d6ac200622ec0aa" + }, + "price": 2750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "667865cc7d6ac200622ec08b" + }, + "index": 1, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-06-23T18:14:15.212Z" + }, + "updated_at": { + "$date": "2025-07-13T12:10:00.714Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6678665d7d6ac200622ec0c3" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماکتیل بلک بری ", + "description": "میوه های قرمز ذغال اخته", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 7, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-06-23T18:15:57.397Z" + }, + "updated_at": { + "$date": "2025-07-13T12:09:24.822Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6678669c7d6ac200622ec0e5" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک بِری", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-06-23T18:17:00.485Z" + }, + "updated_at": { + "$date": "2025-07-13T12:09:04.206Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "667866bc7d6ac200622ec0fe" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلک موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2024-06-23T18:17:32.344Z" + }, + "updated_at": { + "$date": "2025-07-13T12:01:30.242Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "667fed8f7d6ac200622f7044" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سایفون ", + "description": "", + "short_description": "", + "category": { + "$oid": "62813302d65610bd301c5e57" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-06-29T11:18:39.873Z" + }, + "updated_at": { + "$date": "2025-08-19T08:30:27.850Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "667fedd97d6ac200622f7051" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایروپرس", + "description": "", + "short_description": "", + "category": { + "$oid": "62813302d65610bd301c5e57" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-06-29T11:19:53.858Z" + }, + "updated_at": { + "$date": "2025-08-19T08:29:51.252Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6682dc297d6ac200622fa654" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه ترک", + "description": "", + "short_description": "", + "category": { + "$oid": "627fecc5ec44ae525a153875" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-01T16:41:13.463Z" + }, + "updated_at": { + "$date": "2025-08-19T08:29:26.122Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6682dc957d6ac200622fa684" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سینامون لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "627fecc5ec44ae525a153875" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-01T16:43:01.470Z" + }, + "updated_at": { + "$date": "2025-08-19T08:25:21.309Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683da7f7d6ac200622fba6f" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کافی", + "description": "", + "short_description": "", + "category": { + "$oid": "628115c8d65610bd301c5837" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T10:46:23.044Z" + }, + "updated_at": { + "$date": "2025-08-19T08:17:15.878Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683dad87d6ac200622fba85" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کارامل", + "description": "", + "short_description": "", + "category": { + "$oid": "628115c8d65610bd301c5837" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T10:47:52.939Z" + }, + "updated_at": { + "$date": "2025-08-19T08:20:27.340Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683db077d6ac200622fba91" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس فندوق", + "description": "", + "short_description": "", + "category": { + "$oid": "628115c8d65610bd301c5837" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T10:48:39.823Z" + }, + "updated_at": { + "$date": "2025-08-19T08:14:50.148Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683db507d6ac200622fbaa2" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورنج کافی", + "description": "", + "short_description": "", + "category": { + "$oid": "628115c8d65610bd301c5837" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T10:49:52.423Z" + }, + "updated_at": { + "$date": "2024-07-02T10:49:52.423Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683dbc17d6ac200622fbaf1" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکون لاته ", + "description": "", + "short_description": "", + "category": { + "$oid": "628115c8d65610bd301c5837" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T10:51:45.155Z" + }, + "updated_at": { + "$date": "2024-07-02T10:51:45.155Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683dd4c7d6ac200622fbb99" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میکس بری", + "description": "", + "short_description": "", + "category": { + "$oid": "62810c47d65610bd301c56ea" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T10:58:20.847Z" + }, + "updated_at": { + "$date": "2025-08-19T08:12:52.317Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683dd7b7d6ac200622fbbaa" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش استوایی", + "description": "", + "short_description": "", + "category": { + "$oid": "62810c47d65610bd301c56ea" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T10:59:07.456Z" + }, + "updated_at": { + "$date": "2025-08-19T08:12:37.012Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683dda87d6ac200622fbbb5" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "به لیمو زنجبیل ", + "description": "", + "short_description": "", + "category": { + "$oid": "62810c47d65610bd301c56ea" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T10:59:52.916Z" + }, + "updated_at": { + "$date": "2025-08-19T08:11:22.715Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683de0d7d6ac200622fbbcd" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آریا", + "description": "", + "short_description": "", + "category": { + "$oid": "628119add65610bd301c5919" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T11:01:33.997Z" + }, + "updated_at": { + "$date": "2025-08-19T08:11:04.634Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683de4e7d6ac200622fbbd7" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بنانا چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "628119add65610bd301c5919" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T11:02:38.114Z" + }, + "updated_at": { + "$date": "2025-08-19T08:10:44.749Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683df7a7d6ac200622fbbf0" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بری نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "628119add65610bd301c5919" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T11:07:38.484Z" + }, + "updated_at": { + "$date": "2025-08-19T08:10:21.916Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6683dfc97d6ac200622fbbff" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیت کت", + "description": "", + "short_description": "", + "category": { + "$oid": "628119add65610bd301c5919" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-07-02T11:08:57.788Z" + }, + "updated_at": { + "$date": "2025-08-19T08:09:58.889Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6697ac68136cc1007046e33a" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وزیری", + "description": "یک سیخ کوبیده و یک سیخ جوجه", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-07-17T11:35:04.458Z" + }, + "updated_at": { + "$date": "2024-07-17T11:35:04.458Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6697ac91136cc1007046e34f" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوبیده (تک سیخ)", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-07-17T11:35:45.986Z" + }, + "updated_at": { + "$date": "2024-07-17T11:35:45.986Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6697acea136cc1007046e35c" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برنج زعفرانی", + "description": "", + "short_description": "", + "category": { + "$oid": "666312297d6ac200622cfc9c" + }, + "index": 0, + "storeId": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "created_at": { + "$date": "2024-07-17T11:37:14.610Z" + }, + "updated_at": { + "$date": "2024-07-17T11:37:14.610Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00920136cc1007047cf3c" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک وزیری", + "description": "یک سیخ کوبیده و یک سیخ جوجه", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:48:48.481Z" + }, + "updated_at": { + "$date": "2025-07-19T16:39:54.345Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a009c5136cc1007047cf64" + }, + "price": 3200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک بختیاری", + "description": "مخلوط جوجه و برگ", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:51:33.894Z" + }, + "updated_at": { + "$date": "2025-07-19T16:31:39.943Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00a0b136cc1007047cf6e" + }, + "price": 4100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک برگ", + "description": "180 گرم گوشت گوساله مو دورچین", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:52:43.053Z" + }, + "updated_at": { + "$date": "2025-07-19T16:41:07.470Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00a56136cc1007047cf99" + }, + "price": 4700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک سلطانی", + "description": "یک سیخ کوبیده و یک سیخ برگ", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:53:58.129Z" + }, + "updated_at": { + "$date": "2025-07-19T16:33:26.457Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00a9a136cc1007047cfc7" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "جوجه ترش", + "description": "250 گرم فیله مرغ به همراه رب انار و گردو", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 6, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:55:06.604Z" + }, + "updated_at": { + "$date": "2025-07-19T16:30:19.719Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00ac3136cc1007047cfd1" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کوبیده", + "description": "2 سیخ کباب کوبیده", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 7, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:55:47.338Z" + }, + "updated_at": { + "$date": "2025-07-19T16:28:54.439Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00b03136cc1007047cfe4" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک نگینی", + "description": " دو سیخ کباب کوبیده به همراه تیکه های مرغ", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 8, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:56:51.051Z" + }, + "updated_at": { + "$date": "2025-07-19T16:27:44.216Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00b8a136cc1007047d01e" + }, + "price": 3400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک مصری", + "description": "رول فیله مرغ به همراه رب انار فلفل دلمه ای پیاز و ادویه های ویژه و گردو", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 9, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:59:06.436Z" + }, + "updated_at": { + "$date": "2025-03-05T19:07:29.309Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00bbd136cc1007047d034" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کباب تبریزی", + "description": "دو سیخ کباب کوبیده به همراه سبزیجات و گوشت راسته گوساله", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 10, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T19:59:57.192Z" + }, + "updated_at": { + "$date": "2025-07-19T16:25:49.819Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00c2a136cc1007047d076" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برنج زعفرانی", + "description": "", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 14, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:01:46.117Z" + }, + "updated_at": { + "$date": "2025-07-19T16:22:00.840Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00d8c136cc1007047d0d0" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن", + "description": "مرغ طمع دار شده و قارچ و فلفل دلمه ای و پنیر مخصوص", + "short_description": "", + "category": { + "$oid": "66a0033b136cc1007047cd35" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:07:40.591Z" + }, + "updated_at": { + "$date": "2025-07-19T16:46:40.802Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00ddf136cc1007047d0dd" + }, + "price": 3200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست بیف", + "description": "گوشت گوساله و قارچ و پنیر", + "short_description": "", + "category": { + "$oid": "66a0033b136cc1007047cd35" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:09:03.942Z" + }, + "updated_at": { + "$date": "2025-07-19T16:45:29.597Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00e19136cc1007047d0f3" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پپر", + "description": "ژامبون پپرونی قارچ و فلفل دلمه ای و پنیر مخصوص", + "short_description": "", + "category": { + "$oid": "66a0033b136cc1007047cd35" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:10:01.462Z" + }, + "updated_at": { + "$date": "2025-02-10T19:02:54.091Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a00e82136cc1007047d118" + }, + "price": 2850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مونترال(مخلوط)", + "description": "ژامبون گوشت و هات داگ 90%و قارچ و پنیر مخصوص", + "short_description": "", + "category": { + "$oid": "66a0033b136cc1007047cd35" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:11:46.022Z" + }, + "updated_at": { + "$date": "2025-07-19T16:44:17.091Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a01005136cc1007047d153" + }, + "price": 2400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سبزیجات", + "description": "قارچ وفلفل و گوجه و پنیر مخصوص", + "short_description": "", + "category": { + "$oid": "66a0033b136cc1007047cd35" + }, + "index": 10, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:18:13.465Z" + }, + "updated_at": { + "$date": "2025-07-19T16:42:36.689Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a011b2136cc1007047d19f" + }, + "price": 3900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب سوخاری", + "description": "3 عدد فیله مرغ 8 عدد قارچ 1 عدد توپک برنجی سیب زمینی سرخ کرده و سوخاری", + "short_description": "", + "category": { + "$oid": "66a0043b136cc1007047cdaa" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:25:22.081Z" + }, + "updated_at": { + "$date": "2025-04-28T19:26:07.425Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a01204136cc1007047d1b2" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دبل دان", + "description": "دو عدد شنسل مرغ تند و ژامبون و پنیر و قارچ تفت داده به همراه سیب زمینی", + "short_description": "", + "category": { + "$oid": "66a0043b136cc1007047cdaa" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:26:44.535Z" + }, + "updated_at": { + "$date": "2025-04-28T19:26:58.580Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a01267136cc1007047d1bc" + }, + "price": 4200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "5 تیکه استریپس", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0043b136cc1007047cdaa" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:28:23.040Z" + }, + "updated_at": { + "$date": "2025-04-28T19:27:19.095Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a0129d136cc1007047d1c6" + }, + "price": 3100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "3 تیکه استریپس", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0043b136cc1007047cdaa" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:29:17.294Z" + }, + "updated_at": { + "$date": "2025-04-28T19:26:33.478Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a01513136cc1007047d23f" + }, + "price": 2600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار گریل", + "description": "دو عداد فیله طمع دار شده به همراه نان سیر تست شده گوجه گیلاسی زیتون و سس مخصوص", + "short_description": "", + "category": { + "$oid": "66a00527136cc1007047cdea" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:39:47.511Z" + }, + "updated_at": { + "$date": "2025-02-10T19:10:29.511Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a01530136cc1007047d249" + }, + "price": 2750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار دو رول", + "description": "دو رول فیله سوخاری به همراه نان سیر تست شده گوجه گیلاسی زیتون و سس مخصوص", + "short_description": "", + "category": { + "$oid": "66a00527136cc1007047cdea" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:40:16.221Z" + }, + "updated_at": { + "$date": "2025-02-10T19:10:06.715Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a0154c136cc1007047d253" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد مخصوص", + "description": "کاهو گوجه گیلاسی پرتغال سس مخصوص و زیتون و ژامبون", + "short_description": "", + "category": { + "$oid": "66a00527136cc1007047cdea" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:40:44.735Z" + }, + "updated_at": { + "$date": "2025-02-10T19:09:47.668Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a01574136cc1007047d25d" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد بیستکا", + "description": "کاهو و فیله گوساله و سس مخصوص پیاز و خیار و زیتون ", + "short_description": "", + "category": { + "$oid": "66a00527136cc1007047cdea" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:41:24.901Z" + }, + "updated_at": { + "$date": "2025-02-10T19:11:02.555Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a0158d136cc1007047d267" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد کلاسیک", + "description": "کاهو و گوجه و خیار و زامبون و سس مخصوص", + "short_description": "", + "category": { + "$oid": "66a00527136cc1007047cdea" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:41:49.097Z" + }, + "updated_at": { + "$date": "2025-02-10T19:09:09.850Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a015b3136cc1007047d274" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فروت سالاد ", + "description": "کاهو و میوه فصل", + "short_description": "", + "category": { + "$oid": "66a00527136cc1007047cdea" + }, + "index": 6, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-23T20:42:27.074Z" + }, + "updated_at": { + "$date": "2024-07-23T20:42:27.074Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a0ec94136cc1007047da25" + }, + "price": 4200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کباب دیگی digi kebab", + "description": "گوشت،سیب زمینی تنوری،گوجه سس کباب دیگی،فلفل دلمه ای، ..meat/roast potatoes/tomato/digi kebab sauce/sweet pepper/iranian rice", + "short_description": "", + "category": { + "$oid": "6627dff97d6ac20062281dd2" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-07-24T11:59:16.138Z" + }, + "updated_at": { + "$date": "2025-12-04T11:11:34.443Z" + }, + "__v": 0, + "image": "food_1721822590888.png" +}, +{ + "_id": { + "$oid": "66a0fed2136cc1007047dbad" + }, + "price": 2650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز برگر", + "description": "150 گرم گوشت گوساله به همراه پنیر ", + "short_description": "", + "category": { + "$oid": "66a00384136cc1007047cd5a" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:17:06.607Z" + }, + "updated_at": { + "$date": "2025-04-28T19:25:30.557Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a0ff35136cc1007047dbb8" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر کلاسیک ", + "description": "150 گرم گوشت چرخ کرده گوساله به همراه کاهو و...", + "short_description": "", + "category": { + "$oid": "66a00384136cc1007047cd5a" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:18:45.172Z" + }, + "updated_at": { + "$date": "2025-04-28T19:23:40.350Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a0ffd3136cc1007047dbd4" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دبل برگر", + "description": "300 گرم گوشت چرخ کرده گوساله به همراه سبزیجات", + "short_description": "", + "category": { + "$oid": "66a00384136cc1007047cd5a" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:21:23.729Z" + }, + "updated_at": { + "$date": "2025-04-28T19:24:59.869Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a1003b136cc1007047dbe7" + }, + "price": 3200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاین برگر", + "description": "150 گرم گوشت چرخ کرده گوساله وشنسل مرغ به همراه قارچ و پنیر", + "short_description": "", + "category": { + "$oid": "66a00384136cc1007047cd5a" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:23:07.942Z" + }, + "updated_at": { + "$date": "2025-04-28T19:24:17.134Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a100a5136cc1007047dbf7" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ فیله سوخاری", + "description": " 2عدد فیله مرغ سوخاری و کاهو ...", + "short_description": "", + "category": { + "$oid": "66a00384136cc1007047cd5a" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:24:53.962Z" + }, + "updated_at": { + "$date": "2025-02-10T19:15:00.128Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a100c7136cc1007047dc01" + }, + "price": 2600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ رست بیف", + "description": "گوشت فیله گوساله و دورچین", + "short_description": "", + "category": { + "$oid": "66a00384136cc1007047cd5a" + }, + "index": 6, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:25:27.904Z" + }, + "updated_at": { + "$date": "2025-02-10T19:14:40.100Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a100e4136cc1007047dc0b" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیکن تنوری", + "description": "", + "short_description": "", + "category": { + "$oid": "66a00384136cc1007047cd5a" + }, + "index": 7, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:25:56.040Z" + }, + "updated_at": { + "$date": "2025-03-05T19:19:14.084Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10223136cc1007047dc4c" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تیرامیسو", + "description": "", + "short_description": "", + "category": { + "$oid": "66a006a2136cc1007047ce68" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:31:15.358Z" + }, + "updated_at": { + "$date": "2024-07-24T13:31:15.358Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10254136cc1007047dc7e" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز کیک لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "66a006a2136cc1007047ce68" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:32:04.711Z" + }, + "updated_at": { + "$date": "2024-11-19T14:20:28.752Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a102a8136cc1007047dcbd" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سن سباستین", + "description": "", + "short_description": "", + "category": { + "$oid": "66a006a2136cc1007047ce68" + }, + "index": 7, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:33:28.050Z" + }, + "updated_at": { + "$date": "2025-01-19T14:40:23.253Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a102c0136cc1007047dcc7" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دسر نوتلا ", + "description": "", + "short_description": "", + "category": { + "$oid": "66a006a2136cc1007047ce68" + }, + "index": 8, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:33:52.914Z" + }, + "updated_at": { + "$date": "2024-11-19T14:19:58.842Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a103a0136cc1007047dd00" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو 70/30", + "description": "", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:37:36.108Z" + }, + "updated_at": { + "$date": "2025-01-19T14:36:20.780Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a103c5136cc1007047dd0d" + }, + "price": 670000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو 100 عربیکا", + "description": "", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:38:13.697Z" + }, + "updated_at": { + "$date": "2025-01-19T14:36:35.940Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10402136cc1007047dd1d" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماکیاتو70/30", + "description": "1 شات اسپرسو یه همراه یک لکه شیر", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:39:14.545Z" + }, + "updated_at": { + "$date": "2025-01-19T14:38:47.665Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10438136cc1007047dd2a" + }, + "price": 830000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماکیاتو 100 عربیکا", + "description": "یک شات اسپرسو به همراه یک لکه شیر", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:40:08.351Z" + }, + "updated_at": { + "$date": "2025-01-19T14:39:09.193Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10470136cc1007047dd4c" + }, + "price": 630000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو 70/30", + "description": "یک شات اسپرسو به همراه 150 میلی لیتر آب", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:41:04.379Z" + }, + "updated_at": { + "$date": "2025-01-19T14:36:54.083Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a104a2136cc1007047dd77" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو 100 عربیکا", + "description": "یک شات اسپرسو به همراه 150 میلی لیتر آب", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 6, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:41:54.410Z" + }, + "updated_at": { + "$date": "2025-01-19T14:37:06.849Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a1056c136cc1007047dd8d" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوجینو 70/30", + "description": "ریسترتو (اسپرسو کم آب) به همراه 180 گرم شیر", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 7, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:45:16.391Z" + }, + "updated_at": { + "$date": "2024-07-24T13:45:16.391Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10593136cc1007047dd98" + }, + "price": 770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو 100 عربیکا", + "description": "ریسترتو (اسپرسو کم آب) به همراه 180 گرم شیر", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 8, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:45:55.344Z" + }, + "updated_at": { + "$date": "2025-01-19T14:32:50.772Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a105e6136cc1007047dda2" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته 70/030", + "description": "ریسترتو (اسپرسو کم آب) به همراه 250 گرم شیر", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 9, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:47:18.250Z" + }, + "updated_at": { + "$date": "2024-07-24T13:47:18.250Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a1060c136cc1007047ddaf" + }, + "price": 820000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته 100 عربیکا", + "description": "ریسترتو (اسپرسو کم آب) به همراه 250 گرم شیر", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 10, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:47:56.744Z" + }, + "updated_at": { + "$date": "2025-01-19T14:33:36.102Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a106d6136cc1007047ddba" + }, + "price": 780000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو70/30", + "description": "ریسترتو (اسپرسو کم آب) به همراه 250میلی لیتر شیر و سیروب کارامل", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 11, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:51:18.477Z" + }, + "updated_at": { + "$date": "2024-07-24T13:51:18.477Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a107a6136cc1007047ddc4" + }, + "price": 840000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو 100 عربیکا", + "description": "ریسترتو (اسپرسو کم آب) به همراه 250 میلی لیتر شیر و سیروب کارامل", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 12, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:54:46.934Z" + }, + "updated_at": { + "$date": "2025-01-19T14:34:20.193Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10816136cc1007047ddd2" + }, + "price": 790000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا 70/30", + "description": "ریسترتو (اسپرسو کم آب) به همراه 250میلی لیتر شیر و سیروب شکلات", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 13, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:56:38.270Z" + }, + "updated_at": { + "$date": "2025-01-19T14:35:13.355Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a1083c136cc1007047dddf" + }, + "price": 840000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا 100 عربیکا", + "description": "ریسترتو (اسپرسو کم آب) به همراه 250میلی لیتر شیر و سیروب شکلات", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 14, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:57:16.498Z" + }, + "updated_at": { + "$date": "2025-01-19T14:35:40.472Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a1089e136cc1007047ddec" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفاگاتو", + "description": "2 اسکوب بستنی وانیل به همراه 1 شات اسپرسو ", + "short_description": "", + "category": { + "$oid": "66a005af136cc1007047ce08" + }, + "index": 15, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T13:58:54.735Z" + }, + "updated_at": { + "$date": "2024-07-24T13:58:54.735Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10945136cc1007047de03" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای دمی ", + "description": "", + "short_description": "", + "category": { + "$oid": "66a00613136cc1007047ce3e" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:01:41.302Z" + }, + "updated_at": { + "$date": "2024-07-24T14:03:43.917Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a109b2136cc1007047de10" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "66a00613136cc1007047ce3e" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:03:30.593Z" + }, + "updated_at": { + "$date": "2024-07-24T14:03:30.593Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a109e2136cc1007047de27" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای دمی با قوری 2 نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "66a00613136cc1007047ce3e" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:04:18.833Z" + }, + "updated_at": { + "$date": "2024-07-24T14:04:18.833Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10a26136cc1007047de31" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش آرامش", + "description": "سنبل الطیب و گل گاو زبان و لیمو عمانی", + "short_description": "", + "category": { + "$oid": "66a00613136cc1007047ce3e" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:05:26.023Z" + }, + "updated_at": { + "$date": "2024-07-24T14:05:51.460Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10a70136cc1007047de48" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش آویشن نعنا", + "description": "", + "short_description": "", + "category": { + "$oid": "66a00613136cc1007047ce3e" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:06:40.983Z" + }, + "updated_at": { + "$date": "2024-07-24T14:06:40.983Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10a98136cc1007047de52" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش بهار نارنج به لیمو", + "description": "", + "short_description": "", + "category": { + "$oid": "66a00613136cc1007047ce3e" + }, + "index": 6, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:07:20.765Z" + }, + "updated_at": { + "$date": "2024-07-24T14:07:20.765Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10ab4136cc1007047de5c" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش میوه های قرمز", + "description": "", + "short_description": "", + "category": { + "$oid": "66a00613136cc1007047ce3e" + }, + "index": 7, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:07:48.190Z" + }, + "updated_at": { + "$date": "2024-07-24T14:07:48.190Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10adb136cc1007047de66" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "66a00636136cc1007047ce4a" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:08:27.636Z" + }, + "updated_at": { + "$date": "2024-07-24T14:08:27.636Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10aee136cc1007047de70" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "66a00636136cc1007047ce4a" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:08:46.814Z" + }, + "updated_at": { + "$date": "2024-07-24T14:08:46.814Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10b50136cc1007047de80" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته70/30", + "description": "یک شات اسپرسو و 280 میلی لیتر شیر و یخ", + "short_description": "", + "category": { + "$oid": "66a005e6136cc1007047ce1d" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:10:24.483Z" + }, + "updated_at": { + "$date": "2024-07-24T14:10:24.483Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10b6e136cc1007047de8a" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته عربیکا", + "description": "یک شات اسپرسو و 280 میلی لیتر شیر و یخ", + "short_description": "", + "category": { + "$oid": "66a005e6136cc1007047ce1d" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:10:54.447Z" + }, + "updated_at": { + "$date": "2024-07-24T14:10:54.447Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10b9a136cc1007047dea3" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کارامل ماکیتو 70/30", + "description": "یک شات اسپرسو و 280 میلی لیتر شیر و یخ و سیروب کارامل", + "short_description": "", + "category": { + "$oid": "66a005e6136cc1007047ce1d" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:11:38.874Z" + }, + "updated_at": { + "$date": "2024-07-24T14:11:38.874Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10bd3136cc1007047deb0" + }, + "price": 880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کارامل ماکیاتو عربیکا", + "description": "یک شات اسپرسو و 280 میلی لیتر شیر و یخ و سیروب کارامل", + "short_description": "", + "category": { + "$oid": "66a005e6136cc1007047ce1d" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:12:35.704Z" + }, + "updated_at": { + "$date": "2025-01-19T14:48:27.624Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10c02136cc1007047deba" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا 70/30", + "description": "یک شات اسپرسو و 280 میلی لیتر شیر و یخ و سیروب شکلات", + "short_description": "", + "category": { + "$oid": "66a005e6136cc1007047ce1d" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:13:22.888Z" + }, + "updated_at": { + "$date": "2025-01-19T14:47:58.919Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10c3b136cc1007047dec4" + }, + "price": 870000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا عربیکا", + "description": "یک شات اسپرسو و 280 میلی لیتر شیر و یخ و سیروب شکلات", + "short_description": "", + "category": { + "$oid": "66a005e6136cc1007047ce1d" + }, + "index": 6, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:14:19.370Z" + }, + "updated_at": { + "$date": "2024-07-24T14:14:19.370Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10c80136cc1007047ded1" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو70/30", + "description": "یک شات اسپرسو و 200میلی لیتر آب و یخ", + "short_description": "", + "category": { + "$oid": "66a005e6136cc1007047ce1d" + }, + "index": 7, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:15:28.349Z" + }, + "updated_at": { + "$date": "2024-07-24T14:15:28.349Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10cae136cc1007047dee7" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو عربیکا", + "description": "یک شات اسپرسو و 200میلی لیتر آب و یخ", + "short_description": "", + "category": { + "$oid": "66a005e6136cc1007047ce1d" + }, + "index": 8, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:16:14.975Z" + }, + "updated_at": { + "$date": "2025-01-19T14:47:22.609Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10ccf136cc1007047defa" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه ترک", + "description": "", + "short_description": "", + "category": { + "$oid": "66a005d2136cc1007047ce11" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:16:47.335Z" + }, + "updated_at": { + "$date": "2024-07-24T14:16:47.335Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10d03136cc1007047df16" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه فرانسه (فرنچ پرس)", + "description": "", + "short_description": "", + "category": { + "$oid": "66a005d2136cc1007047ce11" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:17:39.371Z" + }, + "updated_at": { + "$date": "2024-07-24T14:17:39.371Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a10d23136cc1007047df35" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "v60", + "description": "", + "short_description": "", + "category": { + "$oid": "66a005d2136cc1007047ce11" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:18:11.150Z" + }, + "updated_at": { + "$date": "2024-07-24T14:18:11.150Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a1107a136cc1007047dfee" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وانیل", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0075d136cc1007047ce95" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:32:26.237Z" + }, + "updated_at": { + "$date": "2024-07-24T14:32:26.237Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a110b0136cc1007047e007" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0075d136cc1007047ce95" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:33:20.821Z" + }, + "updated_at": { + "$date": "2024-07-24T14:33:20.821Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a110cc136cc1007047e011" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موز شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0075d136cc1007047ce95" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:33:48.081Z" + }, + "updated_at": { + "$date": "2024-07-24T14:33:48.081Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a110f1136cc1007047e01e" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0075d136cc1007047ce95" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:34:25.122Z" + }, + "updated_at": { + "$date": "2024-07-24T14:34:25.122Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a1115c136cc1007047e028" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0075d136cc1007047ce95" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:36:12.354Z" + }, + "updated_at": { + "$date": "2024-07-24T14:36:12.354Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11181136cc1007047e032" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0075d136cc1007047ce95" + }, + "index": 6, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:36:49.831Z" + }, + "updated_at": { + "$date": "2024-07-24T14:36:49.831Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a111b1136cc1007047e03c" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اوریو", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0075d136cc1007047ce95" + }, + "index": 7, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:37:37.537Z" + }, + "updated_at": { + "$date": "2024-07-24T14:37:37.537Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a111d3136cc1007047e046" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بادام زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0075d136cc1007047ce95" + }, + "index": 8, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:38:11.923Z" + }, + "updated_at": { + "$date": "2024-07-24T14:38:11.923Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a111f9136cc1007047e053" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شکلات بادام زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0075d136cc1007047ce95" + }, + "index": 9, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:38:49.343Z" + }, + "updated_at": { + "$date": "2024-07-24T14:38:49.343Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11215136cc1007047e060" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل سالت", + "description": "", + "short_description": "", + "category": { + "$oid": "66a0075d136cc1007047ce95" + }, + "index": 10, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:39:17.337Z" + }, + "updated_at": { + "$date": "2024-07-24T14:39:17.337Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11571136cc1007047e123" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد ", + "description": "لیمو مادل شده و سیروب شکر و سودا و یخ", + "short_description": "", + "category": { + "$oid": "66a0066b136cc1007047ce53" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:53:37.082Z" + }, + "updated_at": { + "$date": "2024-07-24T14:53:37.082Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a115f1136cc1007047e136" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورنج لیموناد", + "description": "پرتغال مادل شده و آب لیمو و سیروب تیری پل سک و سودا و یخ", + "short_description": "", + "category": { + "$oid": "66a0066b136cc1007047ce53" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:55:45.143Z" + }, + "updated_at": { + "$date": "2024-07-24T14:55:45.143Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11638136cc1007047e143" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "لیمو مادل شده و نعنا و سیروب شکر و سودا و یخ", + "short_description": "", + "category": { + "$oid": "66a0066b136cc1007047ce53" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:56:56.125Z" + }, + "updated_at": { + "$date": "2024-07-24T14:56:56.125Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11681136cc1007047e153" + }, + "price": 720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رد موهیتو", + "description": "لیمو مادل شده و نعنا و سیروب کرن بری وسیروب شکر و سودا و یخ", + "short_description": "", + "category": { + "$oid": "66a0066b136cc1007047ce53" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T14:58:09.053Z" + }, + "updated_at": { + "$date": "2024-07-24T14:58:38.044Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a116f3136cc1007047e17f" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوربری", + "description": "توت فرنگی و نمک دریا و سیروب کرن بری آب آلبالو و آب لیمو یخ", + "short_description": "", + "category": { + "$oid": "66a0066b136cc1007047ce53" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:00:03.533Z" + }, + "updated_at": { + "$date": "2024-07-24T15:00:03.533Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11738136cc1007047e1a7" + }, + "price": 870000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تروپیکال فروت", + "description": "سیروب پشن فروت و آب هلو و آب انبه و آب لیمو و یخ", + "short_description": "", + "category": { + "$oid": "66a0066b136cc1007047ce53" + }, + "index": 6, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:01:12.512Z" + }, + "updated_at": { + "$date": "2024-07-24T15:01:12.512Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a1178f136cc1007047e1b4" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلو اسکای", + "description": "سیروب بلو کارسائو و آب آنانانس و آب لیمو و یخ", + "short_description": "", + "category": { + "$oid": "66a0066b136cc1007047ce53" + }, + "index": 7, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:02:39.258Z" + }, + "updated_at": { + "$date": "2024-07-24T15:02:39.258Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a117b3136cc1007047e1be" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "انبه شاتوت", + "description": "بریلو شاتوت و آب انبه و یخ", + "short_description": "", + "category": { + "$oid": "66a0066b136cc1007047ce53" + }, + "index": 8, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:03:15.941Z" + }, + "updated_at": { + "$date": "2024-07-24T15:03:15.941Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a117d6136cc1007047e1c8" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "آب میوه طبیعی", + "description": "میوه های فصل", + "short_description": "", + "category": { + "$oid": "66a0066b136cc1007047ce53" + }, + "index": 9, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:03:50.724Z" + }, + "updated_at": { + "$date": "2024-12-27T14:53:11.691Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a119e4136cc1007047e227" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب سرخ کرده", + "description": "", + "short_description": "", + "category": { + "$oid": "66a004d6136cc1007047cdcb" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:12:36.108Z" + }, + "updated_at": { + "$date": "2025-03-05T19:17:33.766Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a119fe136cc1007047e231" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "66a004d6136cc1007047cdcb" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:13:02.534Z" + }, + "updated_at": { + "$date": "2025-03-05T19:17:53.534Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11a4c136cc1007047e241" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی مخصوص", + "description": "سیب زمینی سرخ کرده به همراه پنیر و قارچ و ژامبون", + "short_description": "", + "category": { + "$oid": "66a004d6136cc1007047cdcb" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:14:20.331Z" + }, + "updated_at": { + "$date": "2025-03-05T19:18:16.297Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11a7e136cc1007047e255" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قارچ سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "66a004d6136cc1007047cdcb" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:15:10.897Z" + }, + "updated_at": { + "$date": "2025-02-10T19:12:31.336Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11aa8136cc1007047e262" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رول پنیری", + "description": "3 عدد رول پنیر ئ ژامبون سوخاری شده", + "short_description": "", + "category": { + "$oid": "66a004d6136cc1007047cdcb" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:15:52.083Z" + }, + "updated_at": { + "$date": "2025-02-10T19:11:37.915Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11afe136cc1007047e27e" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن استیس", + "description": "2 عدد سیخ فیله سوخاری شده ", + "short_description": "", + "category": { + "$oid": "66a004d6136cc1007047cdcb" + }, + "index": 6, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:17:18.377Z" + }, + "updated_at": { + "$date": "2025-03-05T19:17:01.473Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11b84136cc1007047e297" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برنج سوخاری ", + "description": "", + "short_description": "", + "category": { + "$oid": "66a004d6136cc1007047cdcb" + }, + "index": 7, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:19:32.220Z" + }, + "updated_at": { + "$date": "2024-07-24T15:19:32.220Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11cbe136cc1007047e2ce" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خیار سکنجبین", + "description": "", + "short_description": "", + "category": { + "$oid": "66a11ca3136cc1007047e2c1" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:24:46.810Z" + }, + "updated_at": { + "$date": "2024-07-24T15:24:46.810Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11cd3136cc1007047e2db" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بها نارنج", + "description": "", + "short_description": "", + "category": { + "$oid": "66a11ca3136cc1007047e2c1" + }, + "index": 2, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:25:07.392Z" + }, + "updated_at": { + "$date": "2024-07-24T15:25:07.392Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11ce9136cc1007047e2e5" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نسترن", + "description": "", + "short_description": "", + "category": { + "$oid": "66a11ca3136cc1007047e2c1" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:25:29.953Z" + }, + "updated_at": { + "$date": "2024-07-24T15:25:29.953Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11cfd136cc1007047e2ef" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیدمشک", + "description": "", + "short_description": "", + "category": { + "$oid": "66a11ca3136cc1007047e2c1" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:25:49.443Z" + }, + "updated_at": { + "$date": "2024-07-24T15:25:49.443Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a11d11136cc1007047e2f9" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "66a11ca3136cc1007047e2c1" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T15:26:09.178Z" + }, + "updated_at": { + "$date": "2024-07-24T15:26:09.178Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a131ff136cc1007047e727" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایتالیایی وجترین", + "description": "کدو و بادمجان و قارچ و فلفل دلمه ای و زیتون", + "short_description": "", + "category": { + "$oid": "66a0034e136cc1007047cd44" + }, + "index": 1, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T16:55:27.469Z" + }, + "updated_at": { + "$date": "2025-04-28T19:22:14.382Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a13274136cc1007047e762" + }, + "price": 3600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیر و استیک", + "description": "راسته گوساله سیر فلفل دلمه ای و پنیر مخصوص", + "short_description": "", + "category": { + "$oid": "66a0034e136cc1007047cd44" + }, + "index": 3, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T16:57:24.436Z" + }, + "updated_at": { + "$date": "2025-04-28T19:21:26.195Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a132bd136cc1007047e78a" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آل پلو", + "description": "مرغ طمع دار شده و قارچ و فلفل دلمه ای", + "short_description": "", + "category": { + "$oid": "66a0034e136cc1007047cd44" + }, + "index": 4, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T16:58:37.800Z" + }, + "updated_at": { + "$date": "2025-02-10T19:05:31.540Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a13328136cc1007047e7b5" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پپرونی ", + "description": "پپرونی هات داگ و سبزیجات", + "short_description": "", + "category": { + "$oid": "66a0034e136cc1007047cd44" + }, + "index": 5, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T17:00:24.158Z" + }, + "updated_at": { + "$date": "2025-04-28T19:20:58.896Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a13752136cc1007047e979" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاسه کباب", + "description": "یک سیخ کوبیده و یک سیخ جوجه و گوشت چنجه", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 7, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-07-24T17:18:10.450Z" + }, + "updated_at": { + "$date": "2025-07-19T16:23:29.342Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66a389ce136cc10070482691" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تیرامیسو", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1e0fc1eece3d762639b" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-07-26T11:34:38.351Z" + }, + "updated_at": { + "$date": "2025-03-13T16:13:01.959Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66b0fddf136cc100704973d4" + }, + "price": 180000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب تولد", + "description": "", + "short_description": "", + "category": { + "$oid": "62810c47d65610bd301c56ea" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-08-05T16:29:19.113Z" + }, + "updated_at": { + "$date": "2024-08-06T13:48:15.409Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66b23b48136cc10070499454" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای تک نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "62810c47d65610bd301c56ea" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2024-08-06T15:03:36.499Z" + }, + "updated_at": { + "$date": "2025-08-19T09:09:48.141Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66bb5f42136cc100704a7199" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بستنی ", + "description": "وانیل / شکلاتی / همراه با میوه و سس ", + "short_description": "", + "category": { + "$oid": "61b1a1befc1eece3d7626390" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-08-13T13:27:30.185Z" + }, + "updated_at": { + "$date": "2025-09-29T10:53:37.970Z" + }, + "__v": 0, + "image": "food_1723556152610.png" +}, +{ + "_id": { + "$oid": "66d605b3e2fcc00062c6017e" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو عربیکا ویژه", + "description": "اتیوپی هامبلا تخمیری", + "short_description": "", + "category": { + "$oid": "652693dc59383e8d7552ba53" + }, + "index": 2, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:36:35.569Z" + }, + "updated_at": { + "$date": "2025-01-07T13:25:51.713Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60643e2fcc00062c601a5" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو ربوستا", + "description": "اسپرسو دوپیو ربوستا -آب", + "short_description": "", + "category": { + "$oid": "652693dc59383e8d7552ba53" + }, + "index": 6, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:38:59.978Z" + }, + "updated_at": { + "$date": "2025-01-07T13:27:07.056Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d606ace2fcc00062c601b5" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو 50-50", + "description": "اسپرسو دوپیو 50-50 -آب", + "short_description": "", + "category": { + "$oid": "652693dc59383e8d7552ba53" + }, + "index": 7, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:40:44.453Z" + }, + "updated_at": { + "$date": "2025-01-07T13:28:42.723Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d606dce2fcc00062c601c5" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو عربیکا ", + "description": "اسپرسو دوپیو عربیکا - آب", + "short_description": "", + "category": { + "$oid": "652693dc59383e8d7552ba53" + }, + "index": 8, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:41:32.930Z" + }, + "updated_at": { + "$date": "2025-01-07T13:12:16.855Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d6079de2fcc00062c601ef" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ترک", + "description": "", + "short_description": "", + "category": { + "$oid": "652a478059383e8d755304db" + }, + "index": 3, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:44:45.020Z" + }, + "updated_at": { + "$date": "2024-09-02T18:44:45.020Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d607dce2fcc00062c60204" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فرانسه", + "description": "", + "short_description": "", + "category": { + "$oid": "652a478059383e8d755304db" + }, + "index": 2, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:45:48.548Z" + }, + "updated_at": { + "$date": "2024-09-02T18:45:48.548Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60883e2fcc00062c6024c" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماکیاتو", + "description": "اسپرسو دوپیو - لکه فوم شیر", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 1, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:48:35.865Z" + }, + "updated_at": { + "$date": "2025-01-07T13:10:25.069Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d608cde2fcc00062c6027b" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کٌرتادو", + "description": "نسبت برابر شیر با اسپرسو", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 2, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:49:49.850Z" + }, + "updated_at": { + "$date": "2025-01-07T13:06:21.537Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60925e2fcc00062c6028e" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیکولو", + "description": "نسبت دوبرار شیر به اسپرسو", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 3, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:51:17.706Z" + }, + "updated_at": { + "$date": "2025-01-07T13:05:15.666Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d6099be2fcc00062c602b6" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "اسپرسو دوپیو-شیر-فوم شیر ", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 4, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:53:15.711Z" + }, + "updated_at": { + "$date": "2025-01-07T13:04:44.837Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60a0de2fcc00062c602d8" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فلت وایت", + "description": "اسپرسو-شیر-فوم شیر سبک", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 5, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:55:09.601Z" + }, + "updated_at": { + "$date": "2025-01-07T13:04:11.921Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60a41e2fcc00062c602fd" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "اسپرسو-شیر فوم دار شده", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 6, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:56:01.436Z" + }, + "updated_at": { + "$date": "2025-01-07T13:03:46.706Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60abde2fcc00062c60316" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته با سیروپ", + "description": "اسپرسو-شیر-سیروپ(کارامل-فندوق-وانیل-نارگیل)", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 7, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:58:05.883Z" + }, + "updated_at": { + "$date": "2025-01-07T13:03:21.750Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60af1e2fcc00062c60320" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "اسپرسو-شیر-سیروپ شکلات", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 8, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:58:57.589Z" + }, + "updated_at": { + "$date": "2025-01-07T13:02:40.652Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60b23e2fcc00062c60336" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا فندوقی", + "description": "اسپرسو-شیر-سیروپ شکلات و فندوق", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 9, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T18:59:47.533Z" + }, + "updated_at": { + "$date": "2025-01-07T13:02:02.538Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60b64e2fcc00062c60343" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو", + "description": "اسپرسو دوپیو-بستنی وانیل", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 10, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T19:00:52.709Z" + }, + "updated_at": { + "$date": "2025-01-07T13:01:24.806Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60bace2fcc00062c6035c" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو ویژه", + "description": "اسپرسو دوپیو عربیکا-بستنی وانیل و شکلات", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 11, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T19:02:04.597Z" + }, + "updated_at": { + "$date": "2025-01-07T13:00:53.731Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60c33e2fcc00062c60395" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو عربیکا ", + "description": "اسپرسو دوپیو عربیکا-آب-یخ", + "short_description": "", + "category": { + "$oid": "652a46d159383e8d755304a3" + }, + "index": 5, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T19:04:19.462Z" + }, + "updated_at": { + "$date": "2025-01-07T12:58:17.352Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60d50e2fcc00062c60406" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای لاته", + "description": "چای-قهوه گلد-شیر-سیروپ", + "short_description": "", + "category": { + "$oid": "652a46a959383e8d7553049a" + }, + "index": 7, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T19:09:04.112Z" + }, + "updated_at": { + "$date": "2025-01-07T12:57:05.573Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60da8e2fcc00062c60419" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گل گاوزبان", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55c759383e8d7553078a" + }, + "index": 3, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T19:10:32.642Z" + }, + "updated_at": { + "$date": "2025-01-07T12:56:31.121Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d60f40e2fcc00062c6046d" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مانستر کولا", + "description": "", + "short_description": "", + "category": { + "$oid": "652a475659383e8d755304c6" + }, + "index": 1, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T19:17:20.091Z" + }, + "updated_at": { + "$date": "2025-01-07T13:47:51.875Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d61032e2fcc00062c604b5" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیمیت", + "description": "نان سیمیت-پنیر-گردو-خیار-گوجه-ریحان", + "short_description": "", + "category": { + "$oid": "652a559659383e8d75530778" + }, + "index": 1, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T19:21:22.420Z" + }, + "updated_at": { + "$date": "2025-01-07T12:54:50.995Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d610cfe2fcc00062c604bf" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ مرغ", + "description": "نان چاپاتا-سس پستو-مرغ-کاهو فرانسه-گوجه گیلاسی", + "short_description": "", + "category": { + "$oid": "652a559659383e8d75530778" + }, + "index": 2, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T19:23:59.890Z" + }, + "updated_at": { + "$date": "2025-01-07T12:54:28.136Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66d61111e2fcc00062c604c9" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ بوقلمون", + "description": "نان چاپاتا-سس پستو-بوقلمون-پنیر موزرلا-گوجه گیلاسی", + "short_description": "", + "category": { + "$oid": "652a559659383e8d75530778" + }, + "index": 3, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2024-09-02T19:25:05.410Z" + }, + "updated_at": { + "$date": "2025-01-10T15:00:57.613Z" + }, + "__v": 0, + "image": "food_1736521255416.png" +}, +{ + "_id": { + "$oid": "66e2945af7ba01006212608b" + }, + "price": 2850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اگ وافل(new)", + "description": "وافل، بیکن، سالاد روکولا، تخم مرغ، سس مخصوص", + "short_description": "", + "category": { + "$oid": "62deac91faacb066e12087e7" + }, + "index": 2, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-12T07:12:26.794Z" + }, + "updated_at": { + "$date": "2025-11-13T11:41:00.746Z" + }, + "__v": 0, + "image": "food_1728329980738.png" +}, +{ + "_id": { + "$oid": "66e2949cf7ba0100621260a6" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "املت ویژه", + "description": "تخم مرغ، سس گوجه فرنگی، پنیر گودا، ، چیپس خلال، دورچین", + "short_description": "", + "category": { + "$oid": "62deac91faacb066e12087e7" + }, + "index": 8, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-12T07:13:32.035Z" + }, + "updated_at": { + "$date": "2025-12-09T12:02:38.257Z" + }, + "__v": 0, + "image": "food_1765281756496.png" +}, +{ + "_id": { + "$oid": "66e29571f7ba0100621260c5" + }, + "price": 1790000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "املت شاپوری", + "description": "تخم مرغ، سس گوجه فرنگی، خوراک لوبیا، پیاز سرخ شده، دورچین به همراه نان", + "short_description": "", + "category": { + "$oid": "62deac91faacb066e12087e7" + }, + "index": 4, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-12T07:17:05.521Z" + }, + "updated_at": { + "$date": "2025-12-09T12:01:16.042Z" + }, + "__v": 0, + "image": "food_1765281673778.png" +}, +{ + "_id": { + "$oid": "66e29723f7ba010062126162" + }, + "price": 9750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مدالیون استیک", + "description": "فیله گوساله، پوره سیب زمینی، هویج، بروکلی، قارچ، کدو، سس باترپپر، سس قارچ", + "short_description": "", + "category": { + "$oid": "6207a2421ee4b0270db4c40b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-12T07:24:19.413Z" + }, + "updated_at": { + "$date": "2025-12-25T12:34:50.546Z" + }, + "__v": 0, + "image": "food_1732099143873.png" +}, +{ + "_id": { + "$oid": "66e29736f7ba01006212616c" + }, + "price": 5530000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "باربیکیو چیکن(new)", + "description": "سینه مرغ، پوره سیب زمینی، سبزیجات، سس باربیکیو، میکرو گرین", + "short_description": "", + "category": { + "$oid": "6207a2421ee4b0270db4c40b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-12T07:24:38.681Z" + }, + "updated_at": { + "$date": "2025-12-25T12:35:03.997Z" + }, + "__v": 0, + "image": "food_1728331573491.png" +}, +{ + "_id": { + "$oid": "66e96297f7ba010062130ddd" + }, + "price": 4170000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن بلو(new)", + "description": "پنه، سس آلفردو، شنیسل مرغ سوخاری، پنیر پارمسان، ریحان ایتالیایی", + "short_description": "", + "category": { + "$oid": "6207a1f81ee4b0270db4c3ef" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-17T11:05:59.430Z" + }, + "updated_at": { + "$date": "2025-12-25T12:35:18.732Z" + }, + "__v": 0, + "image": "food_1729758234581.png" +}, +{ + "_id": { + "$oid": "66eafb6ef7ba010062132c58" + }, + "price": 3990000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "داینامیت شریمپ(new)", + "description": "میگو(تند)، سالاد روکولا، رایس پیپر، رلیش خیار، ترشی پیاز، پلبیبر، کنجد، خمیر بنیه", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-18T16:10:22.578Z" + }, + "updated_at": { + "$date": "2025-12-25T12:35:31.441Z" + }, + "__v": 0, + "image": "food_1728330007896.png" +}, +{ + "_id": { + "$oid": "66eafd3bf7ba010062132cdb" + }, + "price": 5450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شنیسل مرغ(new)", + "description": "سینه مرغ سوخاری، پوره سیب زمینی، سالاد روکولا، سس انتروکوت", + "short_description": "", + "category": { + "$oid": "6207a2421ee4b0270db4c40b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-18T16:18:03.726Z" + }, + "updated_at": { + "$date": "2025-12-25T12:35:40.182Z" + }, + "__v": 0, + "image": "food_1728331603363.png" +}, +{ + "_id": { + "$oid": "66ec50b1f7ba010062135203" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جاکارتا جینجر", + "description": "زنجبیل اسپایسی همراه با عصاره پشن فروت و تونیک سودای لیمو با آب سیب ترش", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:26:25.300Z" + }, + "updated_at": { + "$date": "2025-09-27T10:49:51.116Z" + }, + "__v": 0, + "image": "food_1728373582119.png" +}, +{ + "_id": { + "$oid": "66ec510af7ba010062135222" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فرنچ پاستیس", + "description": "عطر یادی از بادیان ستاره ای با طعم پاستیلی و سودا", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:27:54.232Z" + }, + "updated_at": { + "$date": "2025-09-27T10:50:00.548Z" + }, + "__v": 0, + "image": "food_1728373531857.png" +}, +{ + "_id": { + "$oid": "66ec5138f7ba01006213522c" + }, + "price": 1690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو اسپارکل", + "description": "ترکیبی از لیمو و نعناع به سبک آمریکای جنوبی", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:28:40.190Z" + }, + "updated_at": { + "$date": "2025-09-27T10:50:09.731Z" + }, + "__v": 0, + "image": "food_1728373498052.png" +}, +{ + "_id": { + "$oid": "66ec516cf7ba01006213524e" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تونیک جینجر", + "description": "سودا طعم دار شده با زنجبیل و پرتقال خونی", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:29:32.940Z" + }, + "updated_at": { + "$date": "2025-09-27T10:50:16.981Z" + }, + "__v": 0, + "image": "food_1728373498950.png" +}, +{ + "_id": { + "$oid": "66ec51c1f7ba010062135282" + }, + "price": 2150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کرونا سودا واتر", + "description": "آب جوی بدون الکل اصل کرونا همراه با عسل و پاپریکا", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:30:57.595Z" + }, + "updated_at": { + "$date": "2025-09-27T10:50:26.682Z" + }, + "__v": 0, + "image": "food_1728373326721.png" +}, +{ + "_id": { + "$oid": "66ec51f9f7ba0100621352c1" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بالتیکا مارگاریتا", + "description": "پوره طبیعی سیفیجات با سیب ترش همراه باعصاره پوست پرتقال", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:31:53.817Z" + }, + "updated_at": { + "$date": "2025-09-27T10:50:36.001Z" + }, + "__v": 0, + "image": "food_1728373364742.png" +}, +{ + "_id": { + "$oid": "66ec5236f7ba0100621352e6" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد مصری", + "description": "ترکیب زعفران همراه با عصاره لیمو و عطر پرتقال ترش", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:32:54.671Z" + }, + "updated_at": { + "$date": "2025-09-27T10:50:41.848Z" + }, + "__v": 0, + "image": "food_1728373396422.png" +}, +{ + "_id": { + "$oid": "66ec527ff7ba01006213530e" + }, + "price": 1790000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "الدوراند بالی", + "description": "عصاره آلوئه ورا همراه با سودای لیمویی و عطر خیار با آب آناناس", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:34:07.089Z" + }, + "updated_at": { + "$date": "2025-09-27T10:50:54.263Z" + }, + "__v": 0, + "image": "food_1728373551935.png" +}, +{ + "_id": { + "$oid": "66ec5512f7ba010062135483" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چاکلت پاپچی", + "description": "ژلاتو شکلات کارات تلخ همراه با کیک برانی و پودر شکلات هلندی", + "short_description": "", + "category": { + "$oid": "6208a97b1ee4b0270db4c734" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:45:06.941Z" + }, + "updated_at": { + "$date": "2025-09-27T10:53:11.087Z" + }, + "__v": 0, + "image": "food_1728372980251.png" +}, +{ + "_id": { + "$oid": "66ec55dcf7ba01006213550b" + }, + "price": 1890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلک چری", + "description": "سوربتو شاه توت به همراه میوه های قرمز و سس انار با پوره کرن بری", + "short_description": "", + "category": { + "$oid": "6208a97b1ee4b0270db4c734" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:48:28.975Z" + }, + "updated_at": { + "$date": "2025-09-27T10:53:18.933Z" + }, + "__v": 0, + "image": "food_1728372948803.png" +}, +{ + "_id": { + "$oid": "66ec565ff7ba0100621355ae" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کرانچ وانیلا باتر", + "description": "ژلاتو وانیلی با کره بادام زمینی همراه موز و کوکی", + "short_description": "", + "category": { + "$oid": "6208a97b1ee4b0270db4c734" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:50:39.314Z" + }, + "updated_at": { + "$date": "2025-09-27T10:53:27.425Z" + }, + "__v": 0, + "image": "food_1728372895437.png" +}, +{ + "_id": { + "$oid": "66ec56e4f7ba010062135615" + }, + "price": 2090000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماراش استانبول", + "description": "باقلوا بستنی به همراه زعفران و کره لوتوس با قیماخ", + "short_description": "", + "category": { + "$oid": "6208a97b1ee4b0270db4c734" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:52:52.203Z" + }, + "updated_at": { + "$date": "2025-09-27T10:53:40.637Z" + }, + "__v": 0, + "image": "food_1728372863049.png" +}, +{ + "_id": { + "$oid": "66ec57c2f7ba010062135789" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تی مو تی مانگو", + "description": "پوره پشن فروت به همراه انبه و شیر نارگیل در کنار مغزیجات رست شده", + "short_description": "", + "category": { + "$oid": "66ec5758f7ba01006213570b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:56:34.437Z" + }, + "updated_at": { + "$date": "2025-09-27T10:54:11.081Z" + }, + "__v": 0, + "image": "food_1728373344734.png" +}, +{ + "_id": { + "$oid": "66ec5819f7ba0100621357c5" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "می مو سا آفریقایی", + "description": "پوره شاه توت و موز به همراه توت فرنگی و آلوئه ورا در کنار سس انار و زنجبیل", + "short_description": "", + "category": { + "$oid": "66ec5758f7ba01006213570b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T16:58:01.397Z" + }, + "updated_at": { + "$date": "2025-09-27T10:54:18.961Z" + }, + "__v": 0, + "image": "food_1728373241200.png" +}, +{ + "_id": { + "$oid": "66ec589af7ba0100621357f0" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آناستازیا", + "description": "پوره پرتقال و سبزیجات معطر به همراه خیار و نمک دریایی و عصاره پوست پرتقال", + "short_description": "", + "category": { + "$oid": "66ec5758f7ba01006213570b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-19T17:00:10.102Z" + }, + "updated_at": { + "$date": "2025-09-27T10:54:23.717Z" + }, + "__v": 0, + "image": "food_1728373220295.png" +}, +{ + "_id": { + "$oid": "66ed6cb6f7ba01006213764e" + }, + "price": 6550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مکزیکن(new)", + "description": "خمیر پیتزا، سس هات بین، قارچ، پولد بیف، اوریگانو، سس چدار، تردیلا، چیپس هویج، پلبیبر", + "short_description": "", + "category": { + "$oid": "6207a1c11ee4b0270db4c3da" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-20T12:38:14.396Z" + }, + "updated_at": { + "$date": "2025-12-25T12:45:10.053Z" + }, + "__v": 0, + "image": "food_1728330318027.png" +}, +{ + "_id": { + "$oid": "66ed6d20f7ba010062137669" + }, + "price": 5930000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا برگر(new)", + "description": "خمیر پیتزا، پنیر میکس، سس چدار ، سس مارینارا، گوشت برگر گریل شده، قارچ، اوریگانو، زیتون سیاه", + "short_description": "", + "category": { + "$oid": "6207a1c11ee4b0270db4c3da" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-20T12:40:00.360Z" + }, + "updated_at": { + "$date": "2025-12-25T12:36:07.592Z" + }, + "__v": 0, + "image": "food_1728306990260.png" +}, +{ + "_id": { + "$oid": "66ed6d55f7ba010062137680" + }, + "price": 5870000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارنه(new)", + "description": "خمیر ایتالیایی، سس مارینارا، گوشت مرغ، فیله گوساله، قارچ، پیکل پیاز، پستو، ریحان ایتالیایی، اوریگانو، زیتون سیاه", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-20T12:40:53.979Z" + }, + "updated_at": { + "$date": "2025-12-25T12:36:20.797Z" + }, + "__v": 0, + "image": "food_1728330463701.png" +}, +{ + "_id": { + "$oid": "66ed6d85f7ba010062137691" + }, + "price": 6490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چانو(new)", + "description": "خمیر ایتالیایی، پنیر میکس، پستو ریحان، فیله گوساله، گوجه خشک، اوریگانو، چیپس بادمجان، گردو، پنیر پارمسان", + "short_description": "", + "category": { + "$oid": "6207a1e81ee4b0270db4c3e5" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-20T12:41:41.901Z" + }, + "updated_at": { + "$date": "2025-12-25T12:36:32.075Z" + }, + "__v": 0, + "image": "food_1728330684783.png" +}, +{ + "_id": { + "$oid": "66ee99f4f7ba0100621396be" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جینجرپشن", + "description": "لیموناد به همراه زنجبیل تازه", + "short_description": "", + "category": { + "$oid": "61b1a1a2fc1eece3d7626383" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2024-09-21T10:03:32.378Z" + }, + "updated_at": { + "$date": "2025-09-29T10:30:43.335Z" + }, + "__v": 0, + "image": "food_1726913724347.png" +}, +{ + "_id": { + "$oid": "66eea6b3f7ba0100621399a1" + }, + "price": 5150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فاهیتامیکس(new) تند", + "description": "سینه مرغ،فیله گوساله،پیاز،فلفل دلمه رنگی،برنج مکزیکی،ساورکرم،دیپ چدار،دیپ تورتیلا،دیپ چدار", + "short_description": "", + "category": { + "$oid": "6207a2421ee4b0270db4c40b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T10:57:55.300Z" + }, + "updated_at": { + "$date": "2025-12-25T12:36:45.249Z" + }, + "__v": 0, + "image": "food_1728331131292.png" +}, +{ + "_id": { + "$oid": "66eecc0af7ba010062139f35" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ماسالا", + "description": "ماسالا چای، شیر، دارچین", + "short_description": "", + "category": { + "$oid": "6207a2ee1ee4b0270db4c44f" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:37:14.573Z" + }, + "updated_at": { + "$date": "2025-11-13T11:44:01.984Z" + }, + "__v": 0, + "image": "food_1728374980662.png" +}, +{ + "_id": { + "$oid": "66eecc43f7ba010062139f4e" + }, + "price": 1690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای کرک", + "description": "ماسالا چای، زعفران، هل، دارچین، شیر", + "short_description": "", + "category": { + "$oid": "6207a2ee1ee4b0270db4c44f" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:38:11.549Z" + }, + "updated_at": { + "$date": "2025-11-13T11:44:09.385Z" + }, + "__v": 0, + "image": "food_1728374956579.png" +}, +{ + "_id": { + "$oid": "66eecc64f7ba010062139f55" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای مراکشی", + "description": "چای سبز، دارچین، نعنا، لیمو", + "short_description": "", + "category": { + "$oid": "6207a2ee1ee4b0270db4c44f" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:38:44.752Z" + }, + "updated_at": { + "$date": "2025-11-13T11:44:21.886Z" + }, + "__v": 0, + "image": "food_1728377431806.png" +}, +{ + "_id": { + "$oid": "66eecc9ef7ba010062139f6a" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای لاته", + "description": "چای، شیر، پودر شکلات", + "short_description": "", + "category": { + "$oid": "6207a2ee1ee4b0270db4c44f" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:39:42.741Z" + }, + "updated_at": { + "$date": "2025-09-27T11:00:36.924Z" + }, + "__v": 0, + "image": "food_1729765132668.png" +}, +{ + "_id": { + "$oid": "66eeccc4f7ba010062139f77" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز", + "description": "چای سبز، لیمو، نبات", + "short_description": "", + "category": { + "$oid": "6207a2ee1ee4b0270db4c44f" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:40:20.888Z" + }, + "updated_at": { + "$date": "2025-11-13T11:45:50.511Z" + }, + "__v": 0, + "image": "food_1728377808931.png" +}, +{ + "_id": { + "$oid": "66eeccfaf7ba010062139f84" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لانگ بلک", + "description": "", + "short_description": "", + "category": { + "$oid": "6207a2fd1ee4b0270db4c458" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:41:14.088Z" + }, + "updated_at": { + "$date": "2025-09-27T11:01:48.565Z" + }, + "__v": 0, + "image": "food_1728377481568.png" +}, +{ + "_id": { + "$oid": "66eecd18f7ba010062139f8b" + }, + "price": 1590000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورنج امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "6207a2fd1ee4b0270db4c458" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:41:44.818Z" + }, + "updated_at": { + "$date": "2025-09-27T11:02:12.270Z" + }, + "__v": 0, + "image": "food_1728372536686.png" +}, +{ + "_id": { + "$oid": "66eecd2cf7ba010062139f92" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیریش کافی", + "description": "", + "short_description": "", + "category": { + "$oid": "6207a2fd1ee4b0270db4c458" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:42:04.668Z" + }, + "updated_at": { + "$date": "2025-09-27T11:02:18.446Z" + }, + "__v": 0, + "image": "food_1729759379045.png" +}, +{ + "_id": { + "$oid": "66eecd42f7ba010062139f99" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "6207a2fd1ee4b0270db4c458" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:42:26.192Z" + }, + "updated_at": { + "$date": "2025-09-27T11:02:25.258Z" + }, + "__v": 0, + "image": "food_1728377490744.png" +}, +{ + "_id": { + "$oid": "66eecd70f7ba010062139fa0" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایبریک (قهوه ترک)", + "description": "", + "short_description": "", + "category": { + "$oid": "6207a2d91ee4b0270db4c445" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:43:12.283Z" + }, + "updated_at": { + "$date": "2025-09-27T11:03:26.124Z" + }, + "__v": 0, + "image": "food_1728373971406.png" +}, +{ + "_id": { + "$oid": "66eecd83f7ba010062139fb0" + }, + "price": 1290000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "عثمانی", + "description": "", + "short_description": "", + "category": { + "$oid": "6207a2d91ee4b0270db4c445" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:43:31.791Z" + }, + "updated_at": { + "$date": "2025-09-27T11:03:37.996Z" + }, + "__v": 0, + "image": "food_1728374077203.png" +}, +{ + "_id": { + "$oid": "66eecd9bf7ba010062139fb7" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دله", + "description": "", + "short_description": "", + "category": { + "$oid": "6207a2d91ee4b0270db4c445" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:43:55.161Z" + }, + "updated_at": { + "$date": "2025-09-27T11:03:52.574Z" + }, + "__v": 0, + "image": "food_1728374188201.png" +}, +{ + "_id": { + "$oid": "66eecdc7f7ba010062139fc1" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکاچینو", + "description": "اسپرسو، شیر، سس شکلات، پودر کاکائو", + "short_description": "", + "category": { + "$oid": "6207a2c31ee4b0270db4c43c" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:44:39.729Z" + }, + "updated_at": { + "$date": "2025-09-27T11:04:17.315Z" + }, + "__v": 0, + "image": "food_1728374516173.png" +}, +{ + "_id": { + "$oid": "66eecdf4f7ba010062139fc8" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ماکیاتو", + "description": "اسپرسو، شیر", + "short_description": "", + "category": { + "$oid": "6207a2c31ee4b0270db4c43c" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:45:24.450Z" + }, + "updated_at": { + "$date": "2025-09-27T11:04:21.734Z" + }, + "__v": 0, + "image": "food_1729765217266.png" +}, +{ + "_id": { + "$oid": "66eece23f7ba010062139fd2" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو اسپشیالیتی", + "description": "", + "short_description": "", + "category": { + "$oid": "6207a2c31ee4b0270db4c43c" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:46:11.967Z" + }, + "updated_at": { + "$date": "2025-09-27T11:04:30.642Z" + }, + "__v": 0, + "image": "food_1729758883089.png" +}, +{ + "_id": { + "$oid": "66eece40f7ba010062139fd9" + }, + "price": 1390000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو رومانو", + "description": "اسپرسو، لیمو", + "short_description": "", + "category": { + "$oid": "6207a2c31ee4b0270db4c43c" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:46:40.450Z" + }, + "updated_at": { + "$date": "2025-09-27T11:04:40.008Z" + }, + "__v": 0, + "image": "food_1728374453525.png" +}, +{ + "_id": { + "$oid": "66eece62f7ba010062139fe0" + }, + "price": 1490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "اسپرسو، شیر", + "short_description": "", + "category": { + "$oid": "6207a2c31ee4b0270db4c43c" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:47:14.286Z" + }, + "updated_at": { + "$date": "2025-09-27T11:04:58.733Z" + }, + "__v": 0, + "image": "food_1728374681449.png" +}, +{ + "_id": { + "$oid": "66eece81f7ba010062139fe7" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کافه لاته", + "description": "اسپرسو، شیر", + "short_description": "", + "category": { + "$oid": "6207a2c31ee4b0270db4c43c" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:47:45.531Z" + }, + "updated_at": { + "$date": "2025-09-27T11:05:11.233Z" + }, + "__v": 0, + "image": "food_1728374690285.png" +}, +{ + "_id": { + "$oid": "66eecea2f7ba010062139fee" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو کورتادو", + "description": "اسپرسو، شیر گاومیش", + "short_description": "", + "category": { + "$oid": "6207a2c31ee4b0270db4c43c" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:48:18.087Z" + }, + "updated_at": { + "$date": "2025-09-27T11:05:37.080Z" + }, + "__v": 0, + "image": "food_1728374070853.png" +}, +{ + "_id": { + "$oid": "66eececdf7ba010062139ff5" + }, + "price": 1490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو آریش کرما", + "description": "اسپرسو، شیر، سیروپ آیریش", + "short_description": "", + "category": { + "$oid": "6207a2c31ee4b0270db4c43c" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:49:01.592Z" + }, + "updated_at": { + "$date": "2025-09-27T11:05:49.764Z" + }, + "__v": 0, + "image": "food_1729758906445.png" +}, +{ + "_id": { + "$oid": "66eeceecf7ba010062139fff" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "پودر هات چاکلت، شیر، پودر کاکائو", + "short_description": "", + "category": { + "$oid": "66eec765f7ba010062139d62" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:49:32.932Z" + }, + "updated_at": { + "$date": "2025-11-13T11:48:00.309Z" + }, + "__v": 0, + "image": "food_1728377462810.png" +}, +{ + "_id": { + "$oid": "66eecf20f7ba01006213a006" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت بیسکوف", + "description": "کره لوتوس، پودر هات چاکلت، شیر، پودر کاکائو", + "short_description": "", + "category": { + "$oid": "66eec765f7ba010062139d62" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:50:24.490Z" + }, + "updated_at": { + "$date": "2025-11-13T11:48:35.117Z" + }, + "__v": 0, + "image": "food_1728377484916.png" +}, +{ + "_id": { + "$oid": "66eecf40f7ba01006213a00d" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "پودر وایت چاکلت، شیر", + "short_description": "", + "category": { + "$oid": "66eec765f7ba010062139d62" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:50:56.063Z" + }, + "updated_at": { + "$date": "2025-11-13T11:48:40.975Z" + }, + "__v": 0, + "image": "food_1728377480666.png" +}, +{ + "_id": { + "$oid": "66eecf58f7ba01006213a014" + }, + "price": 1690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "6208a9511ee4b0270db4c722" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:51:20.657Z" + }, + "updated_at": { + "$date": "2025-09-27T11:07:31.521Z" + }, + "__v": 0, + "image": "food_1728377253866.png" +}, +{ + "_id": { + "$oid": "66eecf6bf7ba01006213a01e" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کورتادو", + "description": "", + "short_description": "", + "category": { + "$oid": "6208a9511ee4b0270db4c722" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:51:39.158Z" + }, + "updated_at": { + "$date": "2025-09-27T11:07:44.591Z" + }, + "__v": 0, + "image": "food_1728376290215.png" +}, +{ + "_id": { + "$oid": "66eecf86f7ba01006213a025" + }, + "price": 1390000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "6208a9511ee4b0270db4c722" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:52:06.280Z" + }, + "updated_at": { + "$date": "2025-09-27T11:07:50.877Z" + }, + "__v": 0, + "image": "food_1728376953071.png" +}, +{ + "_id": { + "$oid": "66eecf9ef7ba01006213a032" + }, + "price": 1610000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "6208a9511ee4b0270db4c722" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:52:30.244Z" + }, + "updated_at": { + "$date": "2025-09-27T11:07:58.411Z" + }, + "__v": 0, + "image": "food_1728377261101.png" +}, +{ + "_id": { + "$oid": "66eecfb6f7ba01006213a03c" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس رومانو", + "description": "", + "short_description": "", + "category": { + "$oid": "6208a9511ee4b0270db4c722" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:52:54.484Z" + }, + "updated_at": { + "$date": "2025-09-27T11:08:08.236Z" + }, + "__v": 0, + "image": "food_1728376208132.png" +}, +{ + "_id": { + "$oid": "66eed134f7ba01006213a06f" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو کامرشیال", + "description": "", + "short_description": "", + "category": { + "$oid": "6207a2c31ee4b0270db4c43c" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-21T13:59:16.832Z" + }, + "updated_at": { + "$date": "2025-09-27T11:08:28.062Z" + }, + "__v": 0, + "image": "food_1729758879931.png" +}, +{ + "_id": { + "$oid": "66f03d57f7ba01006213c246" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه لاهیجان 2 کاپ", + "description": "برگ دستچین شده مزارع لاهیجان،همراه با تاپینگ دارچین، زعفران یا هل", + "short_description": "", + "category": { + "$oid": "6207a2ee1ee4b0270db4c44f" + }, + "index": 1, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-22T15:52:55.711Z" + }, + "updated_at": { + "$date": "2025-11-13T11:52:41.089Z" + }, + "__v": 0, + "image": "food_1728377477277.png" +}, +{ + "_id": { + "$oid": "66f160dbf7ba01006213d7e2" + }, + "price": 4350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد چاینیز(new)", + "description": "کاهو،سینه مرغ سوخاری،هویج اسپاگتی،سس پینات باتر(تند)، بادام زمینی،کلم بنفش،پیازچه،گشنیز تازه،خیار،بیبی اسفناج،چیپس بادمجان،میکروگرین، رایس نودل", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-23T12:36:43.652Z" + }, + "updated_at": { + "$date": "2025-12-25T12:36:59.826Z" + }, + "__v": 0, + "image": "food_1728306986068.png" +}, +{ + "_id": { + "$oid": "66f4428ef7ba010062140b97" + }, + "price": 7850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو گردن ", + "description": "گردن گوسفندی حدود 600 گرم همراه با برنج و دورچین ", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2024-09-25T17:04:14.686Z" + }, + "updated_at": { + "$date": "2024-09-25T17:04:14.686Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "66f70b10f7ba010062145a30" + }, + "price": 2230000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت فرایز", + "description": "سیب زمینی خلالی،سس قارچ و خامه", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-27T19:44:16.301Z" + }, + "updated_at": { + "$date": "2025-12-25T12:37:13.759Z" + }, + "__v": 0, + "image": "food_1729757889287.png" +}, +{ + "_id": { + "$oid": "66f70b89f7ba010062145a3a" + }, + "price": 3370000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نان سیر", + "description": "خمیر ایتالیایی،میکس پنیر،سس سیر", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-27T19:46:17.950Z" + }, + "updated_at": { + "$date": "2025-12-25T12:37:23.122Z" + }, + "__v": 0, + "image": "food_1729757637426.png" +}, +{ + "_id": { + "$oid": "66f83893f7ba0100621468b4" + }, + "price": 1970000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رول سوخاری", + "description": "مرغ سوخاری شده،پنیر گودا", + "short_description": "", + "category": { + "$oid": "6207a1aa1ee4b0270db4c3d0" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-09-28T17:10:43.654Z" + }, + "updated_at": { + "$date": "2025-12-25T12:37:42.750Z" + }, + "__v": 0, + "image": "food_1729757745572.png" +}, +{ + "_id": { + "$oid": "66fbec4df7ba01006214a648" + }, + "price": 9850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیزلر استیک", + "description": "پوره سیب زمینی،دورچین سبزیجات،سس قارچ،فیله گوساله سروشده در ظرف چدن", + "short_description": "", + "category": { + "$oid": "6207a2421ee4b0270db4c40b" + }, + "index": 1, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-10-01T12:34:21.114Z" + }, + "updated_at": { + "$date": "2025-12-25T12:37:53.899Z" + }, + "__v": 0, + "image": "food_1729758019524.png" +}, +{ + "_id": { + "$oid": "66fd3f23f7ba01006214bc97" + }, + "price": 4150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فیله استریپس(new)", + "description": "سه تیکه فیله مرغ پولکی،سیب زمینی،ساید سالاد،سس مخصوص", + "short_description": "", + "category": { + "$oid": "6207a2421ee4b0270db4c40b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-10-02T12:40:03.804Z" + }, + "updated_at": { + "$date": "2025-12-25T12:38:06.678Z" + }, + "__v": 0, + "image": "food_1739472531418.png" +}, +{ + "_id": { + "$oid": "670269ac5e3952005743f0f1" + }, + "price": 5450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ته چین گوشت و بادمجان", + "description": "ته چین،گوشت ماهیچه گوساله،چیپس بادمجان،سس مخصوص", + "short_description": "", + "category": { + "$oid": "6207a2141ee4b0270db4c3f8" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-10-06T10:42:52.915Z" + }, + "updated_at": { + "$date": "2025-12-25T12:38:26.629Z" + }, + "__v": 0, + "image": "food_1728331171079.png" +}, +{ + "_id": { + "$oid": "670281d15e3952005743f2a0" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "براونی کیت کت", + "description": "یک اسلایس براونی کیت کت", + "short_description": "", + "category": { + "$oid": "6208a93b1ee4b0270db4c715" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-10-06T12:25:53.218Z" + }, + "updated_at": { + "$date": "2025-08-21T12:12:12.028Z" + }, + "__v": 0, + "image": "food_1728221807368.png" +}, +{ + "_id": { + "$oid": "670282ee5e3952005743f2c6" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "براونی پنیری همراه با بستنی", + "description": "یک اسلایس کیک براونی به همراه یک اسکوپ بستنی", + "short_description": "", + "category": { + "$oid": "6208a93b1ee4b0270db4c715" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-10-06T12:30:38.624Z" + }, + "updated_at": { + "$date": "2025-08-21T12:12:41.624Z" + }, + "__v": 0, + "image": "food_1729759080723.png" +}, +{ + "_id": { + "$oid": "67080f075e395200574477d2" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه ", + "description": "", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2024-10-10T17:29:43.628Z" + }, + "updated_at": { + "$date": "2025-03-31T14:38:43.938Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "670810755e39520057447843" + }, + "price": 3450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وجی لاور new", + "description": "سس پستو. پنیر پیتزا.کدو طعم دار شده.بروکلی.گوجه خشک مزه دار شده.زیتون سیاه.پارمژان.چیپس هویج.شاتسس کچاپ", + "short_description": "", + "category": { + "$oid": "6519720759383e8d7551df62" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2024-10-10T17:35:49.538Z" + }, + "updated_at": { + "$date": "2025-03-31T13:47:46.415Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "670949e75e39520057449ee1" + }, + "price": 2750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زرشک پلو با مرغ", + "description": "ران مرغ جا افتاده در سس هویج و الو-برنج ایرانی-نثار-دورچین", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2024-10-11T15:53:11.061Z" + }, + "updated_at": { + "$date": "2025-03-31T14:38:06.530Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "670a3a975e3952005744b7f7" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برگر کلاسیک", + "description": "نان برگر، برگر ۱۵۰ گرمی، گوجه فرنگی، کاهو لوتوس، پیازکاراملی، خیار، سس مخصوص، ساید سالاد و سیب زمینی(سرو سالن)", + "short_description": "", + "category": { + "$oid": "64ae92ed98ff3c7414486796" + }, + "index": 1, + "storeId": { + "$oid": "61fe34411ee4b0270db4a459" + }, + "created_at": { + "$date": "2024-10-12T09:00:07.388Z" + }, + "updated_at": { + "$date": "2024-10-12T09:00:07.388Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "670fc58f0c93e90057b8480e" + }, + "price": 4950000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "قیمه نثار", + "description": "", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2024-10-16T13:54:23.145Z" + }, + "updated_at": { + "$date": "2025-03-31T14:36:20.343Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "670fc5d50c93e90057b84818" + }, + "price": 3700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اکبر جوجه", + "description": "", + "short_description": "", + "category": { + "$oid": "651971e159383e8d7551df50" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2024-10-16T13:55:33.134Z" + }, + "updated_at": { + "$date": "2025-03-31T14:36:44.243Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6712503b7fa0510057e89c4e" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "اب گازدار،سیروپ،لیموتازه،نعنا،یخ کراش", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-10-18T12:10:35.606Z" + }, + "updated_at": { + "$date": "2025-09-27T11:14:18.667Z" + }, + "__v": 0, + "image": "food_1729756970934.png" +}, +{ + "_id": { + "$oid": "671250b17fa0510057e89c5b" + }, + "price": 1490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "میکس لیمو تازه،سیروپ.یخ.اب سودا", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-10-18T12:12:33.612Z" + }, + "updated_at": { + "$date": "2025-09-27T11:17:23.013Z" + }, + "__v": 0, + "image": "food_1729756906514.png" +}, +{ + "_id": { + "$oid": "6712527d7fa0510057e89ca5" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "براونی پنیری", + "description": "یک اسلابس کیک برانی", + "short_description": "", + "category": { + "$oid": "6208a93b1ee4b0270db4c715" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-10-18T12:20:13.993Z" + }, + "updated_at": { + "$date": "2025-08-21T12:13:18.683Z" + }, + "__v": 0, + "image": "food_1729800488338.png" +}, +{ + "_id": { + "$oid": "671518410896e400574becd5" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیزکیک لوتوس", + "description": "یک اسلایس چیزکیک لوتوس", + "short_description": "", + "category": { + "$oid": "6208a93b1ee4b0270db4c715" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-10-20T14:48:33.199Z" + }, + "updated_at": { + "$date": "2025-10-07T11:40:27.949Z" + }, + "__v": 0, + "image": "food_1759837227083.png" +}, +{ + "_id": { + "$oid": "67151b310896e400574bed13" + }, + "price": 1690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ردموهیتو", + "description": "اب گازدار،سیروپ،لیموتازه،نعنا،یخ کراش،سیروپ گرانادین", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-10-20T15:01:05.795Z" + }, + "updated_at": { + "$date": "2025-09-27T11:17:53.967Z" + }, + "__v": 0, + "image": "food_1729755149179.png" +}, +{ + "_id": { + "$oid": "67151bf00896e400574bed20" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اب میوه فصل", + "description": "اب پرتغال طبیعی", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2024-10-20T15:04:16.456Z" + }, + "updated_at": { + "$date": "2025-09-27T11:18:02.153Z" + }, + "__v": 0, + "image": "food_1729755296114.png" +}, +{ + "_id": { + "$oid": "67305a43c3c0100063e6bce1" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک نوتلا", + "description": "3 اسکوپ بستنی وانیل مخلوط شده با شیر پرچرب و شکلات نوتلا", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:01:23.660Z" + }, + "updated_at": { + "$date": "2025-12-12T08:41:11.954Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305a66c3c0100063e6bceb" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک شکلات", + "description": "3 اسکوپ بستنی شکلاتی مخلوط شده با شیر پرچرب ", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:01:58.521Z" + }, + "updated_at": { + "$date": "2025-12-12T08:40:54.227Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305a88c3c0100063e6bcf5" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک موز ", + "description": "3 اسکوپ بستنی وانیل مخلوط شده با شیر پرچرب و موز تازه ", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:02:32.201Z" + }, + "updated_at": { + "$date": "2025-12-12T08:40:05.105Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305b25c3c0100063e6bd20" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک بادام زمینی", + "description": "3 اسکوپ بستنی وانیل مخلوط شده با شیرپرچرب همراه با کره بادوم زمینی ", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:05:09.742Z" + }, + "updated_at": { + "$date": "2025-12-12T08:39:24.628Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305b4ac3c0100063e6bd33" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک کارامل گردو ", + "description": "3 اسکوپ بستنی وانیل مخلوط شده با شیر پرچرب و سیروپ کارامل و گردو ", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:05:46.935Z" + }, + "updated_at": { + "$date": "2025-12-12T08:38:46.640Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305b6ac3c0100063e6bd3d" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک کاپوچینو", + "description": "3 اسکوپ بستنی وانیل مخلوط شده با اسپرسو 50/50", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:06:18.750Z" + }, + "updated_at": { + "$date": "2025-12-12T08:38:02.459Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305b8ec3c0100063e6bd49" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک یونیکورن", + "description": "3 اسکوپ بستنی توت فرنگی مخلوط شده با شیرپرچرب ", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:06:54.829Z" + }, + "updated_at": { + "$date": "2025-12-12T08:37:27.176Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305babc3c0100063e6bd53" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک موزشکلات", + "description": "3 اسکوپ بستنی شکلاتی مخلوط شده با شیرپرچرب همراه با موز تازه", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 8, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:07:23.552Z" + }, + "updated_at": { + "$date": "2025-12-12T08:36:56.484Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305bdec3c0100063e6bd5d" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فریکی فروت", + "description": "3 اسکوپ بستنی میوه ای ، موز ، توت فرنگی ، خامه ", + "short_description": "", + "category": { + "$oid": "6730582dc3c0100063e6bc6e" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:08:14.125Z" + }, + "updated_at": { + "$date": "2025-11-24T18:31:46.760Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305c30c3c0100063e6bd71" + }, + "price": 2300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "معجون", + "description": "3 اسکوپ بستنی معجون همراه با مغزیجات،پودر کنجد ، پودر نارگیل و عسل ", + "short_description": "", + "category": { + "$oid": "6730582dc3c0100063e6bc6e" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:09:36.198Z" + }, + "updated_at": { + "$date": "2025-11-30T18:33:21.779Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305c56c3c0100063e6bd7e" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بهشت شکلات", + "description": "3 اسکوپ بستنی شکلات همراه با کورن فلکس ،شکلات هیس ، یسکوییت شکلاتی ، شوکورول و سس شکلات ", + "short_description": "", + "category": { + "$oid": "6730582dc3c0100063e6bc6e" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:10:14.998Z" + }, + "updated_at": { + "$date": "2025-11-24T18:29:52.935Z" + }, + "__v": 0, + "image": "food_1743526924119.png" +}, +{ + "_id": { + "$oid": "67305d81c3c0100063e6bda8" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ویتامینه معجون", + "description": "بستنی معجون 3 اسکوپ ، مغزیجات ، پودر نارگیل و کنجد ، عسل ،خامه ، موز ، آناناس", + "short_description": "", + "category": { + "$oid": "673064fdc3c0100063e6bf7f" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:15:13.585Z" + }, + "updated_at": { + "$date": "2025-09-10T21:19:43.487Z" + }, + "__v": 0, + "image": "food_1733563611746.png" +}, +{ + "_id": { + "$oid": "67305dbec3c0100063e6bdbc" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چالیس فروت", + "description": "توت فرنگی ، بستنی وانیل ، موز ، بستنی شکلات ، کیک شکلات ، خامه ، شوکورول", + "short_description": "", + "category": { + "$oid": "673058c5c3c0100063e6bca5" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:16:14.678Z" + }, + "updated_at": { + "$date": "2025-11-25T17:32:03.367Z" + }, + "__v": 0, + "image": "food_1733306399133.png" +}, +{ + "_id": { + "$oid": "67305de2c3c0100063e6bdc6" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چالیس کیک", + "description": "بستنی وانیل ، ژله ، کیک شکلاتی ، موز", + "short_description": "", + "category": { + "$oid": "673058c5c3c0100063e6bca5" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:16:50.693Z" + }, + "updated_at": { + "$date": "2025-11-25T17:31:56.175Z" + }, + "__v": 0, + "image": "food_1733306350712.png" +}, +{ + "_id": { + "$oid": "67305e03c3c0100063e6bdd0" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات بستنی", + "description": "دونات شکلات ، بستنی شکلات ، موز ، آناناس ، خامه ، سس شکلات ", + "short_description": "", + "category": { + "$oid": "673058c5c3c0100063e6bca5" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:17:23.499Z" + }, + "updated_at": { + "$date": "2025-11-25T17:32:33.993Z" + }, + "__v": 0, + "image": "food_1733180961735.png" +}, +{ + "_id": { + "$oid": "67305e23c3c0100063e6bdda" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک بستنی", + "description": "بستنی شکلات ، توت فرنگی ، موز، کیک شکلاتی ، خامه ، شوکورول ، سس شکلات ", + "short_description": "", + "category": { + "$oid": "673058c5c3c0100063e6bca5" + }, + "index": 8, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:17:55.503Z" + }, + "updated_at": { + "$date": "2025-11-25T17:32:42.165Z" + }, + "__v": 0, + "image": "food_1733142832782.png" +}, +{ + "_id": { + "$oid": "67305e65c3c0100063e6bdf1" + }, + "price": 2400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برلینر معجون", + "description": "یک عدد دونات ، خامه ، موز ، بستنی معجون 1 اسکوپ ، مغزیجات ، پودر نارگیل و کنجد ، عسل ، سس شکلات ", + "short_description": "", + "category": { + "$oid": "673058c5c3c0100063e6bca5" + }, + "index": 9, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:19:01.566Z" + }, + "updated_at": { + "$date": "2025-11-25T17:35:13.273Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305e96c3c0100063e6bdfb" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسموتی انبه", + "description": "انبه 150 گرم ، یخ ", + "short_description": "", + "category": { + "$oid": "6730591ec3c0100063e6bcb7" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:19:50.147Z" + }, + "updated_at": { + "$date": "2025-11-24T18:59:46.574Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305eb1c3c0100063e6be05" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسموتی ترش", + "description": "آلبالو 150 گرم ، نمک ، گلپر ، یخ", + "short_description": "", + "category": { + "$oid": "6730591ec3c0100063e6bcb7" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:20:17.061Z" + }, + "updated_at": { + "$date": "2025-11-24T18:56:32.101Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305ed3c3c0100063e6be12" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسموتی استوایی", + "description": "انبه ، آناناس ، موز ، یخ ", + "short_description": "", + "category": { + "$oid": "6730591ec3c0100063e6bcb7" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:20:51.240Z" + }, + "updated_at": { + "$date": "2025-11-24T18:56:20.646Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305f18c3c0100063e6be22" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسموتی اناناس", + "description": "", + "short_description": "", + "category": { + "$oid": "6730591ec3c0100063e6bcb7" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:22:00.172Z" + }, + "updated_at": { + "$date": "2025-11-24T18:56:41.814Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305f56c3c0100063e6be35" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسموتی سیب موز", + "description": "", + "short_description": "", + "category": { + "$oid": "6730591ec3c0100063e6bcb7" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:23:02.739Z" + }, + "updated_at": { + "$date": "2025-11-24T18:55:34.693Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67305fa1c3c0100063e6be55" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کارامل ماکیاتو", + "description": "شیر پرچرب ، اسپرسو 50/50 ، سیروپ کارامل ، یخ", + "short_description": "", + "category": { + "$oid": "67305938c3c0100063e6bcc0" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:24:17.286Z" + }, + "updated_at": { + "$date": "2025-11-24T18:48:52.021Z" + }, + "__v": 0, + "image": "food_1731760342565.png" +}, +{ + "_id": { + "$oid": "67305fc7c3c0100063e6be62" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو", + "description": "اسپرسو 50/50 ،آب ، یخ", + "short_description": "", + "category": { + "$oid": "67305938c3c0100063e6bcc0" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:24:55.327Z" + }, + "updated_at": { + "$date": "2025-11-24T18:48:44.472Z" + }, + "__v": 0, + "image": "food_1731760427059.png" +}, +{ + "_id": { + "$oid": "67305ff0c3c0100063e6be6c" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا", + "description": "شیر پرچرب ، اسپرسو 50/50 ، سیروپ شکلات ، یخ", + "short_description": "", + "category": { + "$oid": "67305938c3c0100063e6bcc0" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:25:36.058Z" + }, + "updated_at": { + "$date": "2025-11-24T18:48:26.629Z" + }, + "__v": 0, + "image": "food_1731759538021.png" +}, +{ + "_id": { + "$oid": "6730600dc3c0100063e6be76" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لته", + "description": "شیر پرچرب ، اسپرسو 50/50 ، یخ", + "short_description": "", + "category": { + "$oid": "67305938c3c0100063e6bcc0" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:26:05.380Z" + }, + "updated_at": { + "$date": "2025-11-24T18:47:36.739Z" + }, + "__v": 0, + "image": "food_1731759571881.png" +}, +{ + "_id": { + "$oid": "67306684c3c0100063e6bfc7" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ", + "description": "50 درصد عربیکا ، 50 رصد روبوستا ", + "short_description": "", + "category": { + "$oid": "67306405c3c0100063e6bf3f" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:53:40.363Z" + }, + "updated_at": { + "$date": "2025-11-04T11:14:53.931Z" + }, + "__v": 0, + "image": "food_1733143237751.png" +}, +{ + "_id": { + "$oid": "673066a9c3c0100063e6bfd1" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه فرانسه ", + "description": "فرانسه 70درصد عربیکا ، 30 درصد روبوستا ", + "short_description": "", + "category": { + "$oid": "67306405c3c0100063e6bf3f" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:54:17.936Z" + }, + "updated_at": { + "$date": "2025-09-16T10:07:36.146Z" + }, + "__v": 0, + "image": "food_1733143297427.png" +}, +{ + "_id": { + "$oid": "673066c8c3c0100063e6bfdb" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو", + "description": "شیر پرچرب ،اسپرسو 50/50 ، سیروپ کارامل ", + "short_description": "", + "category": { + "$oid": "67306405c3c0100063e6bf3f" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:54:48.743Z" + }, + "updated_at": { + "$date": "2025-09-16T10:07:12.787Z" + }, + "__v": 0, + "image": "food_1733180816485.png" +}, +{ + "_id": { + "$oid": "673066e5c3c0100063e6bfea" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "شیر پرچرب ،اسپرسو 50/50", + "short_description": "", + "category": { + "$oid": "67306405c3c0100063e6bf3f" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T07:55:17.399Z" + }, + "updated_at": { + "$date": "2025-09-16T10:06:44.515Z" + }, + "__v": 0, + "image": "food_1733180883149.png" +}, +{ + "_id": { + "$oid": "67306804c3c0100063e6bff4" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو", + "description": "اسپرسو 50/50 ، آب جوش", + "short_description": "", + "category": { + "$oid": "67306405c3c0100063e6bf3f" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T08:00:04.111Z" + }, + "updated_at": { + "$date": "2025-09-16T10:05:24.253Z" + }, + "__v": 0, + "image": "food_1733180916579.png" +}, +{ + "_id": { + "$oid": "6730683ac3c0100063e6c001" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو", + "description": "بستنی وانیل 1 اسکوپ استاندارد ،اسپرسو 50/50", + "short_description": "", + "category": { + "$oid": "67306405c3c0100063e6bf3f" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T08:00:58.354Z" + }, + "updated_at": { + "$date": "2025-09-16T10:17:27.634Z" + }, + "__v": 0, + "image": "food_1733180792530.png" +}, +{ + "_id": { + "$oid": "67306860c3c0100063e6c012" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "شیر پرچرب ،اسپرسو 50/50", + "short_description": "", + "category": { + "$oid": "67306405c3c0100063e6bf3f" + }, + "index": 8, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T08:01:36.748Z" + }, + "updated_at": { + "$date": "2025-09-16T10:17:55.721Z" + }, + "__v": 0, + "image": "food_1733180650251.png" +}, +{ + "_id": { + "$oid": "673068b2c3c0100063e6c01f" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت اسپرسو", + "description": "شیر پرچرب ،پودر شکلات ، اسپرسو 50/50", + "short_description": "", + "category": { + "$oid": "67306484c3c0100063e6bf5b" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T08:02:58.120Z" + }, + "updated_at": { + "$date": "2025-11-25T17:37:35.260Z" + }, + "__v": 0, + "image": "food_1733143171406.png" +}, +{ + "_id": { + "$oid": "67307718c3c0100063e6c117" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت نوتلا", + "description": "شیر پرچرب ،پودر شکلات ، شکلات نوتلا", + "short_description": "", + "category": { + "$oid": "67306484c3c0100063e6bf5b" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:04:24.911Z" + }, + "updated_at": { + "$date": "2025-11-25T17:37:01.533Z" + }, + "__v": 0, + "image": "food_1733143139138.png" +}, +{ + "_id": { + "$oid": "6730773cc3c0100063e6c121" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "67306484c3c0100063e6bf5b" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:05:00.939Z" + }, + "updated_at": { + "$date": "2025-11-25T17:36:38.324Z" + }, + "__v": 0, + "image": "food_1733143112734.png" +}, +{ + "_id": { + "$oid": "67307774c3c0100063e6c12e" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت دارک", + "description": "", + "short_description": "", + "category": { + "$oid": "67306484c3c0100063e6bf5b" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:05:56.249Z" + }, + "updated_at": { + "$date": "2025-11-25T17:36:35.057Z" + }, + "__v": 0, + "image": "food_1733143077005.png" +}, +{ + "_id": { + "$oid": "6730779cc3c0100063e6c138" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "67306484c3c0100063e6bf5b" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:06:36.874Z" + }, + "updated_at": { + "$date": "2025-11-25T17:38:19.831Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673077bac3c0100063e6c145" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "پینک چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "67306484c3c0100063e6bf5b" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:07:06.522Z" + }, + "updated_at": { + "$date": "2025-11-25T17:38:17.746Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67307816c3c0100063e6c15e" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیرکاکائو", + "description": "", + "short_description": "", + "category": { + "$oid": "67306484c3c0100063e6bf5b" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:08:38.383Z" + }, + "updated_at": { + "$date": "2025-11-25T17:39:07.608Z" + }, + "__v": 0, + "image": "food_1733142954323.png" +}, +{ + "_id": { + "$oid": "6730783bc3c0100063e6c168" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیرنسکافه", + "description": "", + "short_description": "", + "category": { + "$oid": "67306484c3c0100063e6bf5b" + }, + "index": 8, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:09:15.168Z" + }, + "updated_at": { + "$date": "2025-11-25T17:39:21.826Z" + }, + "__v": 0, + "image": "food_1733142892750.png" +}, +{ + "_id": { + "$oid": "6730787ac3c0100063e6c172" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "67306484c3c0100063e6bf5b" + }, + "index": 9, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:10:18.783Z" + }, + "updated_at": { + "$date": "2025-11-25T17:40:01.716Z" + }, + "__v": 0, + "image": "food_1733142461417.png" +}, +{ + "_id": { + "$oid": "673078a6c3c0100063e6c17f" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر عسل دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "67306484c3c0100063e6bf5b" + }, + "index": 10, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:11:02.655Z" + }, + "updated_at": { + "$date": "2025-11-25T17:40:25.561Z" + }, + "__v": 0, + "image": "food_1733142510825.png" +}, +{ + "_id": { + "$oid": "673078fcc3c0100063e6c19e" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه", + "description": "چای ایرانی دمی ", + "short_description": "", + "category": { + "$oid": "67306494c3c0100063e6bf64" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:12:28.065Z" + }, + "updated_at": { + "$date": "2024-12-02T12:29:13.229Z" + }, + "__v": 0, + "image": "food_1733142551995.png" +}, +{ + "_id": { + "$oid": "67307954c3c0100063e6c1b2" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ترش ", + "description": "", + "short_description": "", + "category": { + "$oid": "67306494c3c0100063e6bf64" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:13:56.329Z" + }, + "updated_at": { + "$date": "2025-01-19T13:01:58.130Z" + }, + "__v": 0, + "image": "food_1733142584507.png" +}, +{ + "_id": { + "$oid": "67307988c3c0100063e6c1c5" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش به", + "description": "", + "short_description": "", + "category": { + "$oid": "67306494c3c0100063e6bf64" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:14:48.247Z" + }, + "updated_at": { + "$date": "2025-01-19T13:02:26.718Z" + }, + "__v": 0, + "image": "food_1733142615641.png" +}, +{ + "_id": { + "$oid": "67307a0dc3c0100063e6c1d5" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش زنجبیل", + "description": "", + "short_description": "", + "category": { + "$oid": "67306494c3c0100063e6bf64" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:17:01.651Z" + }, + "updated_at": { + "$date": "2025-01-19T13:02:54.238Z" + }, + "__v": 0, + "image": "food_1733142649142.png" +}, +{ + "_id": { + "$oid": "67307a2bc3c0100063e6c1df" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گل گاو زبان", + "description": "", + "short_description": "", + "category": { + "$oid": "67306494c3c0100063e6bf64" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:17:31.254Z" + }, + "updated_at": { + "$date": "2025-09-16T10:25:53.053Z" + }, + "__v": 0, + "image": "food_1733142675241.png" +}, +{ + "_id": { + "$oid": "67307a49c3c0100063e6c1e9" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "67306494c3c0100063e6bf64" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:18:01.926Z" + }, + "updated_at": { + "$date": "2025-01-19T13:01:35.018Z" + }, + "__v": 0, + "image": "food_1733142720798.png" +}, +{ + "_id": { + "$oid": "67307ab5c3c0100063e6c1fe" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس معجون ", + "description": "3 اسکوپ بستنی معجون ، موز خورد شده ", + "short_description": "", + "category": { + "$oid": "673064e6c3c0100063e6bf76" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:19:49.638Z" + }, + "updated_at": { + "$date": "2025-09-03T10:49:38.429Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67307ac8c3c0100063e6c208" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس شکلات", + "description": "3 اسکوپ بستنی شکلات ، موز خورد شده ", + "short_description": "", + "category": { + "$oid": "673064e6c3c0100063e6bf76" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:20:08.802Z" + }, + "updated_at": { + "$date": "2025-09-03T10:34:30.585Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67307aeac3c0100063e6c21c" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "توت فرنگی", + "description": "3 اسکوپ بستنی توت فرنگی، موز خورد شده ", + "short_description": "", + "category": { + "$oid": "673064e6c3c0100063e6bf76" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:20:42.983Z" + }, + "updated_at": { + "$date": "2025-09-03T10:34:44.152Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67307b01c3c0100063e6c226" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "طالبی", + "description": "3 اسکوپ بستنی طالبی، موز خورد شده ", + "short_description": "", + "category": { + "$oid": "673064e6c3c0100063e6bf76" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:21:05.968Z" + }, + "updated_at": { + "$date": "2025-09-03T10:35:00.373Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67307b23c3c0100063e6c233" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موز", + "description": "3 اسکوپ بستنی وانیل ، موز تازه ، موز خورد شده ", + "short_description": "", + "category": { + "$oid": "673064e6c3c0100063e6bf76" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:21:39.733Z" + }, + "updated_at": { + "$date": "2025-09-03T10:35:19.908Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67307b3fc3c0100063e6c23d" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "انبه", + "description": "3 اسکوپ بستنی وانیل ، انبه 100 گرم، موز خورد شده ", + "short_description": "", + "category": { + "$oid": "673064e6c3c0100063e6bf76" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:22:07.754Z" + }, + "updated_at": { + "$date": "2025-09-03T10:35:58.645Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67307bbdc3c0100063e6c26a" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیرموز", + "description": "شیر پرچرب ، بستنی وانیل ، موز تازه ، بدون هیچگونه افزودنی ", + "short_description": "", + "category": { + "$oid": "673064fdc3c0100063e6bf7f" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:24:13.375Z" + }, + "updated_at": { + "$date": "2025-09-03T10:36:21.026Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67307ce2c3c0100063e6c29c" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "آب پرتقال", + "description": "آب پرتقال طبیعی ", + "short_description": "", + "category": { + "$oid": "6730651dc3c0100063e6bf88" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:29:06.757Z" + }, + "updated_at": { + "$date": "2025-04-12T17:06:24.454Z" + }, + "__v": 0, + "image": "food_1731760921692.png" +}, +{ + "_id": { + "$oid": "67307d3cc3c0100063e6c2ba" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "آب طالبی", + "description": "بلند شده آب طالبی طبیعی و 1 اسکوپ بستنی طالبی ", + "short_description": "", + "category": { + "$oid": "6730651dc3c0100063e6bf88" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:30:36.474Z" + }, + "updated_at": { + "$date": "2025-09-16T10:26:59.807Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67307e2ac3c0100063e6c2de" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "6730651dc3c0100063e6bf88" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:34:34.416Z" + }, + "updated_at": { + "$date": "2024-11-14T21:38:03.213Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67307e57c3c0100063e6c2fd" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "6730651dc3c0100063e6bf88" + }, + "index": 8, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-10T09:35:19.010Z" + }, + "updated_at": { + "$date": "2024-11-14T21:36:11.765Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731b080c3c0100063e6df14" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "نوتلا فست", + "description": "یک عدد دونات شکلات ، نوتلا تیوپی 1 عدد", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:21:36.583Z" + }, + "updated_at": { + "$date": "2025-12-12T09:11:39.375Z" + }, + "__v": 0, + "image": "food_1733180737310.png" +}, +{ + "_id": { + "$oid": "6731b0a8c3c0100063e6df2b" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تیرامیسو", + "description": "یک عدد دونات شیری همراه با بیسکویت لیدی فینگر و پودر قهوه فوری ", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:22:16.978Z" + }, + "updated_at": { + "$date": "2025-09-03T10:37:18.335Z" + }, + "__v": 0, + "image": "food_1733180706730.png" +}, +{ + "_id": { + "$oid": "6731b0c0c3c0100063e6df35" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوتلا شیشه ای", + "description": "یک عدد دونات شکلات ، کورن فلکس شکلاتی ، 1 عدد دونات نوتلا شیشه 30 گرمی", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:22:40.223Z" + }, + "updated_at": { + "$date": "2025-12-12T09:12:12.179Z" + }, + "__v": 0, + "image": "food_1733146270989.png" +}, +{ + "_id": { + "$oid": "6731b0d9c3c0100063e6df3f" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسنیکرز", + "description": "یک عدد دونات شکلات همراه با تکه های شکلات اسنیکرز ، خلال بادام ", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:23:05.098Z" + }, + "updated_at": { + "$date": "2025-09-17T15:44:48.892Z" + }, + "__v": 0, + "image": "food_1733146241787.png" +}, +{ + "_id": { + "$oid": "6731b0eec3c0100063e6df49" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیندر", + "description": "یک عدد دونات شکلات ، 2 عدد کیندر ", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:23:26.158Z" + }, + "updated_at": { + "$date": "2025-12-12T08:32:12.775Z" + }, + "__v": 0, + "image": "food_1733146295503.png" +}, +{ + "_id": { + "$oid": "6731b101c3c0100063e6df53" + }, + "price": 990000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوتلا", + "description": "یک عدد دونات روکش نوتلا ", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:23:45.022Z" + }, + "updated_at": { + "$date": "2025-09-03T10:43:35.793Z" + }, + "__v": 0, + "image": "food_1733146214104.png" +}, +{ + "_id": { + "$oid": "6731b115c3c0100063e6df5d" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیت کت", + "description": "یک عدد دونات شکلات همراه با 2عدد شکلات کیت کت ", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 8, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:24:05.938Z" + }, + "updated_at": { + "$date": "2025-09-17T15:42:57.252Z" + }, + "__v": 0, + "image": "food_1733146319268.png" +}, +{ + "_id": { + "$oid": "6731b13bc3c0100063e6df67" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "توییکس", + "description": "یک عدد دونات شکلات همراه با 1عدد شکلات توییکس", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 9, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:24:43.637Z" + }, + "updated_at": { + "$date": "2025-09-17T15:45:56.357Z" + }, + "__v": 0, + "image": "food_1733146188871.png" +}, +{ + "_id": { + "$oid": "6731b14fc3c0100063e6df71" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ام اند ام", + "description": "یک عدد دونات شکلات شیری همراه با 10عدد اسمارتیز m&m ، سس شکلات توت فرنگی", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 10, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:25:03.263Z" + }, + "updated_at": { + "$date": "2025-04-12T17:05:22.260Z" + }, + "__v": 0, + "image": "food_1733146348034.png" +}, +{ + "_id": { + "$oid": "6731b162c3c0100063e6df7b" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هوبی", + "description": "یک عدد دونات شکلات همراه با تکه های شکلات هوبی ", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 11, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:25:22.024Z" + }, + "updated_at": { + "$date": "2025-09-03T09:44:14.909Z" + }, + "__v": 0, + "image": "food_1733146551965.png" +}, +{ + "_id": { + "$oid": "6731b174c3c0100063e6df85" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اورئو", + "description": "یک عدد دونات شکلات شیری همراه با بیسکویت اورئو و پودر بیسکویت ", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 12, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:25:40.226Z" + }, + "updated_at": { + "$date": "2025-09-03T09:45:11.341Z" + }, + "__v": 0, + "image": "food_1733146582932.png" +}, +{ + "_id": { + "$oid": "6731b18cc3c0100063e6df92" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وبی", + "description": "یک عدد دونات شکلات طرح دار ", + "short_description": "", + "category": { + "$oid": "6731af6ec3c0100063e6de95" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:26:04.035Z" + }, + "updated_at": { + "$date": "2025-11-24T19:24:38.663Z" + }, + "__v": 0, + "image": "food_1733180029406.png" +}, +{ + "_id": { + "$oid": "6731b4dcc3c0100063e6dfbd" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپیرال", + "description": "یک عدد دونات شیری طرح دار ", + "short_description": "", + "category": { + "$oid": "6731af6ec3c0100063e6de95" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:40:12.540Z" + }, + "updated_at": { + "$date": "2025-11-24T19:24:24.804Z" + }, + "__v": 0, + "image": "food_1733180052223.png" +}, +{ + "_id": { + "$oid": "6731b4f3c3c0100063e6dfc7" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استریپی", + "description": "یک عدد دونات شکلات طرح دار ", + "short_description": "", + "category": { + "$oid": "6731af6ec3c0100063e6de95" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:40:35.045Z" + }, + "updated_at": { + "$date": "2025-11-24T19:24:07.894Z" + }, + "__v": 0, + "image": "food_1733180073573.png" +}, +{ + "_id": { + "$oid": "6731b516c3c0100063e6dfd1" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زبرا", + "description": "یک عدد دونات شکلات طرح دار ", + "short_description": "", + "category": { + "$oid": "6731af6ec3c0100063e6de95" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:41:10.448Z" + }, + "updated_at": { + "$date": "2025-11-24T19:23:57.145Z" + }, + "__v": 0, + "image": "food_1733180093424.png" +}, +{ + "_id": { + "$oid": "6731b525c3c0100063e6dfdb" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رابی", + "description": "یک عدد دونات شکلات طرح دار ", + "short_description": "", + "category": { + "$oid": "6731af6ec3c0100063e6de95" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:41:25.682Z" + }, + "updated_at": { + "$date": "2025-11-24T19:23:43.181Z" + }, + "__v": 0, + "image": "food_1733180179189.png" +}, +{ + "_id": { + "$oid": "6731b537c3c0100063e6dfe5" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رزتا", + "description": "یک عدد دونات شکلات طرح دار ", + "short_description": "", + "category": { + "$oid": "6731af6ec3c0100063e6de95" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:41:43.768Z" + }, + "updated_at": { + "$date": "2025-11-24T19:23:22.598Z" + }, + "__v": 0, + "image": "food_1733180161432.png" +}, +{ + "_id": { + "$oid": "6731b559c3c0100063e6dfef" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مینیون", + "description": "یک عدد دونات موزی طرح دار ", + "short_description": "", + "category": { + "$oid": "6731af7fc3c0100063e6de9e" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:42:17.151Z" + }, + "updated_at": { + "$date": "2025-09-03T10:30:00.035Z" + }, + "__v": 0, + "image": "food_1731576162224.png" +}, +{ + "_id": { + "$oid": "6731b56fc3c0100063e6dff9" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کافی", + "description": "یک عدد دونات شکلات شیری ، پودر نسکافه ", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:42:39.982Z" + }, + "updated_at": { + "$date": "2025-11-24T18:23:54.789Z" + }, + "__v": 0, + "image": "food_1733180206128.png" +}, +{ + "_id": { + "$oid": "6731b58bc3c0100063e6e004" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات شکلات", + "description": "یک عدد دونات با روکش شکلات شیرین", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:43:07.796Z" + }, + "updated_at": { + "$date": "2025-11-24T18:23:48.548Z" + }, + "__v": 0, + "image": "food_1733180258080.png" +}, +{ + "_id": { + "$oid": "6731b5a4c3c0100063e6e00f" + }, + "price": 960000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات توت فرنگی", + "description": "یک عدد دونات با روکش شکلات توت فرنگی ، 1 عدد توت فرنگی", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:43:32.543Z" + }, + "updated_at": { + "$date": "2025-11-24T18:25:53.025Z" + }, + "__v": 0, + "image": "food_1733180232243.png" +}, +{ + "_id": { + "$oid": "6731b66fc3c0100063e6e02b" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات دارک", + "description": "یک عدد دونات شکلات 40% ", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:46:55.149Z" + }, + "updated_at": { + "$date": "2025-11-24T18:23:37.690Z" + }, + "__v": 0, + "image": "food_1733180128527.png" +}, +{ + "_id": { + "$oid": "6731b686c3c0100063e6e035" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات شیری", + "description": "یک عدد دونات با روکش شکلات شیری ", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:47:18.923Z" + }, + "updated_at": { + "$date": "2025-11-24T18:23:30.010Z" + }, + "__v": 0, + "image": "food_1733178966498.png" +}, +{ + "_id": { + "$oid": "6731b69dc3c0100063e6e03f" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات شکری", + "description": "یک عدد دونات ساده همراه با شکر ", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:47:41.349Z" + }, + "updated_at": { + "$date": "2025-11-24T18:30:17.144Z" + }, + "__v": 0, + "image": "food_1733179002531.png" +}, +{ + "_id": { + "$oid": "6731b6bcc3c0100063e6e049" + }, + "price": 960000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات نارگیل", + "description": "یک عدد دونات شکلات شیری همراه با پودر نارگیل و شکلات اسپارک ", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:48:12.234Z" + }, + "updated_at": { + "$date": "2025-11-24T18:34:29.449Z" + }, + "__v": 0, + "image": "food_1733179035398.png" +}, +{ + "_id": { + "$oid": "6731b6dcc3c0100063e6e053" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات کارامل", + "description": "یک عدد دونات ساده همراه با کارامل و شکلات تکه شده نانی ", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 8, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:48:44.489Z" + }, + "updated_at": { + "$date": "2025-11-24T18:28:17.476Z" + }, + "__v": 0, + "image": "food_1733179058776.png" +}, +{ + "_id": { + "$oid": "6731b6f0c3c0100063e6e05d" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات دارچین", + "description": "یک عدد دونات ساده همراه با دارچین ", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 9, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:49:04.977Z" + }, + "updated_at": { + "$date": "2025-11-24T18:26:58.707Z" + }, + "__v": 0, + "image": "food_1733179092163.png" +}, +{ + "_id": { + "$oid": "6731b771c3c0100063e6e070" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برلینر نوتلا", + "description": "یک عدد دونات برش خورده ، شکلات نوتلا ", + "short_description": "", + "category": { + "$oid": "6731aff4c3c0100063e6decb" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:51:13.062Z" + }, + "updated_at": { + "$date": "2025-11-25T17:29:04.109Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731b7adc3c0100063e6e07d" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کره بادام زمینی عسل", + "description": "یک عدد دونات برش خورده ، کره بادام زمینی ، عسل ", + "short_description": "", + "category": { + "$oid": "6731aff4c3c0100063e6decb" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:52:13.726Z" + }, + "updated_at": { + "$date": "2025-11-25T17:29:56.422Z" + }, + "__v": 0, + "image": "food_1733143433807.png" +}, +{ + "_id": { + "$oid": "6731b7c5c3c0100063e6e087" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کرم شیر", + "description": "یک عدد دونات برش خورده ، کرم شیر ساده ", + "short_description": "", + "category": { + "$oid": "6731aff4c3c0100063e6decb" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:52:37.147Z" + }, + "updated_at": { + "$date": "2025-11-25T17:29:01.189Z" + }, + "__v": 0, + "image": "food_1733145942477.png" +}, +{ + "_id": { + "$oid": "6731b7dfc3c0100063e6e09a" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برلینر دارک", + "description": "یک عدد دونات برش خورده ، شکلات دارک 40%", + "short_description": "", + "category": { + "$oid": "6731aff4c3c0100063e6decb" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:53:03.520Z" + }, + "updated_at": { + "$date": "2025-11-25T17:28:17.795Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731b829c3c0100063e6e0c9" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست نات برجی", + "description": "دو عدد دونات رست شده ، موز ، توت فرنگی ، شکلات نوتلا، کرم شیر ، خامه ", + "short_description": "", + "category": { + "$oid": "6731afdfc3c0100063e6dec2" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:54:17.987Z" + }, + "updated_at": { + "$date": "2025-11-24T19:32:17.814Z" + }, + "__v": 0, + "image": "food_1731756831421.png" +}, +{ + "_id": { + "$oid": "6731b8d9c3c0100063e6e0dd" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست نات توت فرنگی", + "description": "یک عدد دونات رست شده ، توت فرنگی ، بستنی توت فرنگی ،خامه ،شکلات شیرین ", + "short_description": "", + "category": { + "$oid": "6731afdfc3c0100063e6dec2" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:57:13.950Z" + }, + "updated_at": { + "$date": "2025-12-12T08:44:32.523Z" + }, + "__v": 0, + "image": "food_1733179129124.png" +}, +{ + "_id": { + "$oid": "6731b8f2c3c0100063e6e0e7" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست نات چوبی ", + "description": "یک عدد دونات رست شده ، شکلات به دلخواه ", + "short_description": "", + "category": { + "$oid": "6731afdfc3c0100063e6dec2" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:57:38.083Z" + }, + "updated_at": { + "$date": "2025-12-12T08:44:01.863Z" + }, + "__v": 0, + "image": "food_1733179150342.png" +}, +{ + "_id": { + "$oid": "6731b92ac3c0100063e6e0f1" + }, + "price": 990000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست نات کارامل", + "description": "یک عدد دونات رست شده ، کارامل ، خلال بادام ", + "short_description": "", + "category": { + "$oid": "6731afdfc3c0100063e6dec2" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T07:58:34.095Z" + }, + "updated_at": { + "$date": "2025-09-02T19:04:44.642Z" + }, + "__v": 0, + "image": "food_1733179172451.png" +}, +{ + "_id": { + "$oid": "6731b986c3c0100063e6e10b" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست نات موز نوتلا", + "description": "یک عدد دونات رست شده ، موز ، شکلات نوتلا", + "short_description": "", + "category": { + "$oid": "6731afdfc3c0100063e6dec2" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:00:06.094Z" + }, + "updated_at": { + "$date": "2025-12-12T08:43:20.132Z" + }, + "__v": 0, + "image": "food_1733179238571.png" +}, +{ + "_id": { + "$oid": "6731b9afc3c0100063e6e115" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": " رست نات فروتی نوتلا", + "description": "یک عدد دونات رست شده ، موز ، توت فرنگی ، شکلات نوتلا،خلال بادام ", + "short_description": "", + "category": { + "$oid": "6731afdfc3c0100063e6dec2" + }, + "index": 8, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:00:47.315Z" + }, + "updated_at": { + "$date": "2025-12-12T08:43:13.595Z" + }, + "__v": 0, + "image": "food_1733179754391.png" +}, +{ + "_id": { + "$oid": "6731bb29c3c0100063e6e122" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک", + "description": "یک عدد دونات شکلات همراه با تکه های کیک شکلاتی ", + "short_description": "", + "category": { + "$oid": "6731b00bc3c0100063e6ded4" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:07:05.297Z" + }, + "updated_at": { + "$date": "2025-11-24T19:11:44.015Z" + }, + "__v": 0, + "image": "food_1733179332686.png" +}, +{ + "_id": { + "$oid": "6731bb40c3c0100063e6e12c" + }, + "price": 970000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیگمنت", + "description": "یک عدد دونات شکلاتی همراه با ترافل", + "short_description": "", + "category": { + "$oid": "6731b00bc3c0100063e6ded4" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:07:28.783Z" + }, + "updated_at": { + "$date": "2025-11-24T19:10:24.211Z" + }, + "__v": 0, + "image": "food_1733179444761.png" +}, +{ + "_id": { + "$oid": "6731bb57c3c0100063e6e136" + }, + "price": 990000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسمارتین", + "description": "یک عدد دونات با روکش شکلات موز همراه با اسمارتیز", + "short_description": "", + "category": { + "$oid": "6731b00bc3c0100063e6ded4" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:07:51.634Z" + }, + "updated_at": { + "$date": "2025-11-24T19:09:46.083Z" + }, + "__v": 0, + "image": "food_1733179690846.png" +}, +{ + "_id": { + "$oid": "6731bb6dc3c0100063e6e140" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گلوبال", + "description": "", + "short_description": "", + "category": { + "$oid": "6731b00bc3c0100063e6ded4" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:08:13.127Z" + }, + "updated_at": { + "$date": "2025-09-02T19:01:51.636Z" + }, + "__v": 0, + "image": "food_1733179479179.png" +}, +{ + "_id": { + "$oid": "6731bb7dc3c0100063e6e14a" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاولی", + "description": "", + "short_description": "", + "category": { + "$oid": "6731b00bc3c0100063e6ded4" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:08:29.120Z" + }, + "updated_at": { + "$date": "2025-11-24T19:17:14.112Z" + }, + "__v": 0, + "image": "food_1733179728101.png" +}, +{ + "_id": { + "$oid": "6731bb8ec3c0100063e6e154" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیلو", + "description": "یک عدد دونات شکلات ساده همراه با کورن فلکس بالشتی ", + "short_description": "", + "category": { + "$oid": "6731b00bc3c0100063e6ded4" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:08:46.204Z" + }, + "updated_at": { + "$date": "2025-11-24T19:12:08.109Z" + }, + "__v": 0, + "image": "food_1733178577704.png" +}, +{ + "_id": { + "$oid": "6731bbaec3c0100063e6e15e" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات پسته", + "description": "یک عدد دونات با روکش شکلات شیری همراه با پودر پسته ", + "short_description": "", + "category": { + "$oid": "6731b044c3c0100063e6def2" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:09:18.668Z" + }, + "updated_at": { + "$date": "2025-11-04T11:12:04.175Z" + }, + "__v": 0, + "image": "food_1733178624247.png" +}, +{ + "_id": { + "$oid": "6731bbc4c3c0100063e6e168" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات کنجد", + "description": "یک عدد دونات شکلات ساده همراه با کنجد ", + "short_description": "", + "category": { + "$oid": "6731b044c3c0100063e6def2" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:09:40.753Z" + }, + "updated_at": { + "$date": "2025-02-02T22:23:09.699Z" + }, + "__v": 0, + "image": "food_1733178650347.png" +}, +{ + "_id": { + "$oid": "6731bbdcc3c0100063e6e172" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میکس ناتس", + "description": "یک عدد دونات شکلاتی همراه با مغزیجات", + "short_description": "", + "category": { + "$oid": "6731b044c3c0100063e6def2" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:10:04.384Z" + }, + "updated_at": { + "$date": "2025-02-02T22:24:02.770Z" + }, + "__v": 0, + "image": "food_1733178679557.png" +}, +{ + "_id": { + "$oid": "6731bbf2c3c0100063e6e17c" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بادام هندی", + "description": "یک عدد دونات شکلات ، بادام هندی ", + "short_description": "", + "category": { + "$oid": "6731b044c3c0100063e6def2" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:10:26.307Z" + }, + "updated_at": { + "$date": "2024-12-02T22:31:48.362Z" + }, + "__v": 0, + "image": "food_1733178707024.png" +}, +{ + "_id": { + "$oid": "6731bc0fc3c0100063e6e186" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "فندق", + "description": "یک عدد دونات شکلات ، فندوق تکه شده", + "short_description": "", + "category": { + "$oid": "6731b044c3c0100063e6def2" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:10:55.642Z" + }, + "updated_at": { + "$date": "2025-09-02T18:56:02.062Z" + }, + "__v": 0, + "image": "food_1733178735904.png" +}, +{ + "_id": { + "$oid": "6731bc1fc3c0100063e6e190" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گردو", + "description": "یک عدد دونات شکلا ساده همراه با گردو ", + "short_description": "", + "category": { + "$oid": "6731b044c3c0100063e6def2" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:11:11.788Z" + }, + "updated_at": { + "$date": "2025-09-02T18:53:48.124Z" + }, + "__v": 0, + "image": "food_1733178755505.png" +}, +{ + "_id": { + "$oid": "6731bc2ec3c0100063e6e19a" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بادام", + "description": "یک عدد دونات شکلات ساده همراه با خلال بادام ", + "short_description": "", + "category": { + "$oid": "6731b044c3c0100063e6def2" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:11:26.745Z" + }, + "updated_at": { + "$date": "2025-02-02T22:22:10.808Z" + }, + "__v": 0, + "image": "food_1733178778940.png" +}, +{ + "_id": { + "$oid": "6731bc44c3c0100063e6e1a4" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لوتوس", + "description": "یک عدد دونات برش خورده ، شکلات شیری ، بیسکویت لوتوس خورد شده و کامل ", + "short_description": "", + "category": { + "$oid": "6731b01ac3c0100063e6dedd" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:11:48.193Z" + }, + "updated_at": { + "$date": "2025-09-02T18:49:44.021Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731bccbc3c0100063e6e1be" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوتونی", + "description": "یک‌ عدد دونات برش خورده ۸ تکه همراه با خامه و سس شکلات", + "short_description": "", + "category": { + "$oid": "6731b01ac3c0100063e6dedd" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:14:03.341Z" + }, + "updated_at": { + "$date": "2025-02-02T22:34:08.582Z" + }, + "__v": 0, + "image": "food_1733178810557.png" +}, +{ + "_id": { + "$oid": "6731bce3c3c0100063e6e1c8" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شوکوفال", + "description": "یک عدد دونات برش خورده 8 تکه ، شات شکلات شیرین ، شات خامه ، شات ژله ، شات اسمارتیز", + "short_description": "", + "category": { + "$oid": "6731b01ac3c0100063e6dedd" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:14:27.228Z" + }, + "updated_at": { + "$date": "2025-09-02T18:51:08.455Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731bcfcc3c0100063e6e1d5" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فروتی نوتلا", + "description": "یک عدد دونات برش خورده 8 تکه ، موز ، توت فرنگی ، شکلات نوتلا ", + "short_description": "", + "category": { + "$oid": "6731b01ac3c0100063e6dedd" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:14:52.249Z" + }, + "updated_at": { + "$date": "2025-09-02T18:52:27.906Z" + }, + "__v": 0, + "image": "food_1733178833313.png" +}, +{ + "_id": { + "$oid": "6731bd15c3c0100063e6e1df" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل", + "description": "یک عدد دونات برش خورده ، کارامل ، خلال بادام ", + "short_description": "", + "category": { + "$oid": "6731b01ac3c0100063e6dedd" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:15:17.465Z" + }, + "updated_at": { + "$date": "2025-09-02T18:47:48.871Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731bd49c3c0100063e6e1f3" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شکلات پسته", + "description": "یک عدد دونات برش خورده ،شکلات شیرین، پودر پسته ", + "short_description": "", + "category": { + "$oid": "6731b030c3c0100063e6dee6" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:16:09.572Z" + }, + "updated_at": { + "$date": "2025-11-04T11:13:08.980Z" + }, + "__v": 0, + "image": "food_1733211567462.png" +}, +{ + "_id": { + "$oid": "6731bd68c3c0100063e6e1fd" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل فندق", + "description": "یک عدد دونات برش خورده ، کارامل ، فندوق آسیاب شده ", + "short_description": "", + "category": { + "$oid": "6731b030c3c0100063e6dee6" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:16:40.041Z" + }, + "updated_at": { + "$date": "2025-02-02T22:44:16.062Z" + }, + "__v": 0, + "image": "food_1733179996739.png" +}, +{ + "_id": { + "$oid": "6731bd82c3c0100063e6e207" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تگرال", + "description": "یک عدد دونات برش خورده ، شکلات شیری ، کیک شکلاتی پودر شده", + "short_description": "", + "category": { + "$oid": "6731b030c3c0100063e6dee6" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:17:06.370Z" + }, + "updated_at": { + "$date": "2025-02-02T22:38:19.492Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6731bd96c3c0100063e6e211" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فروت", + "description": "یک عدد دونات برش خورده ، موز ، توت فرنگی ، شکلات شیرین", + "short_description": "", + "category": { + "$oid": "6731b030c3c0100063e6dee6" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-11T08:17:26.261Z" + }, + "updated_at": { + "$date": "2025-04-12T17:05:02.944Z" + }, + "__v": 0, + "image": "food_1733179971176.png" +}, +{ + "_id": { + "$oid": "67333d51c3c0100063e70823" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا استیک", + "description": "ﻓﯿﻠﻪ \u0000گوﺳﺎﻟﻪ \u0000گرﯾﻞ ﺷﺪه", + "short_description": "", + "category": { + "$oid": "673338bec3c0100063e706d0" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731411277692.png", + "created_at": { + "$date": "2024-11-12T11:34:41.379Z" + }, + "updated_at": { + "$date": "2025-08-01T09:27:16.023Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333eb8c3c0100063e70866" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "673338bec3c0100063e706d0" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731411636704.png", + "created_at": { + "$date": "2024-11-12T11:40:40.809Z" + }, + "updated_at": { + "$date": "2025-08-01T09:27:00.916Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333f00c3c0100063e70870" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "673338bec3c0100063e706d0" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:41:52.856Z" + }, + "updated_at": { + "$date": "2025-08-01T09:26:34.090Z" + }, + "__v": 0, + "image": "food_1731411735773.png" +}, +{ + "_id": { + "$oid": "67333f75c3c0100063e7088d" + }, + "price": 3400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا تاکو", + "description": "", + "short_description": "", + "category": { + "$oid": "673338bec3c0100063e706d0" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731411826143.png", + "created_at": { + "$date": "2024-11-12T11:43:49.342Z" + }, + "updated_at": { + "$date": "2025-08-01T09:24:03.366Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67333fc5c3c0100063e7089a" + }, + "price": 2400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا سبزیجات", + "description": "", + "short_description": "", + "category": { + "$oid": "673338bec3c0100063e706d0" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731411906820.png", + "created_at": { + "$date": "2024-11-12T11:45:09.863Z" + }, + "updated_at": { + "$date": "2025-08-01T09:23:42.981Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334019c3c0100063e708a7" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا پپرونی", + "description": "", + "short_description": "", + "category": { + "$oid": "673338bec3c0100063e706d0" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731411990084.png", + "created_at": { + "$date": "2024-11-12T11:46:33.951Z" + }, + "updated_at": { + "$date": "2025-08-01T09:23:20.299Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6733407fc3c0100063e708cd" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلاسیک برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "673338dbc3c0100063e706e2" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731412092522.png", + "created_at": { + "$date": "2024-11-12T11:48:15.902Z" + }, + "updated_at": { + "$date": "2025-08-01T09:30:14.533Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673340b5c3c0100063e708e6" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قارچ برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "673338dbc3c0100063e706e2" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731412145634.png", + "created_at": { + "$date": "2024-11-12T11:49:09.593Z" + }, + "updated_at": { + "$date": "2025-08-01T09:29:54.477Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334103c3c0100063e708f3" + }, + "price": 4350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دوبل برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "673338dbc3c0100063e706e2" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731412222935.png", + "created_at": { + "$date": "2024-11-12T11:50:27.326Z" + }, + "updated_at": { + "$date": "2025-08-01T09:29:29.126Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6733414bc3c0100063e7090b" + }, + "price": 3100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیزبرگر", + "description": "", + "short_description": "", + "category": { + "$oid": "673338dbc3c0100063e706e2" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731412297126.png", + "created_at": { + "$date": "2024-11-12T11:51:39.815Z" + }, + "updated_at": { + "$date": "2025-08-01T09:29:05.858Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334183c3c0100063e70915" + }, + "price": 3600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رویال برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "673338dbc3c0100063e706e2" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:52:35.073Z" + }, + "updated_at": { + "$date": "2025-08-01T09:28:19.021Z" + }, + "__v": 0, + "image": "food_1731412378414.png" +}, +{ + "_id": { + "$oid": "67334216c3c0100063e7092f" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "673338dbc3c0100063e706e2" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731412496429.png", + "created_at": { + "$date": "2024-11-12T11:55:02.134Z" + }, + "updated_at": { + "$date": "2025-08-01T09:27:59.429Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6733423cc3c0100063e7093c" + }, + "price": 2650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن برگر با قارچ و پنیر", + "description": "", + "short_description": "", + "category": { + "$oid": "673338dbc3c0100063e706e2" + }, + "index": 7, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:55:40.556Z" + }, + "updated_at": { + "$date": "2025-08-01T09:27:39.095Z" + }, + "__v": 0, + "image": "food_1731412559712.png" +}, +{ + "_id": { + "$oid": "67334295c3c0100063e70956" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا پنه آلفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "67333909c3c0100063e706f7" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:57:09.991Z" + }, + "updated_at": { + "$date": "2025-08-01T09:31:00.374Z" + }, + "__v": 0, + "image": "food_1731412728968.png" +}, +{ + "_id": { + "$oid": "673342b6c3c0100063e70965" + }, + "price": 2470000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "پاستا آرابیتا", + "description": "", + "short_description": "", + "category": { + "$oid": "67333909c3c0100063e706f7" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T11:57:42.269Z" + }, + "updated_at": { + "$date": "2025-04-18T17:39:21.938Z" + }, + "__v": 0, + "image": "food_1731412794164.png" +}, +{ + "_id": { + "$oid": "6733451cc3c0100063e70a01" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی ساده", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T12:07:56.577Z" + }, + "updated_at": { + "$date": "2025-08-05T17:50:39.708Z" + }, + "__v": 0, + "image": "food_1732981239945.png" +}, +{ + "_id": { + "$oid": "67334563c3c0100063e70a1f" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب با قارچ و پنیر", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731413339741.png", + "created_at": { + "$date": "2024-11-12T12:09:07.373Z" + }, + "updated_at": { + "$date": "2025-08-05T17:51:25.867Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673345a3c3c0100063e70a35" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی ویژه", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731413407048.png", + "created_at": { + "$date": "2024-11-12T12:10:11.918Z" + }, + "updated_at": { + "$date": "2025-08-05T17:51:53.654Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673345e3c3c0100063e70a50" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی با سس الفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731413473719.png", + "created_at": { + "$date": "2024-11-12T12:11:15.638Z" + }, + "updated_at": { + "$date": "2025-08-01T09:32:33.114Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6733461fc3c0100063e70a5a" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی با سس چدار", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731413532205.png", + "created_at": { + "$date": "2024-11-12T12:12:15.879Z" + }, + "updated_at": { + "$date": "2025-04-18T17:21:36.645Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6733464bc3c0100063e70a75" + }, + "price": 2900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T12:12:59.210Z" + }, + "updated_at": { + "$date": "2025-08-01T09:31:56.196Z" + }, + "__v": 0, + "image": "food_1732981174286.png" +}, +{ + "_id": { + "$oid": "67334681c3c0100063e70a85" + }, + "price": 550000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "سالاد کلم ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 7, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731413627560.png", + "created_at": { + "$date": "2024-11-12T12:13:53.671Z" + }, + "updated_at": { + "$date": "2025-04-17T17:08:04.259Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673346e5c3c0100063e70aae" + }, + "price": 3400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد شف", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 8, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-12T12:15:33.085Z" + }, + "updated_at": { + "$date": "2025-08-05T17:53:19.940Z" + }, + "__v": 0, + "image": "food_1732980912025.png" +}, +{ + "_id": { + "$oid": "67334712c3c0100063e70ab8" + }, + "price": 385000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد فصل", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 9, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731413776749.png", + "created_at": { + "$date": "2024-11-12T12:16:18.731Z" + }, + "updated_at": { + "$date": "2025-04-18T17:17:55.093Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334754c3c0100063e70ada" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماست موسیر", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 10, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731413843112.png", + "created_at": { + "$date": "2024-11-12T12:17:24.714Z" + }, + "updated_at": { + "$date": "2025-04-18T17:20:10.090Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334783c3c0100063e70ae7" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زیتون شور", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 11, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731413888957.png", + "created_at": { + "$date": "2024-11-12T12:18:11.570Z" + }, + "updated_at": { + "$date": "2025-04-18T17:17:26.123Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673347a6c3c0100063e70af1" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زیتون پرورده", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 12, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731413923790.png", + "created_at": { + "$date": "2024-11-12T12:18:46.005Z" + }, + "updated_at": { + "$date": "2025-04-17T17:11:29.537Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673347c9c3c0100063e70afb" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ژله بستنی ۴نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 13, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731413957375.png", + "created_at": { + "$date": "2024-11-12T12:19:21.999Z" + }, + "updated_at": { + "$date": "2024-11-30T19:11:15.532Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673347f0c3c0100063e70b05" + }, + "price": 440000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ژله بستنی تک نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 14, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731413996457.png", + "created_at": { + "$date": "2024-11-12T12:20:00.113Z" + }, + "updated_at": { + "$date": "2025-04-17T17:04:58.222Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673348b3c3c0100063e70b18" + }, + "price": 428000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکا قوطی", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414193558.png", + "created_at": { + "$date": "2024-11-12T12:23:15.186Z" + }, + "updated_at": { + "$date": "2025-08-05T18:00:56.139Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673348c8c3c0100063e70b22" + }, + "price": 428000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فانتا قوطی", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414213873.png", + "created_at": { + "$date": "2024-11-12T12:23:36.584Z" + }, + "updated_at": { + "$date": "2025-08-05T18:01:11.442Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673348e4c3c0100063e70b2c" + }, + "price": 428000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرایت قوطی", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414243110.png", + "created_at": { + "$date": "2024-11-12T12:24:04.735Z" + }, + "updated_at": { + "$date": "2025-08-05T18:01:29.249Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673348fcc3c0100063e70b36" + }, + "price": 428000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زیرو قوطی", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414267628.png", + "created_at": { + "$date": "2024-11-12T12:24:28.699Z" + }, + "updated_at": { + "$date": "2025-08-05T18:01:55.333Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334913c3c0100063e70b40" + }, + "price": 221000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکا بطری", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414291175.png", + "created_at": { + "$date": "2024-11-12T12:24:51.663Z" + }, + "updated_at": { + "$date": "2025-08-05T18:02:40.715Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334928c3c0100063e70b4a" + }, + "price": 221000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فانتا بطری", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414311705.png", + "created_at": { + "$date": "2024-11-12T12:25:12.662Z" + }, + "updated_at": { + "$date": "2025-08-05T18:04:27.067Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334940c3c0100063e70b54" + }, + "price": 221000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرایت بطری", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 7, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414334741.png", + "created_at": { + "$date": "2024-11-12T12:25:36.221Z" + }, + "updated_at": { + "$date": "2025-08-05T18:03:15.934Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334959c3c0100063e70b5e" + }, + "price": 313000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دلستر هلو قوطی", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 8, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414358764.png", + "created_at": { + "$date": "2024-11-12T12:26:01.159Z" + }, + "updated_at": { + "$date": "2025-04-18T17:32:01.245Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334972c3c0100063e70b68" + }, + "price": 344000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دلستر قوطی لیمو", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 9, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414383446.png", + "created_at": { + "$date": "2024-11-12T12:26:26.494Z" + }, + "updated_at": { + "$date": "2025-04-18T17:31:28.997Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334992c3c0100063e70b72" + }, + "price": 344000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دلستر قوطی استوایی", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 10, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414416539.png", + "created_at": { + "$date": "2024-11-12T12:26:58.608Z" + }, + "updated_at": { + "$date": "2025-04-18T17:31:05.069Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673349a9c3c0100063e70b7c" + }, + "price": 240000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دلستر قوطی اناناس", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 11, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414437905.png", + "created_at": { + "$date": "2024-11-12T12:27:21.629Z" + }, + "updated_at": { + "$date": "2024-11-30T19:29:59.577Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673349bfc3c0100063e70b86" + }, + "price": 340000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد شیشه ای", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 12, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414461946.png", + "created_at": { + "$date": "2024-11-12T12:27:43.718Z" + }, + "updated_at": { + "$date": "2025-08-05T17:59:00.743Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673349ecc3c0100063e70b90" + }, + "price": 270000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دوغ سنتی", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 13, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414507415.png", + "created_at": { + "$date": "2024-11-12T12:28:28.686Z" + }, + "updated_at": { + "$date": "2025-08-05T17:58:35.296Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334a00c3c0100063e70b9a" + }, + "price": 100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اب معدنی کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 14, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414527513.png", + "created_at": { + "$date": "2024-11-12T12:28:48.483Z" + }, + "updated_at": { + "$date": "2025-08-05T17:57:48.425Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67334a16c3c0100063e70ba4" + }, + "price": 160000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اب معدنی بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "6733394bc3c0100063e7070f" + }, + "index": 15, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731414548792.png", + "created_at": { + "$date": "2024-11-12T12:29:10.455Z" + }, + "updated_at": { + "$date": "2025-08-05T17:57:31.904Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67337949c3c0100063e70efc" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ماسالا ", + "description": "", + "short_description": "", + "category": { + "$oid": "644e450498ff3c7414411176" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "image": "food_1731426631526.png", + "created_at": { + "$date": "2024-11-12T15:50:33.708Z" + }, + "updated_at": { + "$date": "2025-09-29T11:00:49.820Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67387217c3c0100063e7af26" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس چاکلت ", + "description": "شیر ، پودر شکلات ، یخ ، سیروپ نعنا ", + "short_description": "", + "category": { + "$oid": "67305938c3c0100063e6bcc0" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T10:21:11.239Z" + }, + "updated_at": { + "$date": "2025-11-24T18:46:24.071Z" + }, + "__v": 0, + "image": "food_1731756734489.png" +}, +{ + "_id": { + "$oid": "673872aec3c0100063e7af37" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لته فندق ", + "description": "شیر،اسپرسو 50/50 ، یخ ، سیروپ فندق ", + "short_description": "", + "category": { + "$oid": "67305938c3c0100063e6bcc0" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T10:23:42.923Z" + }, + "updated_at": { + "$date": "2025-11-24T18:46:54.327Z" + }, + "__v": 0, + "image": "food_1731760524883.png" +}, +{ + "_id": { + "$oid": "67387defc3c0100063e7b139" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست نات نوتلا", + "description": "یک عدد دونات رست شده ، موز ، نوتلا ، پودر فندق", + "short_description": "", + "category": { + "$oid": "6731afdfc3c0100063e6dec2" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T11:11:43.462Z" + }, + "updated_at": { + "$date": "2025-12-12T08:42:05.702Z" + }, + "__v": 0, + "image": "food_1733178896471.png" +}, +{ + "_id": { + "$oid": "67387e3ec3c0100063e7b15e" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات لوتوس", + "description": "یک عدد دونات شیری ، بیسکویت لوتوس", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 13, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T11:13:02.514Z" + }, + "updated_at": { + "$date": "2025-11-24T18:33:57.822Z" + }, + "__v": 0, + "image": "food_1731757253386.png" +}, +{ + "_id": { + "$oid": "67387e7ac3c0100063e7b16c" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات دبل چاکلت", + "description": "یک عدد دونات تمام شکلات", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 10, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T11:14:02.850Z" + }, + "updated_at": { + "$date": "2025-11-24T18:24:08.865Z" + }, + "__v": 0, + "image": "food_1733180317775.png" +}, +{ + "_id": { + "$oid": "67387ea9c3c0100063e7b176" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات موز", + "description": "یک عدد دونات با روکش شکلات موزی", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 11, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T11:14:49.713Z" + }, + "updated_at": { + "$date": "2025-11-24T18:22:42.288Z" + }, + "__v": 0, + "image": "food_1731757165838.png" +}, +{ + "_id": { + "$oid": "67387f0ac3c0100063e7b183" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیسکو بستنی", + "description": "بستنی وانیل ، پودر بیسکویت لوتوس ، خامه", + "short_description": "", + "category": { + "$oid": "673058c5c3c0100063e6bca5" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T11:16:26.890Z" + }, + "updated_at": { + "$date": "2025-11-25T17:33:15.660Z" + }, + "__v": 0, + "image": "food_1731785589735.png" +}, +{ + "_id": { + "$oid": "67387fdac3c0100063e7b19c" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات موکا", + "description": "یک عدد دونات دارک ، پودر قهوه فوری ", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 12, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T11:19:54.683Z" + }, + "updated_at": { + "$date": "2025-11-24T18:22:00.280Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67387ffec3c0100063e7b1a9" + }, + "price": 960000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شوکودونات", + "description": "یک عدد دونات شکلات ، شوکورول", + "short_description": "", + "category": { + "$oid": "6731af92c3c0100063e6deb0" + }, + "index": 13, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T11:20:30.868Z" + }, + "updated_at": { + "$date": "2025-11-24T18:21:16.052Z" + }, + "__v": 0, + "image": "food_1731756902912.png" +}, +{ + "_id": { + "$oid": "6738803bc3c0100063e7b1b3" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "شیرپرچرب ، سیروپ شکلات ، اسپرسو 50/50", + "short_description": "", + "category": { + "$oid": "67306405c3c0100063e6bf3f" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T11:21:31.708Z" + }, + "updated_at": { + "$date": "2025-09-02T18:39:36.282Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6738806dc3c0100063e7b1c1" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو عربیکا", + "description": "یک شات اسپرسو ۱۰۰ درصد عربیکا ", + "short_description": "", + "category": { + "$oid": "67306405c3c0100063e6bf3f" + }, + "index": 9, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T11:22:21.239Z" + }, + "updated_at": { + "$date": "2025-09-02T18:37:04.941Z" + }, + "__v": 0, + "image": "food_1733178537171.png" +}, +{ + "_id": { + "$oid": "67388436c3c0100063e7b288" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک لوتوس", + "description": "3اسکوپ بستنی وانیل ، شیر پرچرب ، کرم لوتوس ", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 9, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "image": "food_1731757109397.png", + "created_at": { + "$date": "2024-11-16T11:38:30.533Z" + }, + "updated_at": { + "$date": "2025-12-12T08:35:38.821Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67388ccdc3c0100063e7b327" + }, + "price": 2450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لقمه کره بادام زمینی همراه با آیس کافی ", + "description": "۲ جفت ، نان جو‌، کره بادام زمینی مرغوب ،موز، آیس کافی (دلخواه)", + "short_description": "", + "category": { + "$oid": "67388c44c3c0100063e7b31a" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "image": "food_1731759308900.png", + "created_at": { + "$date": "2024-11-16T12:15:09.751Z" + }, + "updated_at": { + "$date": "2025-11-09T12:32:47.784Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67388d0dc3c0100063e7b334" + }, + "price": 2450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لقمه نوتلا همراه با آیس کافی", + "description": "۲ جفت ، نان جو‌، نوتلا ،موز، آیس کافی (دلخواه)", + "short_description": "", + "category": { + "$oid": "67388c44c3c0100063e7b31a" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "image": "food_1731759372412.png", + "created_at": { + "$date": "2024-11-16T12:16:13.359Z" + }, + "updated_at": { + "$date": "2025-11-09T12:32:20.696Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67388ebbc3c0100063e7b3c9" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برلینر خامه", + "description": "یک عدد دونات برش خورده ، خامه قنادی", + "short_description": "", + "category": { + "$oid": "6731aff4c3c0100063e6decb" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T12:23:23.807Z" + }, + "updated_at": { + "$date": "2025-11-25T17:29:26.098Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6738f301c3c0100063e7c4cd" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک‌ موز کارامل", + "description": "۳ اسکوپ بستنی وانیل ، موز تازه ، کارامل", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 10, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T19:31:13.676Z" + }, + "updated_at": { + "$date": "2025-12-12T08:34:59.451Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6738f44fc3c0100063e7c53f" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برلینر بستنی", + "description": "دونات برش خورده ، بستنی شکلاتی ، سس شکلات", + "short_description": "", + "category": { + "$oid": "6731aff4c3c0100063e6decb" + }, + "index": 6, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T19:36:47.516Z" + }, + "updated_at": { + "$date": "2025-11-25T17:28:00.619Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6738f491c3c0100063e7c54c" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برلینر بستنی لوتوس", + "description": "دونات برش خورده ، بستنی لوتوس ، بیسکویت لوتوس", + "short_description": "", + "category": { + "$oid": "6731aff4c3c0100063e6decb" + }, + "index": 7, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T19:37:53.456Z" + }, + "updated_at": { + "$date": "2025-11-25T17:26:04.549Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6738f4d1c3c0100063e7c559" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کندی دونات", + "description": "یک عدد دونات شکلات ، آبنبات چوبی ", + "short_description": "", + "category": { + "$oid": "6731af7fc3c0100063e6de9e" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-16T19:38:57.623Z" + }, + "updated_at": { + "$date": "2025-02-04T09:34:08.323Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739ac8cc3c0100063e7ceb3" + }, + "price": 880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "673339e4c3c0100063e70769" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-17T08:42:52.971Z" + }, + "updated_at": { + "$date": "2025-04-19T16:19:06.919Z" + }, + "__v": 0, + "image": "food_1731839915863.png" +}, +{ + "_id": { + "$oid": "6739acb2c3c0100063e7cebd" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لته", + "description": "", + "short_description": "", + "category": { + "$oid": "673339e4c3c0100063e70769" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-17T08:43:30.429Z" + }, + "updated_at": { + "$date": "2025-04-19T16:18:47.858Z" + }, + "__v": 0, + "image": "food_1731839980535.png" +}, +{ + "_id": { + "$oid": "6739acf0c3c0100063e7ced4" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "673339e4c3c0100063e70769" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-17T08:44:32.207Z" + }, + "updated_at": { + "$date": "2025-04-19T16:18:27.672Z" + }, + "__v": 0, + "image": "food_1731840146230.png" +}, +{ + "_id": { + "$oid": "6739ad35c3c0100063e7cede" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کارامل ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "673339e4c3c0100063e70769" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-17T08:45:41.250Z" + }, + "updated_at": { + "$date": "2025-04-19T16:17:55.730Z" + }, + "__v": 0, + "image": "food_1731840047857.png" +}, +{ + "_id": { + "$oid": "6739ad5cc3c0100063e7cee8" + }, + "price": 1340000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "بابل آیس لته کاراملی", + "description": "", + "short_description": "", + "category": { + "$oid": "673339e4c3c0100063e70769" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-17T08:46:20.492Z" + }, + "updated_at": { + "$date": "2025-04-19T16:17:31.359Z" + }, + "__v": 0, + "image": "food_1731840082007.png" +}, +{ + "_id": { + "$oid": "6739ad80c3c0100063e7cef2" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کافه گلاسه", + "description": "", + "short_description": "", + "category": { + "$oid": "673339e4c3c0100063e70769" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-17T08:46:56.362Z" + }, + "updated_at": { + "$date": "2024-11-17T10:41:55.371Z" + }, + "__v": 0, + "image": "food_1731840114012.png" +}, +{ + "_id": { + "$oid": "6739adacc3c0100063e7cefc" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس ماچا لته", + "description": "", + "short_description": "", + "category": { + "$oid": "673339e4c3c0100063e70769" + }, + "index": 7, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-17T08:47:40.453Z" + }, + "updated_at": { + "$date": "2025-04-19T16:16:52.680Z" + }, + "__v": 0, + "image": "food_1731840179642.png" +}, +{ + "_id": { + "$oid": "6739adcec3c0100063e7cf0f" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "673339e4c3c0100063e70769" + }, + "index": 8, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-17T08:48:14.350Z" + }, + "updated_at": { + "$date": "2025-04-19T16:16:25.040Z" + }, + "__v": 0, + "image": "food_1731840216807.png" +}, +{ + "_id": { + "$oid": "6739d1d4c3c0100063e7d381" + }, + "price": 880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "67333983c3c0100063e7072e" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731842514051.png", + "created_at": { + "$date": "2024-11-17T11:21:56.024Z" + }, + "updated_at": { + "$date": "2025-08-01T08:28:40.023Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d21dc3c0100063e7d3a1" + }, + "price": 780000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "67333983c3c0100063e7072e" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731842589131.png", + "created_at": { + "$date": "2024-11-17T11:23:09.894Z" + }, + "updated_at": { + "$date": "2024-11-17T11:23:09.894Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d26cc3c0100063e7d3b8" + }, + "price": 820000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "67333983c3c0100063e7072e" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731842666471.png", + "created_at": { + "$date": "2024-11-17T11:24:28.322Z" + }, + "updated_at": { + "$date": "2024-11-17T11:24:28.322Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d2a4c3c0100063e7d3c5" + }, + "price": 840000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لته", + "description": "", + "short_description": "", + "category": { + "$oid": "67333983c3c0100063e7072e" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731842722244.png", + "created_at": { + "$date": "2024-11-17T11:25:24.220Z" + }, + "updated_at": { + "$date": "2024-11-17T11:25:24.220Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d327c3c0100063e7d3d8" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "67333983c3c0100063e7072e" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731842854030.png", + "created_at": { + "$date": "2024-11-17T11:27:35.686Z" + }, + "updated_at": { + "$date": "2024-11-17T11:27:35.686Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d4a3c3c0100063e7d3e8" + }, + "price": 1190001, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "67333983c3c0100063e7072e" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731843233734.png", + "created_at": { + "$date": "2024-11-17T11:33:55.558Z" + }, + "updated_at": { + "$date": "2025-04-19T16:25:35.140Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d4d4c3c0100063e7d3f2" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه دمی", + "description": "", + "short_description": "", + "category": { + "$oid": "67333983c3c0100063e7072e" + }, + "index": 7, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731843283042.png", + "created_at": { + "$date": "2024-11-17T11:34:44.662Z" + }, + "updated_at": { + "$date": "2025-04-19T16:24:54.225Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d5e3c3c0100063e7d412" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نسکافه", + "description": "", + "short_description": "", + "category": { + "$oid": "67333983c3c0100063e7072e" + }, + "index": 8, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731843554862.png", + "created_at": { + "$date": "2024-11-17T11:39:15.892Z" + }, + "updated_at": { + "$date": "2025-08-01T08:29:49.893Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d73ec3c0100063e7d444" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ اضافه(نارگیل- وانیل- آیریش- فندق- کارامل- شکلات)", + "description": "", + "short_description": "", + "category": { + "$oid": "6739d6d7c3c0100063e7d422" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731843901508.png", + "created_at": { + "$date": "2024-11-17T11:45:02.675Z" + }, + "updated_at": { + "$date": "2024-11-17T11:45:02.675Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d7aac3c0100063e7d451" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر غیر لبنی( بادام- فندق- سویا- گاومیش- بدون لاکتوز)", + "description": "", + "short_description": "", + "category": { + "$oid": "6739d6d7c3c0100063e7d422" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844009732.png", + "created_at": { + "$date": "2024-11-17T11:46:50.835Z" + }, + "updated_at": { + "$date": "2024-11-17T11:46:50.835Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d800c3c0100063e7d464" + }, + "price": 880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قهوه ۱۰۰ عربیکا", + "description": "", + "short_description": "", + "category": { + "$oid": "67333983c3c0100063e7072e" + }, + "index": 9, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844095978.png", + "created_at": { + "$date": "2024-11-17T11:48:16.575Z" + }, + "updated_at": { + "$date": "2025-04-19T16:23:46.164Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d82ec3c0100063e7d471" + }, + "price": 1100000, + "stock": 0, + "static_discount": 0, + "active": false, + "name": "قهوه بدون کافئین", + "description": "", + "short_description": "", + "category": { + "$oid": "67333983c3c0100063e7072e" + }, + "index": 10, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844139530.png", + "created_at": { + "$date": "2024-11-17T11:49:02.327Z" + }, + "updated_at": { + "$date": "2025-08-01T08:28:03.155Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d93bc3c0100063e7d49c" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قوری چای تی بگ دو نفره+ نبات", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844409966.png", + "created_at": { + "$date": "2024-11-17T11:53:31.806Z" + }, + "updated_at": { + "$date": "2024-11-30T19:08:45.163Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d960c3c0100063e7d4a6" + }, + "price": 250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قوری چای تی بگ دو نفره + قند", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844447354.png", + "created_at": { + "$date": "2024-11-17T11:54:08.973Z" + }, + "updated_at": { + "$date": "2024-11-30T19:08:17.292Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d98fc3c0100063e7d4bc" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قوری چای دمی تک نفره ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844493317.png", + "created_at": { + "$date": "2024-11-17T11:54:55.093Z" + }, + "updated_at": { + "$date": "2025-04-19T16:21:40.467Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d9aec3c0100063e7d4c9" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "قوری چای دمی دو نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844524655.png", + "created_at": { + "$date": "2024-11-17T11:55:26.226Z" + }, + "updated_at": { + "$date": "2025-04-19T16:21:22.564Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739d9dec3c0100063e7d4d3" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز تک نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844572185.png", + "created_at": { + "$date": "2024-11-17T11:56:14.589Z" + }, + "updated_at": { + "$date": "2024-11-17T11:56:14.589Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739da03c3c0100063e7d4dd" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز دو نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844608662.png", + "created_at": { + "$date": "2024-11-17T11:56:51.016Z" + }, + "updated_at": { + "$date": "2024-11-17T11:56:51.016Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739da24c3c0100063e7d4e7" + }, + "price": 590000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای کرک", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 7, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844642144.png", + "created_at": { + "$date": "2024-11-17T11:57:24.063Z" + }, + "updated_at": { + "$date": "2024-11-17T11:57:24.063Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739da47c3c0100063e7d4f4" + }, + "price": 570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 8, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844677728.png", + "created_at": { + "$date": "2024-11-17T11:57:59.833Z" + }, + "updated_at": { + "$date": "2024-11-17T11:57:59.833Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739da6fc3c0100063e7d50a" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش میوه های ترش تک نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 9, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844716456.png", + "created_at": { + "$date": "2024-11-17T11:58:39.298Z" + }, + "updated_at": { + "$date": "2024-11-17T11:58:39.298Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739da97c3c0100063e7d514" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش میوه های ترش دونفره ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 10, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844756865.png", + "created_at": { + "$date": "2024-11-17T11:59:19.671Z" + }, + "updated_at": { + "$date": "2024-11-17T11:59:19.671Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739dabbc3c0100063e7d51e" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش میوه های شیرین تک نفره ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 11, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844791962.png", + "created_at": { + "$date": "2024-11-17T11:59:55.754Z" + }, + "updated_at": { + "$date": "2024-11-17T11:59:55.754Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739daebc3c0100063e7d534" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش میوه های شیرین دونفره", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 12, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844840101.png", + "created_at": { + "$date": "2024-11-17T12:00:43.440Z" + }, + "updated_at": { + "$date": "2025-04-19T16:20:25.476Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739db0dc3c0100063e7d53e" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 13, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844875467.png", + "created_at": { + "$date": "2024-11-17T12:01:17.433Z" + }, + "updated_at": { + "$date": "2025-04-19T16:19:56.658Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739db2cc3c0100063e7d548" + }, + "price": 720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "67333964c3c0100063e7071c" + }, + "index": 14, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731844907633.png", + "created_at": { + "$date": "2024-11-17T12:01:48.144Z" + }, + "updated_at": { + "$date": "2025-04-19T16:19:39.189Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739dd96c3c0100063e7d5a9" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "673339afc3c0100063e7074b" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731845522341.png", + "created_at": { + "$date": "2024-11-17T12:12:06.657Z" + }, + "updated_at": { + "$date": "2025-08-05T17:55:43.978Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739ddfac3c0100063e7d5e4" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد ", + "description": "", + "short_description": "", + "category": { + "$oid": "673339afc3c0100063e7074b" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731845623466.png", + "created_at": { + "$date": "2024-11-17T12:13:46.769Z" + }, + "updated_at": { + "$date": "2025-08-05T17:55:26.094Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739de1ac3c0100063e7d5f1" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شربت بهار نارنج ", + "description": "", + "short_description": "", + "category": { + "$oid": "673339afc3c0100063e7074b" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731845654713.png", + "created_at": { + "$date": "2024-11-17T12:14:18.582Z" + }, + "updated_at": { + "$date": "2025-08-05T17:55:08.568Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739de3cc3c0100063e7d5fb" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "673339afc3c0100063e7074b" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731845691173.png", + "created_at": { + "$date": "2024-11-17T12:14:52.834Z" + }, + "updated_at": { + "$date": "2025-08-05T17:54:21.753Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739dec5c3c0100063e7d613" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اب هویج بستنی", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a14c3c0100063e70775" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731845826747.png", + "created_at": { + "$date": "2024-11-17T12:17:09.928Z" + }, + "updated_at": { + "$date": "2025-08-05T18:20:08.006Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739dee5c3c0100063e7d61d" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "طالبی بستنی", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a14c3c0100063e70775" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731845859178.png", + "created_at": { + "$date": "2024-11-17T12:17:41.172Z" + }, + "updated_at": { + "$date": "2025-08-05T18:19:42.438Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739df04c3c0100063e7d62a" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "انبه بستنی", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a14c3c0100063e70775" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731845890478.png", + "created_at": { + "$date": "2024-11-17T12:18:12.008Z" + }, + "updated_at": { + "$date": "2025-08-05T18:19:06.136Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739df23c3c0100063e7d63d" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "توت بستنی", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a14c3c0100063e70775" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731845921498.png", + "created_at": { + "$date": "2024-11-17T12:18:43.142Z" + }, + "updated_at": { + "$date": "2025-08-05T18:17:49.645Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739df50c3c0100063e7d64d" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شاتوت بستنی", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a14c3c0100063e70775" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731845967183.png", + "created_at": { + "$date": "2024-11-17T12:19:28.151Z" + }, + "updated_at": { + "$date": "2025-08-05T18:05:17.039Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739e01ac3c0100063e7d657" + }, + "price": 100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر موز", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a30c3c0100063e70787" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731846168393.png", + "created_at": { + "$date": "2024-11-17T12:22:50.613Z" + }, + "updated_at": { + "$date": "2025-08-05T18:35:58.989Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739e0a1c3c0100063e7d661" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر انبه", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a30c3c0100063e70787" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731846303557.png", + "created_at": { + "$date": "2024-11-17T12:25:05.052Z" + }, + "updated_at": { + "$date": "2025-08-05T18:35:17.143Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739e0f2c3c0100063e7d66b" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر پسته", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a30c3c0100063e70787" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731846384825.png", + "created_at": { + "$date": "2024-11-17T12:26:26.576Z" + }, + "updated_at": { + "$date": "2025-08-05T18:33:46.053Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739e148c3c0100063e7d675" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر موز انبه", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a30c3c0100063e70787" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731846470584.png", + "created_at": { + "$date": "2024-11-17T12:27:52.719Z" + }, + "updated_at": { + "$date": "2025-08-05T18:33:24.889Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739e171c3c0100063e7d682" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر موز خرما", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a30c3c0100063e70787" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731846511022.png", + "created_at": { + "$date": "2024-11-17T12:28:33.341Z" + }, + "updated_at": { + "$date": "2025-08-05T18:21:40.772Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739e1b7c3c0100063e7d68c" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر موز شکلات ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a30c3c0100063e70787" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731846579935.png", + "created_at": { + "$date": "2024-11-17T12:29:43.207Z" + }, + "updated_at": { + "$date": "2025-08-05T18:21:18.409Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6739e1fac3c0100063e7d69c" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر موز قهوه ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a30c3c0100063e70787" + }, + "index": 7, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1731846648318.png", + "created_at": { + "$date": "2024-11-17T12:30:50.630Z" + }, + "updated_at": { + "$date": "2025-08-05T18:20:38.697Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673c9cb5c3c0100063e81e5d" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه", + "description": "", + "short_description": "", + "category": { + "$oid": "6693d234136cc10070469538" + }, + "index": 9, + "storeId": { + "$oid": "6693d0cc136cc10070469510" + }, + "created_at": { + "$date": "2024-11-19T14:12:05.984Z" + }, + "updated_at": { + "$date": "2025-07-19T16:21:22.669Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673d9664c3c0100063e8383c" + }, + "price": 400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آب هویج", + "description": "", + "short_description": "", + "category": { + "$oid": "67333bbfc3c0100063e707cc" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732089438973.png", + "created_at": { + "$date": "2024-11-20T07:57:24.086Z" + }, + "updated_at": { + "$date": "2025-04-18T18:22:09.552Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673d9697c3c0100063e8384c" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اب طالبی", + "description": "", + "short_description": "", + "category": { + "$oid": "67333bbfc3c0100063e707cc" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732089491149.png", + "created_at": { + "$date": "2024-11-20T07:58:15.175Z" + }, + "updated_at": { + "$date": "2024-11-20T07:58:15.175Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673d96cbc3c0100063e83856" + }, + "price": 440000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "اب هندوانه ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333bbfc3c0100063e707cc" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732089545598.png", + "created_at": { + "$date": "2024-11-20T07:59:07.843Z" + }, + "updated_at": { + "$date": "2025-04-18T18:20:57.290Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673d9aeac3c0100063e8389f" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اب پرتقال", + "description": "", + "short_description": "", + "category": { + "$oid": "67333bbfc3c0100063e707cc" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732090599736.png", + "created_at": { + "$date": "2024-11-20T08:16:42.344Z" + }, + "updated_at": { + "$date": "2025-04-18T18:20:01.443Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673d9b19c3c0100063e838af" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اب انار", + "description": "", + "short_description": "", + "category": { + "$oid": "67333bbfc3c0100063e707cc" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732090646560.png", + "created_at": { + "$date": "2024-11-20T08:17:29.490Z" + }, + "updated_at": { + "$date": "2025-04-18T18:19:40.669Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673d9b60c3c0100063e838bc" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اب اناناس ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333bbfc3c0100063e707cc" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732090716302.png", + "created_at": { + "$date": "2024-11-20T08:18:40.227Z" + }, + "updated_at": { + "$date": "2025-08-05T18:48:23.040Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673d9b92c3c0100063e838d2" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اب توت فرنگی", + "description": "", + "short_description": "", + "category": { + "$oid": "67333bbfc3c0100063e707cc" + }, + "index": 7, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732090768365.png", + "created_at": { + "$date": "2024-11-20T08:19:30.176Z" + }, + "updated_at": { + "$date": "2025-08-05T18:48:03.069Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673d9dbfc3c0100063e83942" + }, + "price": 100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اب شاتوت ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333bbfc3c0100063e707cc" + }, + "index": 8, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732091322530.png", + "created_at": { + "$date": "2024-11-20T08:28:47.448Z" + }, + "updated_at": { + "$date": "2025-08-05T18:46:43.287Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673d9dfac3c0100063e8394c" + }, + "price": 880000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "اب سیب", + "description": "", + "short_description": "", + "category": { + "$oid": "67333bbfc3c0100063e707cc" + }, + "index": 9, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732091384413.png", + "created_at": { + "$date": "2024-11-20T08:29:46.457Z" + }, + "updated_at": { + "$date": "2025-04-19T15:48:43.697Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673d9e37c3c0100063e83962" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "انبه اناناس", + "description": "", + "short_description": "", + "category": { + "$oid": "67333c39c3c0100063e707d5" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732091444892.png", + "created_at": { + "$date": "2024-11-20T08:30:47.489Z" + }, + "updated_at": { + "$date": "2025-04-19T16:15:29.781Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673d9fd2c3c0100063e83984" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موز انبه", + "description": "", + "short_description": "", + "category": { + "$oid": "67333c39c3c0100063e707d5" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732091854953.png", + "created_at": { + "$date": "2024-11-20T08:37:38.133Z" + }, + "updated_at": { + "$date": "2025-04-19T16:15:06.672Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da01ec3c0100063e83991" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پرتقال انار", + "description": "", + "short_description": "", + "category": { + "$oid": "67333c39c3c0100063e707d5" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732091930952.png", + "created_at": { + "$date": "2024-11-20T08:38:54.653Z" + }, + "updated_at": { + "$date": "2024-11-20T08:38:54.653Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da042c3c0100063e8399e" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "توت شاتوت ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333c39c3c0100063e707d5" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732091967969.png", + "created_at": { + "$date": "2024-11-20T08:39:30.449Z" + }, + "updated_at": { + "$date": "2024-11-20T08:39:30.449Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da075c3c0100063e839a8" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اب انبه ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333c39c3c0100063e707d5" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732092020362.png", + "created_at": { + "$date": "2024-11-20T08:40:21.829Z" + }, + "updated_at": { + "$date": "2025-04-19T16:14:32.184Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da0a6c3c0100063e839bb" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پرتقال انبه", + "description": "", + "short_description": "", + "category": { + "$oid": "67333c39c3c0100063e707d5" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732092066831.png", + "created_at": { + "$date": "2024-11-20T08:41:10.642Z" + }, + "updated_at": { + "$date": "2024-11-20T08:41:10.642Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da0fbc3c0100063e839d7" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a53c3c0100063e70790" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732092152836.png", + "created_at": { + "$date": "2024-11-20T08:42:35.564Z" + }, + "updated_at": { + "$date": "2025-08-05T18:45:34.789Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da14cc3c0100063e839e8" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک توت فرنگی", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a53c3c0100063e70790" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732092233333.png", + "created_at": { + "$date": "2024-11-20T08:43:56.873Z" + }, + "updated_at": { + "$date": "2025-08-05T18:45:09.312Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da283c3c0100063e83a24" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک لوتوس ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a53c3c0100063e70790" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732092544878.png", + "created_at": { + "$date": "2024-11-20T08:49:07.676Z" + }, + "updated_at": { + "$date": "2025-08-05T18:44:38.979Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da2a7c3c0100063e83a2e" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک اورئو", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a53c3c0100063e70790" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732092580168.png", + "created_at": { + "$date": "2024-11-20T08:49:43.138Z" + }, + "updated_at": { + "$date": "2025-08-05T18:37:30.909Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da2d8c3c0100063e83a38" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک انبه", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a53c3c0100063e70790" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732092629927.png", + "created_at": { + "$date": "2024-11-20T08:50:32.227Z" + }, + "updated_at": { + "$date": "2025-08-05T18:36:51.638Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da334c3c0100063e83a5d" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس پک ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333a53c3c0100063e70790" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732092722313.png", + "created_at": { + "$date": "2024-11-20T08:52:05.020Z" + }, + "updated_at": { + "$date": "2025-08-05T18:36:25.671Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da480c3c0100063e83ac5" + }, + "price": 100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "673da3fbc3c0100063e83a7a" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T08:57:36.307Z" + }, + "updated_at": { + "$date": "2025-08-05T17:49:20.270Z" + }, + "__v": 0, + "image": "food_1732980656070.png" +}, +{ + "_id": { + "$oid": "673da4a1c3c0100063e83ae4" + }, + "price": 950000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "چیز کیک شکلاتی دو نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "673da3fbc3c0100063e83a7a" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T08:58:09.940Z" + }, + "updated_at": { + "$date": "2025-04-17T16:57:44.077Z" + }, + "__v": 0, + "image": "food_1732980434978.png" +}, +{ + "_id": { + "$oid": "673da4bbc3c0100063e83afa" + }, + "price": 950000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "چیز کیک لوتوس دو نفره", + "description": "", + "short_description": "", + "category": { + "$oid": "673da3fbc3c0100063e83a7a" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T08:58:35.720Z" + }, + "updated_at": { + "$date": "2025-04-17T16:57:30.916Z" + }, + "__v": 0, + "image": "food_1732979733603.png" +}, +{ + "_id": { + "$oid": "673da873c3c0100063e83bf8" + }, + "price": 4650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک چنجه ", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:14:27.006Z" + }, + "updated_at": { + "$date": "2025-08-01T09:22:50.016Z" + }, + "__v": 0, + "image": "food_1732979580830.png" +}, +{ + "_id": { + "$oid": "673da8a9c3c0100063e83c05" + }, + "price": 4450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک برگ", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732094118572.png", + "created_at": { + "$date": "2024-11-20T09:15:21.939Z" + }, + "updated_at": { + "$date": "2025-08-01T09:22:16.193Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da8d2c3c0100063e83c0f" + }, + "price": 5500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک سلطانی", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732094158201.png", + "created_at": { + "$date": "2024-11-20T09:16:02.346Z" + }, + "updated_at": { + "$date": "2025-08-01T09:21:31.099Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da8f8c3c0100063e83c2b" + }, + "price": 3450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک بختیاری", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732094195105.png", + "created_at": { + "$date": "2024-11-20T09:16:40.324Z" + }, + "updated_at": { + "$date": "2025-08-01T09:21:00.459Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da91cc3c0100063e83c3b" + }, + "price": 4800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کباب ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732094233214.png", + "created_at": { + "$date": "2024-11-20T09:17:16.042Z" + }, + "updated_at": { + "$date": "2025-08-01T09:20:34.366Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673da95dc3c0100063e83c59" + }, + "price": 3300000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "خوراک کباب نگینی", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:18:21.257Z" + }, + "updated_at": { + "$date": "2025-08-01T09:20:07.035Z" + }, + "__v": 0, + "image": "food_1732974433427.png" +}, +{ + "_id": { + "$oid": "673da9a3c3c0100063e83c66" + }, + "price": 2500000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "خوراک کباب لبنانی", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 7, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:19:31.367Z" + }, + "updated_at": { + "$date": "2025-08-01T09:19:40.258Z" + }, + "__v": 0, + "image": "food_1732974297311.png" +}, +{ + "_id": { + "$oid": "673da9c4c3c0100063e83c70" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کوبیده", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 8, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:20:04.980Z" + }, + "updated_at": { + "$date": "2025-08-01T09:19:09.740Z" + }, + "__v": 0, + "image": "food_1732974212826.png" +}, +{ + "_id": { + "$oid": "673da9e8c3c0100063e83c80" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کباب تک سیخ", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 9, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732094438499.png", + "created_at": { + "$date": "2024-11-20T09:20:40.661Z" + }, + "updated_at": { + "$date": "2025-08-01T09:18:46.840Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673daa13c3c0100063e83c96" + }, + "price": 3350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کباب سه سیخ", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 10, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:21:23.653Z" + }, + "updated_at": { + "$date": "2025-08-01T09:18:23.009Z" + }, + "__v": 0, + "image": "food_1732362637401.png" +}, +{ + "_id": { + "$oid": "673daa3dc3c0100063e83ca6" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک میکس ساده", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 11, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732094523215.png", + "created_at": { + "$date": "2024-11-20T09:22:05.540Z" + }, + "updated_at": { + "$date": "2025-08-01T09:17:43.403Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673daa63c3c0100063e83cc5" + }, + "price": 3100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک میکس مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 12, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732094560339.png", + "created_at": { + "$date": "2024-11-20T09:22:43.532Z" + }, + "updated_at": { + "$date": "2025-08-01T09:17:08.754Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673daa8ec3c0100063e83cd8" + }, + "price": 8250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک شیشلیک", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 13, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732094603053.png", + "created_at": { + "$date": "2024-11-20T09:23:26.458Z" + }, + "updated_at": { + "$date": "2025-08-01T09:16:33.737Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673daaa3c3c0100063e83ce5" + }, + "price": 2050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 14, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:23:47.706Z" + }, + "updated_at": { + "$date": "2025-08-01T09:15:49.653Z" + }, + "__v": 0, + "image": "food_1732726476100.png" +}, +{ + "_id": { + "$oid": "673daabbc3c0100063e83cef" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 15, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:24:11.827Z" + }, + "updated_at": { + "$date": "2025-08-01T09:15:18.979Z" + }, + "__v": 0, + "image": "food_1732726584156.png" +}, +{ + "_id": { + "$oid": "673daae5c3c0100063e83cf9" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه حلزونی", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 16, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732094690877.png", + "created_at": { + "$date": "2024-11-20T09:24:53.136Z" + }, + "updated_at": { + "$date": "2025-08-01T09:14:55.301Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dab05c3c0100063e83d03" + }, + "price": 2450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه نارسیس", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 17, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:25:25.266Z" + }, + "updated_at": { + "$date": "2025-08-01T09:14:34.027Z" + }, + "__v": 0, + "image": "food_1732727015511.png" +}, +{ + "_id": { + "$oid": "673dab2bc3c0100063e83d1d" + }, + "price": 2750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه نگینی", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 18, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:26:03.556Z" + }, + "updated_at": { + "$date": "2025-08-01T09:14:01.768Z" + }, + "__v": 0, + "image": "food_1732727091606.png" +}, +{ + "_id": { + "$oid": "673dab4bc3c0100063e83d39" + }, + "price": 2850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک ماهی کباب", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 19, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732094792449.png", + "created_at": { + "$date": "2024-11-20T09:26:35.913Z" + }, + "updated_at": { + "$date": "2025-08-01T09:13:22.187Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dab6dc3c0100063e83d52" + }, + "price": 3250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کباب شالتو", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 20, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:27:09.763Z" + }, + "updated_at": { + "$date": "2025-08-01T09:12:52.035Z" + }, + "__v": 0, + "image": "food_1732973739516.png" +}, +{ + "_id": { + "$oid": "673dab8ac3c0100063e83d5c" + }, + "price": 5550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک کباب مصری", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 21, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:27:38.946Z" + }, + "updated_at": { + "$date": "2025-08-01T09:12:31.139Z" + }, + "__v": 0, + "image": "food_1732973812554.png" +}, +{ + "_id": { + "$oid": "673dabb8c3c0100063e83d72" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کتف و بال زعفرانی", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 22, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:28:24.574Z" + }, + "updated_at": { + "$date": "2025-08-01T09:11:39.188Z" + }, + "__v": 0, + "image": "food_1732973881136.png" +}, +{ + "_id": { + "$oid": "673dabdcc3c0100063e83d7c" + }, + "price": 3100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه با استخوان", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 23, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:29:00.866Z" + }, + "updated_at": { + "$date": "2025-08-01T09:11:18.067Z" + }, + "__v": 0, + "image": "food_1732726005132.png" +}, +{ + "_id": { + "$oid": "673dabf7c3c0100063e83d89" + }, + "price": 7300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک ماهیچه", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 24, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:29:27.334Z" + }, + "updated_at": { + "$date": "2025-08-01T09:10:53.041Z" + }, + "__v": 0, + "image": "food_1732363269121.png" +}, +{ + "_id": { + "$oid": "673dac1bc3c0100063e83d9f" + }, + "price": 7700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک گردن", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 25, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:30:03.712Z" + }, + "updated_at": { + "$date": "2025-08-01T09:10:19.219Z" + }, + "__v": 0, + "image": "food_1732099406737.png" +}, +{ + "_id": { + "$oid": "673dac45c3c0100063e83dac" + }, + "price": 6000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک گوشت", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 26, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:30:45.277Z" + }, + "updated_at": { + "$date": "2025-08-01T09:09:54.851Z" + }, + "__v": 0, + "image": "food_1732099369819.png" +}, +{ + "_id": { + "$oid": "673dac74c3c0100063e83db9" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 27, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:31:32.583Z" + }, + "updated_at": { + "$date": "2025-08-01T09:09:14.936Z" + }, + "__v": 0, + "image": "food_1732363192936.png" +}, +{ + "_id": { + "$oid": "673dac92c3c0100063e83dc3" + }, + "price": 2550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جوجه چینی ۲۰۰گرم فیله", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 28, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T09:32:02.723Z" + }, + "updated_at": { + "$date": "2025-08-01T09:08:37.989Z" + }, + "__v": 0, + "image": "food_1732362915343.png" +}, +{ + "_id": { + "$oid": "673db2ecc3c0100063e83ead" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک موز‌ نوتلا", + "description": "بستنی وانیل ، شیر پرچرب ، موز ، نوتلا ", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 11, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2024-11-20T09:59:08.236Z" + }, + "updated_at": { + "$date": "2025-12-12T08:34:16.579Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dbbcec3c0100063e8400f" + }, + "price": 2580000, + "stock": 0, + "static_discount": 0, + "active": false, + "name": "ماهی سوخاری", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 29, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T10:37:02.906Z" + }, + "updated_at": { + "$date": "2025-08-01T09:07:58.447Z" + }, + "__v": 0, + "image": "food_1732099328269.png" +}, +{ + "_id": { + "$oid": "673dbc06c3c0100063e84029" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک اکبرجوجه", + "description": "", + "short_description": "", + "category": { + "$oid": "673da786c3c0100063e83bb8" + }, + "index": 30, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T10:37:58.958Z" + }, + "updated_at": { + "$date": "2025-08-01T09:07:43.638Z" + }, + "__v": 0, + "image": "food_1732362466605.png" +}, +{ + "_id": { + "$oid": "673dbc47c3c0100063e84051" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زرشک پلو", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 31, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732099137172.png", + "created_at": { + "$date": "2024-11-20T10:39:03.029Z" + }, + "updated_at": { + "$date": "2025-08-01T09:07:15.113Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dbc7ec3c0100063e84080" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برنج ساده ایرانی", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 32, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732099192345.png", + "created_at": { + "$date": "2024-11-20T10:39:58.495Z" + }, + "updated_at": { + "$date": "2025-08-01T09:06:55.163Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dbcadc3c0100063e840a4" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "باقالی پلو", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 33, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732099243481.png", + "created_at": { + "$date": "2024-11-20T10:40:45.861Z" + }, + "updated_at": { + "$date": "2025-08-01T09:06:11.098Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dbda4c3c0100063e840ef" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوپ", + "description": "", + "short_description": "", + "category": { + "$oid": "67333928c3c0100063e70706" + }, + "index": 34, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T10:44:52.144Z" + }, + "updated_at": { + "$date": "2025-08-01T09:05:56.541Z" + }, + "__v": 0, + "image": "food_1732362358247.png" +}, +{ + "_id": { + "$oid": "673dc085c3c0100063e8417d" + }, + "price": 3950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شوید پلو با ماهی", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 1, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100319064.png", + "created_at": { + "$date": "2024-11-20T10:57:09.943Z" + }, + "updated_at": { + "$date": "2025-08-01T09:05:36.594Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc0cec3c0100063e84190" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "باقالی پلو با مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 2, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100297076.png", + "created_at": { + "$date": "2024-11-20T10:58:22.332Z" + }, + "updated_at": { + "$date": "2025-08-01T09:04:23.880Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc118c3c0100063e841b4" + }, + "price": 2850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زرشک پلو با مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 3, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100371100.png", + "created_at": { + "$date": "2024-11-20T10:59:36.580Z" + }, + "updated_at": { + "$date": "2025-08-01T09:04:06.272Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc146c3c0100063e841cd" + }, + "price": 8500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "باقالی پلو با ماهیچه", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 4, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100418501.png", + "created_at": { + "$date": "2024-11-20T11:00:22.598Z" + }, + "updated_at": { + "$date": "2025-08-01T09:02:27.314Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc169c3c0100063e841e6" + }, + "price": 8300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو ماهیچه", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 5, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100453301.png", + "created_at": { + "$date": "2024-11-20T11:00:57.152Z" + }, + "updated_at": { + "$date": "2025-08-01T09:02:06.954Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc19ac3c0100063e841f3" + }, + "price": 7000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو گوشت", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 6, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100504110.png", + "created_at": { + "$date": "2024-11-20T11:01:46.984Z" + }, + "updated_at": { + "$date": "2025-08-01T09:01:52.557Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc1d6c3c0100063e841fd" + }, + "price": 3050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو جوجه", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 7, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100561534.png", + "created_at": { + "$date": "2024-11-20T11:02:46.713Z" + }, + "updated_at": { + "$date": "2025-08-01T09:01:30.471Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc1f8c3c0100063e8420a" + }, + "price": 3700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو میکس ساده", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 8, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100596151.png", + "created_at": { + "$date": "2024-11-20T11:03:20.951Z" + }, + "updated_at": { + "$date": "2025-08-01T09:00:59.009Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc221c3c0100063e8421f" + }, + "price": 3250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو کباب", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 9, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100637568.png", + "created_at": { + "$date": "2024-11-20T11:04:01.159Z" + }, + "updated_at": { + "$date": "2025-08-01T09:00:41.746Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc245c3c0100063e84235" + }, + "price": 6500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو سلطانی", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 10, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100674202.png", + "created_at": { + "$date": "2024-11-20T11:04:37.968Z" + }, + "updated_at": { + "$date": "2025-08-01T09:00:14.017Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc26ac3c0100063e84242" + }, + "price": 5450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو برگ", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 11, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100709573.png", + "created_at": { + "$date": "2024-11-20T11:05:14.324Z" + }, + "updated_at": { + "$date": "2025-08-01T08:59:43.754Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc28ec3c0100063e84252" + }, + "price": 5650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو چنجه", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 12, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100746067.png", + "created_at": { + "$date": "2024-11-20T11:05:50.568Z" + }, + "updated_at": { + "$date": "2025-08-01T08:59:17.511Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc2d4c3c0100063e8425c" + }, + "price": 8900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "باقالی پلو با گردن", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 13, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "image": "food_1732100816942.png", + "created_at": { + "$date": "2024-11-20T11:07:00.633Z" + }, + "updated_at": { + "$date": "2025-08-01T08:58:52.787Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "673dc30ac3c0100063e84272" + }, + "price": 8700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو گردن", + "description": "", + "short_description": "", + "category": { + "$oid": "673dc024c3c0100063e84164" + }, + "index": 14, + "storeId": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "created_at": { + "$date": "2024-11-20T11:07:54.744Z" + }, + "updated_at": { + "$date": "2025-08-01T08:58:37.069Z" + }, + "__v": 0, + "image": "food_1732361682177.png" +}, +{ + "_id": { + "$oid": "674d78a2a4463c0057df134e" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب تنوری", + "description": "سیب تنوری، قارچ، ژامبون اسلایس، پنیر پیتزا، سس مخصوص", + "short_description": "", + "category": { + "$oid": "64b4e68898ff3c741448df04" + }, + "index": 0, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2024-12-02T09:06:42.496Z" + }, + "updated_at": { + "$date": "2025-08-27T15:11:56.984Z" + }, + "__v": 0, + "image": "food_1733222900831.png" +}, +{ + "_id": { + "$oid": "674d7a45a4463c0057df1392" + }, + "price": 4900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فانتوم", + "description": "گوشت رست بیف، مرغ طعم دار شده، پنیر گودا، پنیر پیتزا، قارچ، زیتون اسلایس", + "short_description": "", + "category": { + "$oid": "64edb2bb59383e8d754ef59b" + }, + "index": 0, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2024-12-02T09:13:41.489Z" + }, + "updated_at": { + "$date": "2025-08-27T15:11:16.347Z" + }, + "__v": 0, + "image": "food_1733221708079.png" +}, +{ + "_id": { + "$oid": "674d7affa4463c0057df13bb" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رد موهیتو طبیعی", + "description": "", + "short_description": "", + "category": { + "$oid": "64edb2e659383e8d754ef5a4" + }, + "index": 0, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2024-12-02T09:16:47.486Z" + }, + "updated_at": { + "$date": "2025-08-27T15:10:22.776Z" + }, + "__v": 0, + "image": "food_1733222939222.png" +}, +{ + "_id": { + "$oid": "674dac61a4463c0057df1b01" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برلینر موز نوتلا", + "description": "دونات برش خورده ، نوتلا ، موز ، خامه ", + "short_description": "", + "category": { + "$oid": "6731aff4c3c0100063e6decb" + }, + "index": 8, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "image": "food_1733143644676.png", + "created_at": { + "$date": "2024-12-02T12:47:29.452Z" + }, + "updated_at": { + "$date": "2025-11-25T17:23:46.138Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "674daceba4463c0057df1b34" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "برلینر خامه توت فرنگی", + "description": "دونات برش خورده ، توت فرنگی تازه ، خامه ، شکلات توت فرنگی", + "short_description": "", + "category": { + "$oid": "6731aff4c3c0100063e6decb" + }, + "index": 9, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "image": "food_1733143785931.png", + "created_at": { + "$date": "2024-12-02T12:49:47.756Z" + }, + "updated_at": { + "$date": "2024-12-02T12:49:47.756Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6750bbaca4463c0057df7207" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز کیک روز ", + "description": "یک اسلایس چیز کیک شکلاتی روز ", + "short_description": "", + "category": { + "$oid": "645215c898ff3c74144161bc" + }, + "index": 2, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2024-12-04T20:29:32.709Z" + }, + "updated_at": { + "$date": "2024-12-04T20:36:04.715Z" + }, + "__v": 0, + "image": "food_1733344545667.png" +}, +{ + "_id": { + "$oid": "6751c253a4463c0057df8852" + }, + "price": 800000, + "stock": 0, + "static_discount": 0, + "active": true, + "name": "کیک اسنیکرز روز ", + "description": "یک اسلایس کیک اسنیکرز روز", + "short_description": "", + "category": { + "$oid": "645215c898ff3c74144161bc" + }, + "index": 3, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "image": "food_1733411402579.png", + "created_at": { + "$date": "2024-12-05T15:10:11.826Z" + }, + "updated_at": { + "$date": "2024-12-05T15:10:11.826Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6751c7cda4463c0057df8aa2" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویج کالباس سرد ", + "description": " نان ساندویچ، ورق کالباس، برگ کاهو، خیارشور و...", + "short_description": "", + "category": { + "$oid": "673e2e4ec3c0100063e85693" + }, + "index": 1, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2024-12-05T15:33:33.071Z" + }, + "updated_at": { + "$date": "2024-12-05T18:38:31.332Z" + }, + "__v": 0, + "image": "food_1733423443280.png" +}, +{ + "_id": { + "$oid": "67521241a4463c0057dfa41b" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو", + "description": "اسپرسو، یک اسکوپ بستنی ", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 6, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "image": "food_1733431869244.png", + "created_at": { + "$date": "2024-12-05T20:51:13.292Z" + }, + "updated_at": { + "$date": "2025-01-12T17:48:27.310Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "675212aca4463c0057dfa421" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مارتینی", + "description": "اسپرسو، وانیل، دارچین، یخ", + "short_description": "", + "category": { + "$oid": "67686ca8a4463c0057e1d2b4" + }, + "index": 7, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2024-12-05T20:53:00.634Z" + }, + "updated_at": { + "$date": "2025-01-12T17:48:07.636Z" + }, + "__v": 0, + "image": "food_1733433123133.png" +}, +{ + "_id": { + "$oid": "6752189da4463c0057dfa46a" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پینک چاکلت ", + "description": "توت فرنگی، شکلات سفید و شیر", + "short_description": "", + "category": { + "$oid": "6783ffa2a4463c0057e4a32b" + }, + "index": 4, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2024-12-05T21:18:21.436Z" + }, + "updated_at": { + "$date": "2025-01-12T17:47:23.918Z" + }, + "__v": 0, + "image": "food_1733433539453.png" +}, +{ + "_id": { + "$oid": "67521a65a4463c0057dfa4a5" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت ", + "description": "شیر، تکه‌های شکلات سفید، وانیل", + "short_description": "", + "category": { + "$oid": "6783ffa2a4463c0057e4a32b" + }, + "index": 5, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "image": "food_1733434215353.png", + "created_at": { + "$date": "2024-12-05T21:25:57.042Z" + }, + "updated_at": { + "$date": "2025-01-12T17:47:11.334Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67521d58a4463c0057dfa4cb" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دارک چاکلت ", + "description": "شیر، شکلات تلخ", + "short_description": "", + "category": { + "$oid": "6783ffa2a4463c0057e4a32b" + }, + "index": 6, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "image": "food_1733434710098.png", + "created_at": { + "$date": "2024-12-05T21:38:32.316Z" + }, + "updated_at": { + "$date": "2025-01-12T17:46:58.016Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d27cca4463c0057e3e554" + }, + "price": 1880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وگن پلیت", + "description": "سبزیجات فصل ساته شده با سس صدف مش پوتیتو ", + "short_description": "", + "category": { + "$oid": "651971c059383e8d7551df47" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T13:10:36.380Z" + }, + "updated_at": { + "$date": "2025-01-07T13:10:36.380Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d299aa4463c0057e3e60a" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای زعفران", + "description": "", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T13:18:18.868Z" + }, + "updated_at": { + "$date": "2025-01-07T13:18:18.868Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d2c52a4463c0057e3e785" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ نارگیل", + "description": "نارگیل فندوق ایریش ", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T13:29:54.881Z" + }, + "updated_at": { + "$date": "2025-04-12T18:02:02.523Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d2d73a4463c0057e3e7fd" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای کرک", + "description": "", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T13:34:43.396Z" + }, + "updated_at": { + "$date": "2025-01-07T13:34:43.396Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d2d8ca4463c0057e3e80f" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته با شیر گیاهی", + "description": "قهوه-شیر گیاهی فندوق یا بادام", + "short_description": "", + "category": { + "$oid": "652a450f59383e8d75530491" + }, + "index": 12, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-07T13:35:08.562Z" + }, + "updated_at": { + "$date": "2025-01-07T13:35:08.562Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d2dbda4463c0057e3e828" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای هل", + "description": "", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T13:35:57.718Z" + }, + "updated_at": { + "$date": "2025-01-07T13:35:57.718Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d2edaa4463c0057e3e89d" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماچالاته", + "description": "ماچا دم شده-شیر", + "short_description": "", + "category": { + "$oid": "652a46a959383e8d7553049a" + }, + "index": 3, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-07T13:40:42.137Z" + }, + "updated_at": { + "$date": "2025-01-07T13:40:42.137Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d2f3ca4463c0057e3e8bd" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای کرک", + "description": "هل- زعفران-گل محمدی-دارچین-شیر", + "short_description": "", + "category": { + "$oid": "652a46a959383e8d7553049a" + }, + "index": 9, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-07T13:42:20.431Z" + }, + "updated_at": { + "$date": "2025-01-07T13:42:20.431Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d2f50a4463c0057e3e8c6" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لمون گرس", + "description": "امیزه ای از علف لیمو نعنا زنجبیل", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T13:42:40.646Z" + }, + "updated_at": { + "$date": "2025-01-07T13:42:40.646Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d2f7ca4463c0057e3e8d4" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش سرماخوردگی ", + "description": "", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T13:43:24.575Z" + }, + "updated_at": { + "$date": "2025-01-07T13:43:24.575Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d2fa0a4463c0057e3e8e0" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ارام بخش", + "description": "", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T13:44:00.851Z" + }, + "updated_at": { + "$date": "2025-01-07T13:44:00.851Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d303fa4463c0057e3e90f" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دیاموند", + "description": "به خشک شده , برگ گل محمدی , زعفران", + "short_description": "", + "category": { + "$oid": "65226e2d59383e8d75527b6a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T13:46:39.893Z" + }, + "updated_at": { + "$date": "2025-01-07T13:46:39.893Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d3076a4463c0057e3e916" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بری سودا", + "description": "", + "short_description": "", + "category": { + "$oid": "652a475659383e8d755304c6" + }, + "index": 2, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-07T13:47:34.654Z" + }, + "updated_at": { + "$date": "2025-01-07T13:47:34.654Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d30aba4463c0057e3e942" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلو سودا", + "description": "", + "short_description": "", + "category": { + "$oid": "652a475659383e8d755304c6" + }, + "index": 3, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-07T13:48:27.833Z" + }, + "updated_at": { + "$date": "2025-01-07T13:48:27.833Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d30cca4463c0057e3e961" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سان فروت", + "description": "", + "short_description": "", + "category": { + "$oid": "652a475659383e8d755304c6" + }, + "index": 4, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-07T13:49:00.633Z" + }, + "updated_at": { + "$date": "2025-01-07T13:49:00.633Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d33eaa4463c0057e3eaea" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک شکلاتی ", + "description": "", + "short_description": "", + "category": { + "$oid": "651eff7759383e8d75524961" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T14:02:18.917Z" + }, + "updated_at": { + "$date": "2025-01-07T14:02:18.917Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d3412a4463c0057e3eafd" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک روز", + "description": "", + "short_description": "", + "category": { + "$oid": "651eff7759383e8d75524961" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T14:02:58.745Z" + }, + "updated_at": { + "$date": "2025-01-07T14:02:58.745Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d3813a4463c0057e3ebf5" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد والدروف", + "description": "کاهو رسمی , سینه مرغ پخته شدهبه همراه سیب و کرفس, گوجه گیلاسی , گردو کاراملایز , انگور , پارمزان سس ماست و ترخون", + "short_description": "", + "category": { + "$oid": "6519730759383e8d7551df92" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T14:20:03.335Z" + }, + "updated_at": { + "$date": "2025-01-07T14:20:03.335Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d38b8a4463c0057e3ec38" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اکسترا فیلت", + "description": "120 گرم فیله گوساله", + "short_description": "", + "category": { + "$oid": "6519730759383e8d7551df92" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T14:22:48.149Z" + }, + "updated_at": { + "$date": "2025-01-07T14:22:48.149Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d3910a4463c0057e3ec59" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اکسترا فیله", + "description": "یک عدد فیله مرغ سوخاری شده", + "short_description": "", + "category": { + "$oid": "65219db959383e8d75527683" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T14:24:16.872Z" + }, + "updated_at": { + "$date": "2025-01-07T14:24:16.872Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d3deea4463c0057e3ee49" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس اووکادو هات", + "description": "", + "short_description": "", + "category": { + "$oid": "6519819c59383e8d7551e1be" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T14:45:02.594Z" + }, + "updated_at": { + "$date": "2025-01-07T14:45:02.594Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d3e24a4463c0057e3ee55" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس انتراکوت", + "description": "", + "short_description": "", + "category": { + "$oid": "6519819c59383e8d7551e1be" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T14:45:56.564Z" + }, + "updated_at": { + "$date": "2025-03-31T14:35:52.382Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "677d3e3ca4463c0057e3ee5f" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سس سزار", + "description": "", + "short_description": "", + "category": { + "$oid": "6519819c59383e8d7551e1be" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-01-07T14:46:20.191Z" + }, + "updated_at": { + "$date": "2025-03-31T14:35:37.618Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "678136faa4463c0057e455f6" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پن چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 1, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:04:26.081Z" + }, + "updated_at": { + "$date": "2025-01-10T15:04:26.081Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813718a4463c0057e45603" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کروسان", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:04:56.644Z" + }, + "updated_at": { + "$date": "2025-01-10T15:04:56.644Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6781376fa4463c0057e45616" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیوب کروسان", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:06:23.529Z" + }, + "updated_at": { + "$date": "2025-01-10T15:06:23.529Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "678137e0a4463c0057e45628" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "image": "food_1736521695625.png", + "created_at": { + "$date": "2025-01-10T15:08:16.789Z" + }, + "updated_at": { + "$date": "2025-01-10T15:08:16.789Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6781391da4463c0057e4567e" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی شکلات فندق", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:13:33.382Z" + }, + "updated_at": { + "$date": "2025-01-10T15:13:33.382Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813942a4463c0057e4569d" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تیرامیسو لیدی فینگر", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:14:10.167Z" + }, + "updated_at": { + "$date": "2025-01-10T15:14:10.167Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813961a4463c0057e456aa" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز کیک نیویورکی", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:14:41.203Z" + }, + "updated_at": { + "$date": "2025-01-10T15:14:41.203Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813992a4463c0057e456b7" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز کیک نوتلا", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:15:30.807Z" + }, + "updated_at": { + "$date": "2025-01-10T15:15:30.807Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "678139bca4463c0057e456d3" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز کیک شکلاتی", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:16:12.033Z" + }, + "updated_at": { + "$date": "2025-01-10T15:16:12.033Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "678139e2a4463c0057e456e6" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:16:50.105Z" + }, + "updated_at": { + "$date": "2025-01-10T15:16:50.105Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813a21a4463c0057e4571d" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رول دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:17:53.748Z" + }, + "updated_at": { + "$date": "2025-01-10T15:17:53.748Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813a46a4463c0057e45739" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب دارچین گردو", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:18:30.318Z" + }, + "updated_at": { + "$date": "2025-01-10T15:18:30.318Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813ae8a4463c0057e4576d" + }, + "price": 170000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی کره گردو", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:21:12.380Z" + }, + "updated_at": { + "$date": "2025-01-10T15:21:12.380Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813b17a4463c0057e45795" + }, + "price": 170000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:21:59.928Z" + }, + "updated_at": { + "$date": "2025-01-10T15:31:53.029Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813c2da4463c0057e45880" + }, + "price": 190000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی رد ولوت", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:26:37.840Z" + }, + "updated_at": { + "$date": "2025-01-10T15:26:37.840Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813d09a4463c0057e458d3" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لوف شکلات فندق", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:30:17.160Z" + }, + "updated_at": { + "$date": "2025-01-10T15:30:17.160Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813d24a4463c0057e458dd" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لوف اسنیکرز", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:30:44.292Z" + }, + "updated_at": { + "$date": "2025-01-10T15:30:44.292Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813d4ba4463c0057e458e7" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی جاینت پسته", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:31:23.622Z" + }, + "updated_at": { + "$date": "2025-01-10T15:31:23.622Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67813db0a4463c0057e45923" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موچی", + "description": "", + "short_description": "", + "category": { + "$oid": "652a55ae59383e8d75530781" + }, + "index": 0, + "storeId": { + "$oid": "651ad03159383e8d7551f3be" + }, + "created_at": { + "$date": "2025-01-10T15:33:04.333Z" + }, + "updated_at": { + "$date": "2025-01-10T15:33:04.333Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "678416baa4463c0057e4aa07" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکاچیلو", + "description": "", + "short_description": "", + "category": { + "$oid": "6783ffeea4463c0057e4a367" + }, + "index": 3, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-12T19:23:38.329Z" + }, + "updated_at": { + "$date": "2025-01-12T19:31:05.357Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67841716a4463c0057e4aa11" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیلوشکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "6783ffeea4463c0057e4a367" + }, + "index": 4, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-12T19:25:10.704Z" + }, + "updated_at": { + "$date": "2025-01-12T19:32:13.980Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67841747a4463c0057e4aa1b" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیلوماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "6783ffeea4463c0057e4a367" + }, + "index": 5, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-12T19:25:59.946Z" + }, + "updated_at": { + "$date": "2025-01-12T19:27:20.514Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67841784a4463c0057e4aa28" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک بادام زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "6783ffeea4463c0057e4a367" + }, + "index": 6, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-12T19:27:00.374Z" + }, + "updated_at": { + "$date": "2025-01-12T19:27:31.861Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "678417c1a4463c0057e4aa4c" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس استوایی", + "description": "", + "short_description": "", + "category": { + "$oid": "6783ffeea4463c0057e4a367" + }, + "index": 7, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-12T19:28:01.084Z" + }, + "updated_at": { + "$date": "2025-01-12T19:34:09.587Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "678417f7a4463c0057e4aa59" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس اوشن", + "description": "", + "short_description": "", + "category": { + "$oid": "6783ffeea4463c0057e4a367" + }, + "index": 8, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-12T19:28:55.931Z" + }, + "updated_at": { + "$date": "2025-01-12T19:34:25.422Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6784181ba4463c0057e4aa63" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس بری", + "description": "", + "short_description": "", + "category": { + "$oid": "6783ffeea4463c0057e4a367" + }, + "index": 9, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-12T19:29:31.412Z" + }, + "updated_at": { + "$date": "2025-01-12T19:34:37.190Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6786fddda4463c0057e4f4c9" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "غذا نداریم فعلا", + "description": "", + "short_description": "", + "category": { + "$oid": "6786fbfaa4463c0057e4f482" + }, + "index": 0, + "storeId": { + "$oid": "6786f8aba4463c0057e4f42d" + }, + "image": "food_1736900058889.png", + "created_at": { + "$date": "2025-01-15T00:14:21.017Z" + }, + "updated_at": { + "$date": "2025-01-15T00:14:21.017Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6788fb4ca4463c0057e52637" + }, + "price": 3800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد کرن بری بامرغ", + "description": "کرن بری /کاهو تازه فصل/میوه های تازه فصل /گردو /پنیر فتا /سس کره بادام زمینی /مرغ گریل شده", + "short_description": "", + "category": { + "$oid": "61ac606626d2e0e4fbd9b45a" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "image": "food_1737030471416.png", + "created_at": { + "$date": "2025-01-16T12:27:56.153Z" + }, + "updated_at": { + "$date": "2025-12-04T11:53:39.298Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "678cf71ea4463c0057e59a6b" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای زعفران", + "description": "چای ایرانی دمی ، زعفران دم شده ", + "short_description": "", + "category": { + "$oid": "67306494c3c0100063e6bf64" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "image": "food_1737291548706.png", + "created_at": { + "$date": "2025-01-19T12:59:10.883Z" + }, + "updated_at": { + "$date": "2025-02-04T09:31:43.698Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6794ff9ca4463c0057e67b1c" + }, + "price": 5150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ گود بیف new", + "description": "نان چیاباتا،فیله گوساله،فلفل دلمه ای،گوجه،کاهو،خیارشور،پیاز،پنیردیپ چدار،قارچ،سیب زمینی،سس مخصوص", + "short_description": "", + "category": { + "$oid": "6207a2681ee4b0270db4c429" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2025-01-25T15:13:32.238Z" + }, + "updated_at": { + "$date": "2025-12-25T12:38:37.986Z" + }, + "__v": 0, + "image": "food_1739469717534.png" +}, +{ + "_id": { + "$oid": "6795019da4463c0057e67b9c" + }, + "price": 3990000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لازانیا new", + "description": "خمیر،گوشت چرخ کرده،قارچ،فلفل دلمه ای،پنیر میکس", + "short_description": "", + "category": { + "$oid": "6207a2421ee4b0270db4c40b" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2025-01-25T15:22:05.965Z" + }, + "updated_at": { + "$date": "2025-12-25T12:38:47.979Z" + }, + "__v": 0, + "image": "food_1739469613044.png" +}, +{ + "_id": { + "$oid": "67951037a4463c0057e67ddf" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماچا", + "description": "چایی سبز ژاپنی که یکی از غنی‌ترین منابع آنتی‌اکسیدان به‌شمار می‌آید. ", + "short_description": "", + "category": { + "$oid": "6783ff4fa4463c0057e4a31f" + }, + "index": 1, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-25T16:24:23.315Z" + }, + "updated_at": { + "$date": "2025-01-25T16:29:36.413Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795107aa4463c0057e67e01" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماچالاته ", + "description": "چای ماچا و شیر", + "short_description": "", + "category": { + "$oid": "6783ff4fa4463c0057e4a31f" + }, + "index": 2, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-25T16:25:30.953Z" + }, + "updated_at": { + "$date": "2025-01-25T16:25:30.953Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67951164a4463c0057e67e32" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماچالاته سرد", + "description": "چای ماچا، شیر، یخ", + "short_description": "", + "category": { + "$oid": "6783ff4fa4463c0057e4a31f" + }, + "index": 3, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-25T16:29:24.825Z" + }, + "updated_at": { + "$date": "2025-01-25T16:44:55.437Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679511cda4463c0057e67e58" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماچا کاتو", + "description": "چای ماچا،یه اسکوپ بستنی", + "short_description": "", + "category": { + "$oid": "6783ff4fa4463c0057e4a31f" + }, + "index": 4, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-25T16:31:09.459Z" + }, + "updated_at": { + "$date": "2025-01-25T16:31:09.459Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67951282a4463c0057e67e87" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک ماچا", + "description": "چای ماچا، بستنی شیک شده", + "short_description": "", + "category": { + "$oid": "6783ff4fa4463c0057e4a31f" + }, + "index": 5, + "storeId": { + "$oid": "6450d97a98ff3c7414414999" + }, + "created_at": { + "$date": "2025-01-25T16:34:10.809Z" + }, + "updated_at": { + "$date": "2025-01-25T16:34:10.809Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795ed31a4463c0057e68e12" + }, + "price": 1940000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ماچا", + "description": "", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 3, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:07:13.784Z" + }, + "updated_at": { + "$date": "2025-12-23T13:39:11.089Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795edd9a4463c0057e68e3d" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس آمریکانو ۷۰/۳۰", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 1, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:10:01.954Z" + }, + "updated_at": { + "$date": "2025-12-22T20:11:14.742Z" + }, + "__v": 0, + "image": "food_1741624882952.png" +}, +{ + "_id": { + "$oid": "6795ee0ca4463c0057e68e47" + }, + "price": 2140000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته ۷۰/۳۰", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 2, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:10:52.055Z" + }, + "updated_at": { + "$date": "2025-12-22T20:12:23.956Z" + }, + "__v": 0, + "image": "food_1741624761374.png" +}, +{ + "_id": { + "$oid": "6795ee43a4463c0057e68e53" + }, + "price": 2230000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس ماچا لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 5, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:11:47.347Z" + }, + "updated_at": { + "$date": "2025-12-23T13:41:03.902Z" + }, + "__v": 0, + "image": "food_1741624724783.png" +}, +{ + "_id": { + "$oid": "6795ee66a4463c0057e68e5d" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 7, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:12:22.760Z" + }, + "updated_at": { + "$date": "2025-12-23T13:41:59.548Z" + }, + "__v": 0, + "image": "food_1741624675083.png" +}, +{ + "_id": { + "$oid": "6795ee8ea4463c0057e68e67" + }, + "price": 2430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس ماچا بری", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 10, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:13:02.369Z" + }, + "updated_at": { + "$date": "2025-12-23T13:43:06.260Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795eeb4a4463c0057e68e71" + }, + "price": 2560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکو آیس لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 11, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:13:40.426Z" + }, + "updated_at": { + "$date": "2025-12-23T13:43:36.868Z" + }, + "__v": 0, + "image": "food_1741718046900.png" +}, +{ + "_id": { + "$oid": "6795eed6a4463c0057e68e7b" + }, + "price": 2550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکو آیس ماچا", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 12, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:14:14.247Z" + }, + "updated_at": { + "$date": "2025-12-23T13:44:08.251Z" + }, + "__v": 0, + "image": "food_1741718020809.png" +}, +{ + "_id": { + "$oid": "6795ef01a4463c0057e68e85" + }, + "price": 2780000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "V60 کلمبیا هانی گیشا", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9f3a4463c0057e68d31" + }, + "index": 1, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:14:57.754Z" + }, + "updated_at": { + "$date": "2025-12-09T12:52:51.081Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795ef2aa4463c0057e68e8f" + }, + "price": 1280000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکا دست ساز", + "description": "سیروپ کوکا، لیمو، سودا", + "short_description": "", + "category": { + "$oid": "6795ea3aa4463c0057e68d3a" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:15:38.426Z" + }, + "updated_at": { + "$date": "2025-08-24T10:49:17.502Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795ef46a4463c0057e68e9c" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "لیمو، سوئیت اند ساور، سودا", + "short_description": "", + "category": { + "$oid": "6795ea3aa4463c0057e68d3a" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:16:06.109Z" + }, + "updated_at": { + "$date": "2025-08-24T10:48:55.871Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795ef62a4463c0057e68ea6" + }, + "price": 1490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "لیمو، نعنا، سوئیت اند ساور، سودا", + "short_description": "", + "category": { + "$oid": "6795ea3aa4463c0057e68d3a" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:16:34.385Z" + }, + "updated_at": { + "$date": "2025-08-24T10:48:38.504Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795efefa4463c0057e68ece" + }, + "price": 1880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سینرجی", + "description": "پرتقال، زنجبیل، زردچوبه، عسل", + "short_description": "", + "category": { + "$oid": "6795ea3aa4463c0057e68d3a" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:18:55.408Z" + }, + "updated_at": { + "$date": "2025-08-24T10:49:39.955Z" + }, + "__v": 0, + "image": "food_1741624348642.png" +}, +{ + "_id": { + "$oid": "6795f073a4463c0057e68eff" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "یونیتی", + "description": "اسپرولینا، توت‌فرنگی، نارگیل، هلو", + "short_description": "", + "category": { + "$oid": "6795ea56a4463c0057e68d43" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:21:07.413Z" + }, + "updated_at": { + "$date": "2025-12-23T13:58:44.476Z" + }, + "__v": 0, + "image": "food_1741623784133.png" +}, +{ + "_id": { + "$oid": "6795f09aa4463c0057e68f09" + }, + "price": 2400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیید فلو", + "description": "شیر بادام، تخم کدو، انبه، موز", + "short_description": "", + "category": { + "$oid": "6795ea56a4463c0057e68d43" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:21:46.319Z" + }, + "updated_at": { + "$date": "2025-12-23T13:59:04.780Z" + }, + "__v": 0, + "image": "food_1741623681207.png" +}, +{ + "_id": { + "$oid": "6795f0b9a4463c0057e68f13" + }, + "price": 2760000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میدنایت", + "description": "انجیر، گاناش، شاتوت، شیر", + "short_description": "", + "category": { + "$oid": "6795ea56a4463c0057e68d43" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:22:17.660Z" + }, + "updated_at": { + "$date": "2025-12-23T13:59:25.439Z" + }, + "__v": 0, + "image": "food_1741623638099.png" +}, +{ + "_id": { + "$oid": "6795f0f2a4463c0057e68f27" + }, + "price": 2740000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ناتی بری", + "description": "توت‌فرنگی، شاتوت، میکس بری، شیر بادام", + "short_description": "", + "category": { + "$oid": "6795ea56a4463c0057e68d43" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:23:14.256Z" + }, + "updated_at": { + "$date": "2025-12-23T13:59:49.944Z" + }, + "__v": 0, + "image": "food_1741623561027.png" +}, +{ + "_id": { + "$oid": "6795f1e0a4463c0057e68f52" + }, + "price": 1610000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6795eaa0a4463c0057e68d58" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:27:12.539Z" + }, + "updated_at": { + "$date": "2025-05-22T08:17:08.254Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795f1f9a4463c0057e68f5c" + }, + "price": 1670000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6795eaa0a4463c0057e68d58" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:27:37.749Z" + }, + "updated_at": { + "$date": "2025-05-22T08:16:45.186Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795f213a4463c0057e68f66" + }, + "price": 1770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بری چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6795eaa0a4463c0057e68d58" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:28:03.992Z" + }, + "updated_at": { + "$date": "2025-05-22T08:16:21.305Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795f22ba4463c0057e68f70" + }, + "price": 1610000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا اسپایسی", + "description": "", + "short_description": "", + "category": { + "$oid": "6795eaa0a4463c0057e68d58" + }, + "index": 12, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:28:27.695Z" + }, + "updated_at": { + "$date": "2025-11-15T14:15:53.973Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795f247a4463c0057e68f7a" + }, + "price": 1710000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 81, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:28:55.625Z" + }, + "updated_at": { + "$date": "2025-05-22T13:15:48.963Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6795f270a4463c0057e68f84" + }, + "price": 4930000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ بیکن و پیاز کاراملی", + "description": "بیکن، پیاز کاراملی، پنیر چدار", + "short_description": "", + "category": { + "$oid": "6795eae6a4463c0057e68d61" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:29:36.711Z" + }, + "updated_at": { + "$date": "2025-12-23T14:13:22.642Z" + }, + "__v": 0, + "image": "food_1741622808905.png" +}, +{ + "_id": { + "$oid": "6795f290a4463c0057e68f8e" + }, + "price": 4830000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ سوسیس و خردل", + "description": "سوسیس، سس خردل، پیکل پیاز", + "short_description": "", + "category": { + "$oid": "6795eae6a4463c0057e68d61" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:30:08.356Z" + }, + "updated_at": { + "$date": "2025-12-23T14:14:15.154Z" + }, + "__v": 0, + "image": "food_1741622646582.png" +}, +{ + "_id": { + "$oid": "6795f2b5a4463c0057e68f98" + }, + "price": 3770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ چیکن پارمسان", + "description": "مرغ، سس پارمسان، چیپس، گوجه مزه‌دار شده", + "short_description": "", + "category": { + "$oid": "6795eae6a4463c0057e68d61" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:30:45.459Z" + }, + "updated_at": { + "$date": "2025-12-23T14:15:25.261Z" + }, + "__v": 0, + "image": "food_1741622576851.png" +}, +{ + "_id": { + "$oid": "6795f2d1a4463c0057e68fa2" + }, + "price": 2930000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ سبزیجات", + "description": "بادمجان گریل، پاپریکا کبابی، اسفناج، کدو گریل، قارچ مزه‌دار شده، سس پنیر، گلیز بالزامیک", + "short_description": "", + "category": { + "$oid": "6795eae6a4463c0057e68d61" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:31:13.838Z" + }, + "updated_at": { + "$date": "2025-12-23T14:15:44.706Z" + }, + "__v": 0, + "image": "food_1741622410069.png" +}, +{ + "_id": { + "$oid": "6795f2f7a4463c0057e68fac" + }, + "price": 3570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ چیکن ملانزانا", + "description": "مرغ، بادمجان گریل، روکولا، گلیز بالزامیک، پستو روسو", + "short_description": "", + "category": { + "$oid": "6795eae6a4463c0057e68d61" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:31:51.318Z" + }, + "updated_at": { + "$date": "2025-12-23T14:16:07.614Z" + }, + "__v": 0, + "image": "food_1741622230110.png" +}, +{ + "_id": { + "$oid": "6795f31da4463c0057e68fb6" + }, + "price": 3550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ چیکن پستو", + "description": "مرغ، سس پستو ریحان، گوجه مزه‌دار شده، سس پنیر", + "short_description": "", + "category": { + "$oid": "6795eb06a4463c0057e68d76" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:32:29.272Z" + }, + "updated_at": { + "$date": "2025-12-23T14:17:07.585Z" + }, + "__v": 0, + "image": "food_1741622155566.png" +}, +{ + "_id": { + "$oid": "6795f3a7a4463c0057e68fd5" + }, + "price": 2630000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ چیکن هالوپینو", + "description": "مرغ، سس هالوپینو، گوجه مزه‌دار، پیازچه", + "short_description": "", + "category": { + "$oid": "6795eb06a4463c0057e68d76" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T08:34:47.277Z" + }, + "updated_at": { + "$date": "2025-10-18T12:38:23.981Z" + }, + "__v": 0, + "image": "food_1741621934158.png" +}, +{ + "_id": { + "$oid": "679616c0a4463c0057e695fa" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه", + "description": "", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 1, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T11:04:32.508Z" + }, + "updated_at": { + "$date": "2025-10-27T14:22:18.569Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679616faa4463c0057e6960a" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز", + "description": "", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 2, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T11:05:30.603Z" + }, + "updated_at": { + "$date": "2025-10-27T14:22:37.638Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67961828a4463c0057e6962e" + }, + "price": 1320000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس تی کوکو گرین", + "description": "چای سبز سرددم، سیروپ نارگیل", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 11, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T11:10:32.662Z" + }, + "updated_at": { + "$date": "2025-10-27T14:21:58.908Z" + }, + "__v": 0, + "image": "food_1741621829898.png" +}, +{ + "_id": { + "$oid": "67961913a4463c0057e69666" + }, + "price": 1930000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کرم بروله", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T11:14:27.016Z" + }, + "updated_at": { + "$date": "2025-12-23T13:57:21.591Z" + }, + "__v": 0, + "image": "food_1741621763441.png" +}, +{ + "_id": { + "$oid": "67961988a4463c0057e69670" + }, + "price": 2210000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موس شکلات و پرتقال", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 0, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T11:16:24.528Z" + }, + "updated_at": { + "$date": "2025-12-23T13:57:43.785Z" + }, + "__v": 0, + "image": "food_1741621732851.png" +}, +{ + "_id": { + "$oid": "67962c26a4463c0057e6998c" + }, + "price": 2020000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته سیروپ", + "description": "سیروپ انتخابی (کارامل/شکلات/نارگیل/فندوق/وانیل/لوتوس)", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 9, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-26T12:35:50.787Z" + }, + "updated_at": { + "$date": "2025-05-22T08:00:47.171Z" + }, + "__v": 0, + "image": "food_1741717242990.png" +}, +{ + "_id": { + "$oid": "6796d07aa4463c0057e6ab59" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات دوبی", + "description": "یک عدد دونات شکلات ، یک عدد (تکه ای) شکلات دوبی", + "short_description": "", + "category": { + "$oid": "6796cfa4a4463c0057e6ab4c" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-01-27T00:16:58.244Z" + }, + "updated_at": { + "$date": "2025-08-14T23:31:22.362Z" + }, + "__v": 0, + "image": "food_1743526505742.png" +}, +{ + "_id": { + "$oid": "6796d0c6a4463c0057e6ab6f" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات پسته دوبی ", + "description": "یک عدد دونات شکلات ، یک عدد ( تکه ای ) شکلات دوبی ، پودر پسته", + "short_description": "", + "category": { + "$oid": "6796cfa4a4463c0057e6ab4c" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-01-27T00:18:14.970Z" + }, + "updated_at": { + "$date": "2025-08-14T23:30:57.644Z" + }, + "__v": 0, + "image": "food_1738534628614.png" +}, +{ + "_id": { + "$oid": "67988fb8a4463c0057e6dabf" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ۷۰/۳۰", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 3, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:05:12.082Z" + }, + "updated_at": { + "$date": "2025-12-22T20:03:47.246Z" + }, + "__v": 0, + "image": "food_1741717154499.png" +}, +{ + "_id": { + "$oid": "67988ff5a4463c0057e6dad2" + }, + "price": 1740000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ماکیاتو ۷۰/۳۰", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 4, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:06:13.151Z" + }, + "updated_at": { + "$date": "2025-12-22T20:04:15.929Z" + }, + "__v": 0, + "image": "food_1741716889953.png" +}, +{ + "_id": { + "$oid": "67989025a4463c0057e6dae8" + }, + "price": 1860000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو پیکولو ۷۰/۳۰", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 5, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:07:01.707Z" + }, + "updated_at": { + "$date": "2025-12-22T20:04:42.220Z" + }, + "__v": 0, + "image": "food_1741716997525.png" +}, +{ + "_id": { + "$oid": "6798904ba4463c0057e6dafb" + }, + "price": 1960000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو کورتادو ۷۰/۳۰", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 6, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:07:39.555Z" + }, + "updated_at": { + "$date": "2025-12-22T20:06:19.259Z" + }, + "__v": 0, + "image": "food_1741716966384.png" +}, +{ + "_id": { + "$oid": "67989070a4463c0057e6db05" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو ۷۰/۳۰", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 7, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:08:16.573Z" + }, + "updated_at": { + "$date": "2025-12-22T20:08:35.486Z" + }, + "__v": 0, + "image": "food_1741632315585.png" +}, +{ + "_id": { + "$oid": "67989091a4463c0057e6db0f" + }, + "price": 2140000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته ۷۰/۳۰", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 8, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:08:49.987Z" + }, + "updated_at": { + "$date": "2025-12-22T20:10:43.002Z" + }, + "__v": 0, + "image": "food_1741716779814.png" +}, +{ + "_id": { + "$oid": "679890d8a4463c0057e6db29" + }, + "price": 2080000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو ۷۰/۳۰", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 10, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:10:00.361Z" + }, + "updated_at": { + "$date": "2025-12-22T20:09:08.839Z" + }, + "__v": 0, + "image": "food_1741716756922.png" +}, +{ + "_id": { + "$oid": "679890faa4463c0057e6db33" + }, + "price": 2080000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فلت وایت ۷۰/۳۰", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 11, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:10:34.912Z" + }, + "updated_at": { + "$date": "2025-12-22T20:09:57.964Z" + }, + "__v": 0, + "image": "food_1741716693388.png" +}, +{ + "_id": { + "$oid": "67989124a4463c0057e6db3d" + }, + "price": 2230000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماچا لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 16, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:11:16.384Z" + }, + "updated_at": { + "$date": "2025-12-23T13:38:51.595Z" + }, + "__v": 0, + "image": "food_1741716616701.png" +}, +{ + "_id": { + "$oid": "6798914aa4463c0057e6db47" + }, + "price": 2560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکو لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 17, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:11:54.311Z" + }, + "updated_at": { + "$date": "2025-12-23T13:40:29.742Z" + }, + "__v": 0, + "image": "food_1741716569208.png" +}, +{ + "_id": { + "$oid": "67989168a4463c0057e6db51" + }, + "price": 2550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکو ماچا لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 14, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:12:24.316Z" + }, + "updated_at": { + "$date": "2025-12-23T13:39:33.778Z" + }, + "__v": 0, + "image": "food_1741716528276.png" +}, +{ + "_id": { + "$oid": "679893a5a4463c0057e6dc89" + }, + "price": 2640000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته سیروپ", + "description": "سیروپ انتخابی (کارامل/شکلات/نارگیل/فندوق/وانیل/لوتوس)", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 3, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-28T08:21:57.880Z" + }, + "updated_at": { + "$date": "2025-12-22T20:11:49.419Z" + }, + "__v": 0, + "image": "food_1741717568965.png" +}, +{ + "_id": { + "$oid": "6798e559bd2ce20057144cb3" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک روز", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1e0fc1eece3d762639b" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-01-28T14:10:33.811Z" + }, + "updated_at": { + "$date": "2025-04-21T09:29:52.397Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6799d309bd2ce20057146af8" + }, + "price": 3010000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته بابل تی", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 4, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-29T07:04:41.427Z" + }, + "updated_at": { + "$date": "2025-12-23T13:44:54.666Z" + }, + "__v": 0, + "image": "food_1741717726294.png" +}, +{ + "_id": { + "$oid": "6799d353bd2ce20057146b18" + }, + "price": 2400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس ماچا بابل تی", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 6, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-29T07:05:55.787Z" + }, + "updated_at": { + "$date": "2025-12-23T13:47:05.907Z" + }, + "__v": 0, + "image": "food_1741717765520.png" +}, +{ + "_id": { + "$oid": "6799d3bdbd2ce20057146b46" + }, + "price": 3300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو سیروپ", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 8, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-29T07:07:41.167Z" + }, + "updated_at": { + "$date": "2025-12-23T13:42:22.735Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6799d3e5bd2ce20057146b50" + }, + "price": 3040000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو بابل تی", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9c5a4463c0057e68d28" + }, + "index": 9, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-29T07:08:21.331Z" + }, + "updated_at": { + "$date": "2025-12-23T13:47:25.823Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a5ed3bd2ce20057147eb6" + }, + "price": 640000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو عربیکا", + "description": "عصاره دان قهوه عربیکا + شکلات + اب", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 1, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:01:07.018Z" + }, + "updated_at": { + "$date": "2025-01-29T17:01:51.167Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a5f5dbd2ce20057147f06" + }, + "price": 490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو کامرشیال", + "description": "عصاره دان قهوه ربوستا + شکلات + اب", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 2, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:03:25.055Z" + }, + "updated_at": { + "$date": "2025-01-29T17:03:25.055Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a600cbd2ce20057147f79" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ماکیاتو عربیکا", + "description": "عصاره دان قهوه عربیکا +فوم شیر+ شکلات + اب", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 3, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:06:20.426Z" + }, + "updated_at": { + "$date": "2025-01-29T17:06:20.426Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a608cbd2ce20057147fc8" + }, + "price": 490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ماکیاتو کامرشیال", + "description": "عصاره دان قهوه ربوستا +فوم شیر+ شکلات + اب", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 4, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:08:28.483Z" + }, + "updated_at": { + "$date": "2025-01-29T17:08:28.483Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a611ebd2ce20057148027" + }, + "price": 830000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کن پانا عربیکا", + "description": "عصاره دان قهوه عربیکا +خامه+ شکلات + اب", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 5, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:10:54.597Z" + }, + "updated_at": { + "$date": "2025-01-29T17:10:54.597Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a6258bd2ce2005714811b" + }, + "price": 730000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کن پانا کامرشیال", + "description": "عصاره دان قهوه ربوستا +خامه+ شکلات + اب", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 6, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:16:08.757Z" + }, + "updated_at": { + "$date": "2025-01-29T17:16:08.757Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a62cabd2ce2005714814f" + }, + "price": 670000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو عربیکا", + "description": "عصاره دان قهوه عربیکا +اب جوش+ شکلات", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 7, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:18:02.578Z" + }, + "updated_at": { + "$date": "2025-01-29T17:18:02.578Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a6332bd2ce2005714816b" + }, + "price": 510000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو کامرشیال", + "description": "عصاره دان قهوه ربوستا +اب جوش + شکلات ", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 8, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:19:46.667Z" + }, + "updated_at": { + "$date": "2025-01-29T17:19:46.667Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a638abd2ce200571481ab" + }, + "price": 890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته عربیکا", + "description": "عصاره دان قهوه عربیکا +شیر", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 9, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:21:14.765Z" + }, + "updated_at": { + "$date": "2025-01-29T17:21:14.765Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a63d4bd2ce200571481c7" + }, + "price": 790000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته کامرشیال", + "description": "عصاره دان قهوه ربوستا+شیر", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 10, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:22:28.443Z" + }, + "updated_at": { + "$date": "2025-01-29T17:22:28.443Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a642ebd2ce200571481fe" + }, + "price": 890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فلت وایت عربیکا", + "description": "عصاره قهوه عربیکا +شیر فوم", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 11, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:23:58.311Z" + }, + "updated_at": { + "$date": "2025-01-29T17:35:49.824Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a6539bd2ce20057148270" + }, + "price": 790000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فلت وایت کامرشیال", + "description": "عصاره قهوه ربوستا+ شیر فوم", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 12, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:28:25.459Z" + }, + "updated_at": { + "$date": "2025-01-29T17:28:25.459Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a678fbd2ce20057148391" + }, + "price": 890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو عربیکا", + "description": "عصاره قهوه عربیکا +شیر فوم", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 13, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:38:23.100Z" + }, + "updated_at": { + "$date": "2025-01-29T17:38:23.100Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a682dbd2ce20057148445" + }, + "price": 790000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو کامرشیال", + "description": "عصاره قهوه ربوستا+شیر فوم", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 14, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:41:01.551Z" + }, + "updated_at": { + "$date": "2025-01-29T17:41:01.551Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a68aabd2ce20057148479" + }, + "price": 1090000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو عربیکا", + "description": "عصاره قهوه عربیکا +شیر فوم + سس کارامل + سیروپ کارامل", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 15, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:43:06.152Z" + }, + "updated_at": { + "$date": "2025-01-29T17:43:06.152Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a691dbd2ce2005714849a" + }, + "price": 1010000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو کامرشیال", + "description": "عصاره قهوه ربوستا +شیر فوم + سس کارامل + سیروپ کارامل", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 16, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:45:01.721Z" + }, + "updated_at": { + "$date": "2025-01-29T17:45:01.721Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a6976bd2ce200571484d6" + }, + "price": 1090000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا عربیکا", + "description": "عصاره قهوه عربیکا +شیر فوم + سس شکلات", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 17, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:46:30.976Z" + }, + "updated_at": { + "$date": "2025-01-29T17:46:30.976Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679a69b3bd2ce200571484f8" + }, + "price": 1010000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا کامرشیال", + "description": "عصاره قهوه ربوستا +شیر فوم + سس شکلات", + "short_description": "", + "category": { + "$oid": "6798e8fabd2ce20057144d97" + }, + "index": 18, + "storeId": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "created_at": { + "$date": "2025-01-29T17:47:31.239Z" + }, + "updated_at": { + "$date": "2025-01-29T17:47:31.239Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679b5246bd2ce2005714936b" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمی دستگاهی", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9f3a4463c0057e68d31" + }, + "index": 4, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-30T10:19:50.739Z" + }, + "updated_at": { + "$date": "2025-12-23T14:20:24.589Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679b52afbd2ce20057149391" + }, + "price": 1680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلدبرو کلاسیک", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9f3a4463c0057e68d31" + }, + "index": 10, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-30T10:21:35.835Z" + }, + "updated_at": { + "$date": "2025-12-09T12:50:13.378Z" + }, + "__v": 0, + "image": "food_1741615796962.png" +}, +{ + "_id": { + "$oid": "679b52ccbd2ce200571493a4" + }, + "price": 1680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلدبرو پرشین", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9f3a4463c0057e68d31" + }, + "index": 9, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-30T10:22:04.566Z" + }, + "updated_at": { + "$date": "2025-12-09T12:55:43.534Z" + }, + "__v": 0, + "image": "food_1741615745223.png" +}, +{ + "_id": { + "$oid": "679b52ebbd2ce200571493ba" + }, + "price": 1780000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلدبرو کوکو آچری", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9f3a4463c0057e68d31" + }, + "index": 5, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-30T10:22:35.650Z" + }, + "updated_at": { + "$date": "2025-10-20T19:22:12.325Z" + }, + "__v": 0, + "image": "food_1741615718530.png" +}, +{ + "_id": { + "$oid": "679b5307bd2ce200571493c4" + }, + "price": 1680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلدبرو آیریش", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9f3a4463c0057e68d31" + }, + "index": 6, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-30T10:23:03.596Z" + }, + "updated_at": { + "$date": "2025-10-20T19:21:50.305Z" + }, + "__v": 0, + "image": "food_1741615672755.png" +}, +{ + "_id": { + "$oid": "679b5496bd2ce2005714943a" + }, + "price": 2580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تست اسفناج و قارچ", + "description": "نان خمیر ترش، اسفناج، قارچ کره‌ای، تخم مرغ(همراه با قهوه دمي/چای)", + "short_description": "", + "category": { + "$oid": "679b535bbd2ce200571493da" + }, + "index": 3, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-30T10:29:42.674Z" + }, + "updated_at": { + "$date": "2025-10-18T12:44:28.482Z" + }, + "__v": 0, + "image": "food_1741615541780.png" +}, +{ + "_id": { + "$oid": "679b5517bd2ce20057149468" + }, + "price": 3350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیکن و نیمرو", + "description": "نان بریوش، قارچ، بیکن، نیمرو(همراه با قهوه دمي/چای)", + "short_description": "", + "category": { + "$oid": "679b535bbd2ce200571493da" + }, + "index": 4, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-30T10:31:51.834Z" + }, + "updated_at": { + "$date": "2025-10-18T12:45:12.649Z" + }, + "__v": 0, + "image": "food_1741615479089.png" +}, +{ + "_id": { + "$oid": "679b5558bd2ce20057149496" + }, + "price": 3510000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوسیس و اسکرامبل", + "description": "نان بریوش، سوسیس، سس خردل، اسکرامبل(همراه با قهوه دمي/چای)", + "short_description": "", + "category": { + "$oid": "679b535bbd2ce200571493da" + }, + "index": 5, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-30T10:32:56.256Z" + }, + "updated_at": { + "$date": "2025-05-22T09:14:23.444Z" + }, + "__v": 0, + "image": "food_1741615422472.png" +}, +{ + "_id": { + "$oid": "679b62fbbd2ce2005714963d" + }, + "price": 3230000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ مرغ و زیتون", + "description": "مرغ، زیتون، روکولا، ریحان ایتالیایی", + "short_description": "", + "category": { + "$oid": "6795eb06a4463c0057e68d76" + }, + "index": 4, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-01-30T11:31:07.410Z" + }, + "updated_at": { + "$date": "2025-12-23T14:19:05.743Z" + }, + "__v": 0, + "image": "food_1741615365988.png" +}, +{ + "_id": { + "$oid": "679b82afbd2ce20057149981" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو", + "description": "۷۰/۳۰", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-01-30T13:46:23.154Z" + }, + "updated_at": { + "$date": "2025-09-06T22:48:40.767Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679dfca6bd2ce2005714eb43" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاناکوتا انجیر", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 2, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-02-01T10:51:18.542Z" + }, + "updated_at": { + "$date": "2025-12-23T13:58:01.547Z" + }, + "__v": 0, + "image": "food_1741608384524.png" +}, +{ + "_id": { + "$oid": "679f689cbd2ce20057150871" + }, + "price": 3850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زینگر new", + "description": "نان برگر ،2عدد فیله سوخاری ،سس مخصوص،کاهو لوتوس،گوجه فرنگی،رلیش خیار، ساید سالاد و سیب زمینی(سرو سالن)", + "short_description": "", + "category": { + "$oid": "6207a2681ee4b0270db4c429" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2025-02-02T12:44:12.708Z" + }, + "updated_at": { + "$date": "2025-12-25T12:38:59.352Z" + }, + "__v": 0, + "image": "food_1739469537281.png" +}, +{ + "_id": { + "$oid": "679fed0ebd2ce20057151eaa" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "معجون نوتلا", + "description": "بستنی معجون ، موز ، گردو ، پسته ، فندوق ، بادام هندی ، پودر نارگیل و پسته ، نوتلا (از هر مغز ۳ تا ۴ عدد)", + "short_description": "", + "category": { + "$oid": "673064fdc3c0100063e6bf7f" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "image": "food_1738534156977.png", + "created_at": { + "$date": "2025-02-02T22:09:18.699Z" + }, + "updated_at": { + "$date": "2025-02-02T22:09:18.699Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679fee92bd2ce20057151f1f" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسنک ژامبون مرغ", + "description": "یک جفت، ژامبون مرغ 90 درصد، فلفل دلمه ای، قارچ، پنیر پیتزا (مخلوط کاله و مطهر)، سس و ادویه مخصوص، همراه با سالاد کاهو", + "short_description": "", + "category": { + "$oid": "673db4bac3c0100063e83ef2" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "image": "food_1738534544438.png", + "created_at": { + "$date": "2025-02-02T22:15:46.405Z" + }, + "updated_at": { + "$date": "2025-11-24T18:17:14.195Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679fef4fbd2ce20057151f43" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسنک پپرونی", + "description": "‎یک جفت، کالباس پپیرونی ، فلفل دلمه ای، قارچ، پنیر پیتزا (مخلوط کاله و مطهر)، سس و ادویه مخصوص، همراه با سالاد کاهو", + "short_description": "", + "category": { + "$oid": "673db4bac3c0100063e83ef2" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "image": "food_1738534733565.png", + "created_at": { + "$date": "2025-02-02T22:18:55.487Z" + }, + "updated_at": { + "$date": "2025-11-24T18:16:46.502Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "679fef98bd2ce20057151f56" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسنک ژامبون گوشت ", + "description": "‎یک جفت، ژامبون گوشت ۹۰ درصد ، فلفل دلمه ای، قارچ، پنیر پیتزا (مخلوط کاله و مطهر)، سس و ادویه مخصوص، همراه با سالاد کاهو", + "short_description": "", + "category": { + "$oid": "673db4bac3c0100063e83ef2" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "image": "food_1738534806343.png", + "created_at": { + "$date": "2025-02-02T22:20:08.295Z" + }, + "updated_at": { + "$date": "2025-11-24T18:16:23.064Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a0a839bd2ce200571529de" + }, + "price": 1120000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی شکلات پرتقال", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 10, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-02-03T11:27:53.079Z" + }, + "updated_at": { + "$date": "2025-12-23T13:53:42.578Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a0a872bd2ce200571529f2" + }, + "price": 1120000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی چاکلت چیپسی", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 12, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-02-03T11:28:50.849Z" + }, + "updated_at": { + "$date": "2025-12-23T13:53:16.210Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5b7a1bd2ce20057159458" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو", + "description": "آب + اسپرسو", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 2, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:34:57.656Z" + }, + "updated_at": { + "$date": "2025-04-13T18:24:42.582Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5b7ecbd2ce20057159462" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کورتادو", + "description": "نسبت مساوی شیر و قهوه", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 3, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:36:12.267Z" + }, + "updated_at": { + "$date": "2025-04-13T18:24:56.696Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5b85abd2ce20057159482" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "قهوه و شیر", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 4, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:38:02.158Z" + }, + "updated_at": { + "$date": "2025-04-13T18:24:13.432Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5b8c7bd2ce20057159492" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیسکولاته", + "description": "کرم لوتوس شیر و اسپرسو", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 5, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:39:51.561Z" + }, + "updated_at": { + "$date": "2025-04-13T18:23:20.185Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5b992bd2ce200571594a8" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "شکلات اسپرسو شیر", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 6, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:43:14.849Z" + }, + "updated_at": { + "$date": "2025-04-13T18:25:15.225Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5b9edbd2ce200571594b5" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو", + "description": "سیروپ کارامل شیر اسپرسو ", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 7, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:44:45.409Z" + }, + "updated_at": { + "$date": "2025-05-27T08:14:34.977Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5bb0cbd2ce20057159509" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نسکافه", + "description": "پودر نسکافه شیر", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 8, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:49:32.053Z" + }, + "updated_at": { + "$date": "2025-04-13T18:26:05.901Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5bb51bd2ce20057159513" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "شیر اسپرسو", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 9, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:50:41.085Z" + }, + "updated_at": { + "$date": "2025-04-13T18:26:19.854Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5bc21bd2ce2005715957f" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کن هیلو ", + "description": "اسپرسو یخ", + "short_description": "", + "category": { + "$oid": "67a5bba6bd2ce20057159539" + }, + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:54:09.801Z" + }, + "updated_at": { + "$date": "2025-04-13T18:35:17.474Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5bc68bd2ce2005715958f" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5bba6bd2ce20057159539" + }, + "index": 2, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:55:20.452Z" + }, + "updated_at": { + "$date": "2025-04-13T18:26:56.188Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5bcaebd2ce200571595a2" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس موکا", + "description": "شکلات اسپرسو شیر یخ", + "short_description": "", + "category": { + "$oid": "67a5bba6bd2ce20057159539" + }, + "index": 3, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:56:30.075Z" + }, + "updated_at": { + "$date": "2025-04-13T18:27:27.894Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5bcf7bd2ce200571595ae" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس لاته", + "description": "شیر اسپرسو یخ", + "short_description": "", + "category": { + "$oid": "67a5bba6bd2ce20057159539" + }, + "index": 4, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T07:57:43.249Z" + }, + "updated_at": { + "$date": "2025-04-13T18:22:38.294Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5bd86bd2ce200571595c5" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کارامل ماکیاتو", + "description": "سیروپ کارامل اسپرسو شیر یخ", + "short_description": "", + "category": { + "$oid": "67a5bba6bd2ce20057159539" + }, + "index": 5, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:00:06.715Z" + }, + "updated_at": { + "$date": "2025-05-26T15:46:39.769Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5bdf2bd2ce200571595e7" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آفوگاتو", + "description": "بستنی وانیل اسپرسو", + "short_description": "", + "category": { + "$oid": "67a5bba6bd2ce20057159539" + }, + "index": 6, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:01:54.935Z" + }, + "updated_at": { + "$date": "2025-08-12T14:02:15.963Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5be54bd2ce2005715960b" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس کوکولاته", + "description": "سیروپ نارگیل اسپرسو شیر یخ", + "short_description": "", + "category": { + "$oid": "67a5bba6bd2ce20057159539" + }, + "index": 7, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:03:32.146Z" + }, + "updated_at": { + "$date": "2025-05-27T08:13:47.755Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5bec0bd2ce20057159627" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس لاته فندوق", + "description": "سیروپ فندوق اسپرسو شیر یخ", + "short_description": "", + "category": { + "$oid": "67a5bba6bd2ce20057159539" + }, + "index": 8, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:05:20.099Z" + }, + "updated_at": { + "$date": "2025-05-27T08:13:31.502Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5c34dbd2ce2005715969c" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نیمرو", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5c045bd2ce20057159653" + }, + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:24:45.810Z" + }, + "updated_at": { + "$date": "2025-08-12T14:12:19.087Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5c38dbd2ce200571596a6" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "املت", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5c045bd2ce20057159653" + }, + "index": 2, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:25:49.111Z" + }, + "updated_at": { + "$date": "2025-09-06T22:47:16.384Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5c3edbd2ce200571596b0" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوسیس تخم مرغ مخصوص", + "description": "سوسیس، تخم مرغ، رب، ادویه مخصوص", + "short_description": "", + "category": { + "$oid": "67a5c045bd2ce20057159653" + }, + "index": 3, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:27:25.890Z" + }, + "updated_at": { + "$date": "2025-09-06T22:46:46.542Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5c4d9bd2ce200571596d0" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "املت ژامبون ", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5c045bd2ce20057159653" + }, + "index": 5, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:31:21.727Z" + }, + "updated_at": { + "$date": "2025-08-12T14:14:59.404Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5c518bd2ce200571596da" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "املت با قارچ و پنیر", + "description": "قارچ و پنیر رب و تخم مرغ", + "short_description": "", + "category": { + "$oid": "67a5c045bd2ce20057159653" + }, + "index": 6, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:32:24.571Z" + }, + "updated_at": { + "$date": "2025-09-06T22:45:17.155Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5c70abd2ce2005715972a" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلاسیک فرایز", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5c6b9bd2ce2005715971a" + }, + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:40:42.316Z" + }, + "updated_at": { + "$date": "2025-02-07T08:40:42.316Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5c755bd2ce20057159740" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت فرایز", + "description": "سیب زمینی سس قارچ", + "short_description": "", + "category": { + "$oid": "67a5c6b9bd2ce2005715971a" + }, + "index": 2, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T08:41:57.289Z" + }, + "updated_at": { + "$date": "2025-09-06T22:45:56.527Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5cc66bd2ce20057159820" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه ساده", + "description": "فرنچ چای نبات ", + "short_description": "", + "category": { + "$oid": "67a5cbf3bd2ce20057159807" + }, + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T09:03:34.464Z" + }, + "updated_at": { + "$date": "2025-09-06T22:44:45.294Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5ccc2bd2ce20057159839" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای ویژه", + "description": "هل دارچین نبات ", + "short_description": "", + "category": { + "$oid": "67a5cbf3bd2ce20057159807" + }, + "index": 2, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T09:05:06.699Z" + }, + "updated_at": { + "$date": "2025-09-06T22:44:01.614Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5cdcebd2ce2005715986c" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای نعنا", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5cbf3bd2ce20057159807" + }, + "index": 3, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T09:09:34.451Z" + }, + "updated_at": { + "$date": "2025-09-06T22:43:33.749Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5cdfcbd2ce20057159876" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گل گاو زبان", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5cbf3bd2ce20057159807" + }, + "index": 4, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T09:10:20.365Z" + }, + "updated_at": { + "$date": "2025-09-06T22:42:26.468Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5ce7ebd2ce200571598a7" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش آرامش", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5cbf3bd2ce20057159807" + }, + "index": 6, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T09:12:30.386Z" + }, + "updated_at": { + "$date": "2025-08-12T14:06:00.447Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5ced4bd2ce200571598bb" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5cbf3bd2ce20057159807" + }, + "index": 8, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T09:13:56.011Z" + }, + "updated_at": { + "$date": "2025-08-12T14:08:07.882Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5ff58bd2ce2005715a00b" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیموناد", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5fee4bd2ce20057159ffe" + }, + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T12:40:56.963Z" + }, + "updated_at": { + "$date": "2025-05-24T13:24:48.746Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a5ffcfbd2ce2005715a022" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5fee4bd2ce20057159ffe" + }, + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T12:42:55.664Z" + }, + "updated_at": { + "$date": "2025-05-24T13:24:19.337Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a6035bbd2ce2005715a064" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلو لایم", + "description": "آب اناناس سیب سبز پرتقال سیروپ بلو کاراسائو", + "short_description": "", + "category": { + "$oid": "67a5fee4bd2ce20057159ffe" + }, + "index": 5, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T12:58:03.290Z" + }, + "updated_at": { + "$date": "2025-09-06T19:18:30.461Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a603d9bd2ce2005715a06e" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رد پلام ", + "description": "اب الو قرمز ابلیمو جز هندی سیروپ کرن بری", + "short_description": "", + "category": { + "$oid": "67a5fee4bd2ce20057159ffe" + }, + "index": 6, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T13:00:09.191Z" + }, + "updated_at": { + "$date": "2025-09-06T19:17:36.058Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a60b6fbd2ce2005715a0fb" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک وانیل ", + "description": "", + "short_description": "", + "category": { + "$oid": "67a60565bd2ce2005715a0b6" + }, + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T13:32:31.590Z" + }, + "updated_at": { + "$date": "2025-09-06T19:16:24.745Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a60baabd2ce2005715a105" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک شکلات ", + "description": "", + "short_description": "", + "category": { + "$oid": "67a60565bd2ce2005715a0b6" + }, + "index": 2, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T13:33:30.504Z" + }, + "updated_at": { + "$date": "2025-09-06T19:15:37.408Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a60c11bd2ce2005715a115" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک لوتوس ", + "description": " بستنی وانیل کرم لوتوس ", + "short_description": "", + "category": { + "$oid": "67a60565bd2ce2005715a0b6" + }, + "index": 3, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T13:35:13.917Z" + }, + "updated_at": { + "$date": "2025-09-06T19:14:05.890Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a60ccabd2ce2005715a12b" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک بادام زمینی ", + "description": "بستنی کره بادام زمینی ", + "short_description": "", + "category": { + "$oid": "67a60565bd2ce2005715a0b6" + }, + "index": 4, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T13:38:18.908Z" + }, + "updated_at": { + "$date": "2025-09-06T19:13:17.524Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a60d65bd2ce2005715a164" + }, + "price": 1870000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک استرانوتلا", + "description": "بستنی توت فرنگی نوتلا ", + "short_description": "", + "category": { + "$oid": "67a60565bd2ce2005715a0b6" + }, + "index": 5, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T13:40:53.349Z" + }, + "updated_at": { + "$date": "2025-09-06T19:11:43.191Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a60e32bd2ce2005715a1b7" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک کوکو بنانا", + "description": "بستنی وانیل و شکلات نوتلا موز نارگیل ", + "short_description": "", + "category": { + "$oid": "67a60565bd2ce2005715a0b6" + }, + "index": 6, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T13:44:18.726Z" + }, + "updated_at": { + "$date": "2025-09-06T19:10:40.783Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a619f5bd2ce2005715a3f8" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا چیکن آلفردو", + "description": "قارچ خامه پنه 150گرم فیله مرغ", + "short_description": "", + "category": { + "$oid": "67a61944bd2ce2005715a3c7" + }, + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T14:34:29.062Z" + }, + "updated_at": { + "$date": "2025-09-06T19:09:03.537Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a61a68bd2ce2005715a408" + }, + "price": 3100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا بیف آلفردو ", + "description": "قارچ خامه پنه 150گرم گوشت قرمز ", + "short_description": "", + "category": { + "$oid": "67a61944bd2ce2005715a3c7" + }, + "index": 2, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T14:36:24.206Z" + }, + "updated_at": { + "$date": "2025-09-06T19:08:21.174Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a61af8bd2ce2005715a451" + }, + "price": 2400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن استراگانوف", + "description": "قارچ خامه خلال سیب زمینی 150 گرم فیله مرغ", + "short_description": "", + "category": { + "$oid": "67a61944bd2ce2005715a3c7" + }, + "index": 3, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T14:38:48.056Z" + }, + "updated_at": { + "$date": "2025-09-06T19:07:34.558Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a61c83bd2ce2005715a581" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیف استراگانوف ", + "description": "قارچ خامه خلال سیب زمینی 150 گرم گوشت قرمز ", + "short_description": "", + "category": { + "$oid": "67a61944bd2ce2005715a3c7" + }, + "index": 4, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T14:45:23.772Z" + }, + "updated_at": { + "$date": "2025-09-06T19:02:38.522Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a61de4bd2ce2005715a5c8" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "کلاسیک برگر ", + "description": "نان برگر مخصوص 150گرم برگر 90 درصد ", + "short_description": "", + "category": { + "$oid": "67a61944bd2ce2005715a3c7" + }, + "index": 5, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T14:51:16.650Z" + }, + "updated_at": { + "$date": "2025-09-06T22:41:26.150Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a61e73bd2ce2005715a5ed" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "ماشروم برگر ", + "description": "سس قارچ نان مخصوص 150 گرم برگر 90 درصد گوشت ", + "short_description": "", + "category": { + "$oid": "67a61944bd2ce2005715a3c7" + }, + "index": 6, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T14:53:39.861Z" + }, + "updated_at": { + "$date": "2025-09-06T22:41:08.036Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67a61fa2bd2ce2005715a63c" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "چیز برگر ", + "description": "نان مخصوص پنیر گودا پنیر کاراملی 150 گرم برگر 90 درصد گوشت ", + "short_description": "", + "category": { + "$oid": "67a61944bd2ce2005715a3c7" + }, + "index": 7, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-07T14:58:42.326Z" + }, + "updated_at": { + "$date": "2025-09-06T22:40:38.572Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b2538853628200621fd90e" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "هات چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "67b2531153628200621fd8f7" + }, + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:07:20.442Z" + }, + "updated_at": { + "$date": "2025-08-12T14:20:27.549Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b253c453628200621fd924" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "هات کوکونات", + "description": "", + "short_description": "", + "category": { + "$oid": "67b2531153628200621fd8f7" + }, + "index": 2, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:08:20.166Z" + }, + "updated_at": { + "$date": "2025-08-12T14:19:51.256Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b253f853628200621fd92e" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "هات فندق", + "description": "", + "short_description": "", + "category": { + "$oid": "67b2531153628200621fd8f7" + }, + "index": 3, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:09:12.488Z" + }, + "updated_at": { + "$date": "2025-08-12T14:19:27.565Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b2542653628200621fd938" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "دارک چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "67b2531153628200621fd8f7" + }, + "index": 4, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:09:58.238Z" + }, + "updated_at": { + "$date": "2025-08-12T14:20:57.422Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b2549c53628200621fd942" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پینک چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "67b2531153628200621fd8f7" + }, + "index": 5, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:11:56.703Z" + }, + "updated_at": { + "$date": "2025-08-12T14:21:25.251Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b254c953628200621fd94c" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "67b2531153628200621fd8f7" + }, + "index": 6, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:12:41.584Z" + }, + "updated_at": { + "$date": "2025-08-12T14:22:49.306Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b254f453628200621fd95f" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیسکو ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "67b2531153628200621fd8f7" + }, + "index": 7, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:13:24.702Z" + }, + "updated_at": { + "$date": "2025-08-12T14:22:24.796Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b2558053628200621fd984" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ناتی ماسالا", + "description": "کره بادام زمینی ماسالا", + "short_description": "", + "category": { + "$oid": "67b2531153628200621fd8f7" + }, + "index": 8, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:15:44.290Z" + }, + "updated_at": { + "$date": "2025-08-12T14:22:00.253Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b255b553628200621fd99a" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "67b2531153628200621fd8f7" + }, + "index": 9, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:16:37.410Z" + }, + "updated_at": { + "$date": "2025-09-06T22:24:02.214Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b25b8b53628200621fda08" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ ", + "description": "", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 11, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:41:31.242Z" + }, + "updated_at": { + "$date": "2025-05-24T13:27:05.662Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b25be753628200621fda12" + }, + "price": 100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نبات اضافه", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5cbf3bd2ce20057159807" + }, + "index": 11, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-16T21:43:03.598Z" + }, + "updated_at": { + "$date": "2025-09-06T19:00:58.872Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67b36e9753628200621fed63" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "ساندویچ ویژه", + "description": "هات‌داگ مجاری، سس قارچ، ژامبون تنوری، نان چارکی", + "short_description": "", + "category": { + "$oid": "67a61944bd2ce2005715a3c7" + }, + "index": 9, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-02-17T17:15:03.915Z" + }, + "updated_at": { + "$date": "2025-09-06T22:22:40.678Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67bdaf85536282006220e4ba" + }, + "price": 1690000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت لاگون", + "description": "آرمای دارچین در کنار طراوت میوه های استوایی", + "short_description": "", + "category": { + "$oid": "6208a9671ee4b0270db4c72b" + }, + "index": 1, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2025-02-25T11:54:45.869Z" + }, + "updated_at": { + "$date": "2025-09-27T11:18:34.259Z" + }, + "__v": 0, + "image": "food_1740650953725.png" +}, +{ + "_id": { + "$oid": "67d31649536282006222b2b0" + }, + "price": 1580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی رژیمی آجیلی", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 11, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-03-13T17:30:49.869Z" + }, + "updated_at": { + "$date": "2025-12-23T13:54:31.834Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67d83ce353628200622319f2" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماءالشعیرمخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "61ac60cdabb1b20239abe5bd" + }, + "index": 1, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "image": "food_1742224608597.png", + "created_at": { + "$date": "2025-03-17T15:16:51.311Z" + }, + "updated_at": { + "$date": "2025-10-02T16:35:07.528Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e97fc9536282006224d17e" + }, + "price": 2550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بشقاب وافل بستنی", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1e0fc1eece3d762639b" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "image": "food_1743355847058.png", + "created_at": { + "$date": "2025-03-30T17:30:49.162Z" + }, + "updated_at": { + "$date": "2025-03-30T17:30:49.162Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a0c6536282006224de64" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو70/30عربیکا", + "description": "", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743364293564.png", + "created_at": { + "$date": "2025-03-30T19:51:34.565Z" + }, + "updated_at": { + "$date": "2025-12-02T14:26:54.445Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a0f9536282006224de79" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 11, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743364344906.png", + "created_at": { + "$date": "2025-03-30T19:52:25.877Z" + }, + "updated_at": { + "$date": "2025-12-07T10:03:35.884Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a134536282006224de88" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 3, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743364403723.png", + "created_at": { + "$date": "2025-03-30T19:53:24.969Z" + }, + "updated_at": { + "$date": "2025-12-02T14:27:27.193Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a172536282006224de92" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کورتادو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 10, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743364465048.png", + "created_at": { + "$date": "2025-03-30T19:54:26.095Z" + }, + "updated_at": { + "$date": "2025-12-07T09:37:24.554Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a199536282006224de9c" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 5, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743364504072.png", + "created_at": { + "$date": "2025-03-30T19:55:05.376Z" + }, + "updated_at": { + "$date": "2025-12-07T09:36:30.893Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a1b8536282006224dea9" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 6, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743364535455.png", + "created_at": { + "$date": "2025-03-30T19:55:36.681Z" + }, + "updated_at": { + "$date": "2025-12-02T14:28:22.325Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a1ea536282006224deb3" + }, + "price": 1360000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاپوچینو", + "description": "شیر . قهوه 50/50", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 7, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743364584676.png", + "created_at": { + "$date": "2025-03-30T19:56:26.012Z" + }, + "updated_at": { + "$date": "2025-12-02T14:29:33.142Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a241536282006224debd" + }, + "price": 1580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تیرامیسو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743364671908.png", + "created_at": { + "$date": "2025-03-30T19:57:53.069Z" + }, + "updated_at": { + "$date": "2025-12-22T14:43:28.347Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a26f536282006224deca" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سه شیر شکلاتی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743364718345.png", + "created_at": { + "$date": "2025-03-30T19:58:39.411Z" + }, + "updated_at": { + "$date": "2025-12-22T14:40:18.531Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a2f3536282006224deda" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تارت وانیل توت فرنگی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 3, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1745075465530.png", + "created_at": { + "$date": "2025-03-30T20:00:51.274Z" + }, + "updated_at": { + "$date": "2025-09-30T11:34:36.734Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a312536282006224deea" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تارت شکلات توت فرنگی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 4, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T20:01:22.980Z" + }, + "updated_at": { + "$date": "2025-11-03T10:09:49.039Z" + }, + "__v": 0, + "image": "food_1745075559489.png" +}, +{ + "_id": { + "$oid": "67e9a336536282006224def4" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تارت شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 5, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T20:01:58.568Z" + }, + "updated_at": { + "$date": "2025-10-04T14:23:31.114Z" + }, + "__v": 0, + "image": "food_1745075535367.png" +}, +{ + "_id": { + "$oid": "67e9a367536282006224df01" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسنیکرز", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 6, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1745075435287.png", + "created_at": { + "$date": "2025-03-30T20:02:47.544Z" + }, + "updated_at": { + "$date": "2025-12-22T14:42:35.279Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a39e536282006224df0b" + }, + "price": 1070000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیزکیک نیویورکی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 7, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1745075502061.png", + "created_at": { + "$date": "2025-03-30T20:03:42.314Z" + }, + "updated_at": { + "$date": "2025-06-05T12:41:46.516Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a3d2536282006224df15" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیزکیک لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 8, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743365073647.png", + "created_at": { + "$date": "2025-03-30T20:04:34.961Z" + }, + "updated_at": { + "$date": "2025-09-24T14:11:54.536Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a3fe536282006224df25" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیزکیک سن سباستین", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 9, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T20:05:18.137Z" + }, + "updated_at": { + "$date": "2025-12-22T14:37:30.486Z" + }, + "__v": 0, + "image": "food_1745075798711.png" +}, +{ + "_id": { + "$oid": "67e9a43c536282006224df3d" + }, + "price": 1030000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک شکلاتی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 11, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T20:06:20.492Z" + }, + "updated_at": { + "$date": "2025-06-05T12:40:26.873Z" + }, + "__v": 0, + "image": "food_1745075898953.png" +}, +{ + "_id": { + "$oid": "67e9a466536282006224df4a" + }, + "price": 630000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی شکلاتی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 12, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T20:07:02.071Z" + }, + "updated_at": { + "$date": "2025-12-22T14:53:10.873Z" + }, + "__v": 0, + "image": "food_1766415189898.png" +}, +{ + "_id": { + "$oid": "67e9a48f536282006224df54" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رول دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99de8536282006224dc82" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T20:07:43.382Z" + }, + "updated_at": { + "$date": "2025-03-30T20:07:43.382Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a4b5536282006224df5e" + }, + "price": 790000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فلت کروسان", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99de8536282006224dc82" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T20:08:21.366Z" + }, + "updated_at": { + "$date": "2025-03-30T20:08:21.366Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a4e6536282006224df6b" + }, + "price": 420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوییس برد", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99de8536282006224dc82" + }, + "index": 3, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T20:09:10.593Z" + }, + "updated_at": { + "$date": "2025-03-30T20:09:10.593Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67e9a51b536282006224df78" + }, + "price": 890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نیویورک رول", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99de8536282006224dc82" + }, + "index": 4, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-30T20:10:03.511Z" + }, + "updated_at": { + "$date": "2025-03-30T20:10:03.511Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8b18536282006224ee4c" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه لاهیجان", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424279408.png", + "created_at": { + "$date": "2025-03-31T12:31:20.412Z" + }, + "updated_at": { + "$date": "2025-12-02T14:31:08.201Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8b3b536282006224ee65" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیرچای", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424314094.png", + "created_at": { + "$date": "2025-03-31T12:31:55.262Z" + }, + "updated_at": { + "$date": "2025-12-02T14:32:38.666Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8b5f536282006224ee6f" + }, + "price": 1020000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش کاسکارا", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 3, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424350103.png", + "created_at": { + "$date": "2025-03-31T12:32:31.122Z" + }, + "updated_at": { + "$date": "2025-03-31T12:32:31.122Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8b81536282006224ee7c" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش نعنای مراکشی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 4, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424384817.png", + "created_at": { + "$date": "2025-03-31T12:33:05.935Z" + }, + "updated_at": { + "$date": "2025-12-02T14:33:08.116Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8ba0536282006224ee89" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش جزمین ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 5, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424415786.png", + "created_at": { + "$date": "2025-03-31T12:33:36.890Z" + }, + "updated_at": { + "$date": "2025-12-02T14:33:48.123Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8bc0536282006224ee93" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوش لمون گرس", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 6, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424447389.png", + "created_at": { + "$date": "2025-03-31T12:34:08.454Z" + }, + "updated_at": { + "$date": "2025-12-02T14:34:49.966Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8bdc536282006224eeaf" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش گل گاوزبان", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 7, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424474750.png", + "created_at": { + "$date": "2025-03-31T12:34:36.046Z" + }, + "updated_at": { + "$date": "2025-12-02T14:34:21.359Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8c03536282006224eece" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش سیب دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 8, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424513858.png", + "created_at": { + "$date": "2025-03-31T12:35:15.189Z" + }, + "updated_at": { + "$date": "2025-12-02T14:35:24.052Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8c20536282006224eed8" + }, + "price": 830000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش اویشن عسل ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 9, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424543729.png", + "created_at": { + "$date": "2025-03-31T12:35:44.936Z" + }, + "updated_at": { + "$date": "2025-12-02T14:37:01.970Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8c59536282006224eee8" + }, + "price": 760000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش میکس", + "description": "گل گاو زبان رز چینی اویشن چای سبز عسل", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 10, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424600044.png", + "created_at": { + "$date": "2025-03-31T12:36:41.203Z" + }, + "updated_at": { + "$date": "2025-12-02T14:36:34.456Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8c70536282006224eef2" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای زعفران ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 11, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424623958.png", + "created_at": { + "$date": "2025-03-31T12:37:04.977Z" + }, + "updated_at": { + "$date": "2025-12-02T14:36:09.025Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8c8e536282006224eefc" + }, + "price": 740000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 12, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424653130.png", + "created_at": { + "$date": "2025-03-31T12:37:34.283Z" + }, + "updated_at": { + "$date": "2025-03-31T12:37:34.283Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8ca8536282006224ef06" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 13, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424679613.png", + "created_at": { + "$date": "2025-03-31T12:38:00.909Z" + }, + "updated_at": { + "$date": "2025-12-02T14:39:01.532Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8cd3536282006224ef10" + }, + "price": 1340000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس امریکانو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424722177.png", + "created_at": { + "$date": "2025-03-31T12:38:43.275Z" + }, + "updated_at": { + "$date": "2025-10-04T13:32:47.977Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8cf7536282006224ef1d" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424758258.png", + "created_at": { + "$date": "2025-03-31T12:39:19.551Z" + }, + "updated_at": { + "$date": "2025-10-04T13:33:29.292Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8d16536282006224ef27" + }, + "price": 1770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 3, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424789295.png", + "created_at": { + "$date": "2025-03-31T12:39:50.782Z" + }, + "updated_at": { + "$date": "2025-10-04T13:33:59.923Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8d32536282006224ef31" + }, + "price": 1770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس کارامل ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 4, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424816575.png", + "created_at": { + "$date": "2025-03-31T12:40:18.008Z" + }, + "updated_at": { + "$date": "2025-10-04T13:34:33.811Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8d4f536282006224ef3b" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس پشن اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 5, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424845982.png", + "created_at": { + "$date": "2025-03-31T12:40:47.426Z" + }, + "updated_at": { + "$date": "2025-10-04T13:35:24.252Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8d74536282006224ef45" + }, + "price": 1160000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 6, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424882858.png", + "created_at": { + "$date": "2025-03-31T12:41:24.013Z" + }, + "updated_at": { + "$date": "2025-09-06T14:52:33.152Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8dbd536282006224ef52" + }, + "price": 1770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 7, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743424956422.png", + "created_at": { + "$date": "2025-03-31T12:42:37.712Z" + }, + "updated_at": { + "$date": "2025-10-04T13:35:50.858Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8e03536282006224ef62" + }, + "price": 2030000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو بیسکوییت ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 8, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425026117.png", + "created_at": { + "$date": "2025-03-31T12:43:47.371Z" + }, + "updated_at": { + "$date": "2025-10-04T13:36:25.324Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8e2b536282006224ef6c" + }, + "price": 1880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو فندق", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 9, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425066064.png", + "created_at": { + "$date": "2025-03-31T12:44:27.366Z" + }, + "updated_at": { + "$date": "2025-10-04T13:36:49.502Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8e52536282006224ef79" + }, + "price": 1860000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فراپاچینو بادام زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 10, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425105083.png", + "created_at": { + "$date": "2025-03-31T12:45:06.331Z" + }, + "updated_at": { + "$date": "2025-09-06T14:48:58.999Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8e79536282006224ef98" + }, + "price": 1680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وان پیس ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d66536282006224dc1f" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425142826.png", + "created_at": { + "$date": "2025-03-31T12:45:45.221Z" + }, + "updated_at": { + "$date": "2025-07-27T10:21:04.406Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8ea1536282006224efa8" + }, + "price": 1060000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "منگوپل", + "description": "اناناس انبه سودا", + "short_description": "", + "category": { + "$oid": "67e99d66536282006224dc1f" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425184464.png", + "created_at": { + "$date": "2025-03-31T12:46:25.682Z" + }, + "updated_at": { + "$date": "2025-07-27T10:21:24.287Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8ed2536282006224efc4" + }, + "price": 710000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مانتیی", + "description": "کرن بری لیمو تریپل سک سودا", + "short_description": "", + "category": { + "$oid": "67e99d66536282006224dc1f" + }, + "index": 3, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425233026.png", + "created_at": { + "$date": "2025-03-31T12:47:14.438Z" + }, + "updated_at": { + "$date": "2025-07-27T10:21:59.545Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8eff536282006224efe3" + }, + "price": 1090000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مجیک مومنت", + "description": "پرتقال قرمز لیمو کرن بری تریپل سک سودا", + "short_description": "", + "category": { + "$oid": "67e99d66536282006224dc1f" + }, + "index": 4, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425278366.png", + "created_at": { + "$date": "2025-03-31T12:47:59.923Z" + }, + "updated_at": { + "$date": "2025-07-27T10:22:36.437Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8f19536282006224eff6" + }, + "price": 840000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیمو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d66536282006224dc1f" + }, + "index": 5, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425304489.png", + "created_at": { + "$date": "2025-03-31T12:48:25.783Z" + }, + "updated_at": { + "$date": "2025-07-27T10:22:59.305Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8f3c536282006224f018" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "افوگاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d78536282006224dc28" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425339605.png", + "created_at": { + "$date": "2025-03-31T12:49:00.806Z" + }, + "updated_at": { + "$date": "2025-12-02T14:50:55.525Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8f5c536282006224f02e" + }, + "price": 1660000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d78536282006224dc28" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425371152.png", + "created_at": { + "$date": "2025-03-31T12:49:32.177Z" + }, + "updated_at": { + "$date": "2025-12-02T14:53:00.355Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8f73536282006224f038" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک وانیل ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d78536282006224dc28" + }, + "index": 3, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425394027.png", + "created_at": { + "$date": "2025-03-31T12:49:55.447Z" + }, + "updated_at": { + "$date": "2025-12-02T14:52:23.078Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8f8f536282006224f04e" + }, + "price": 1820000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک بادام زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d78536282006224dc28" + }, + "index": 4, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425422246.png", + "created_at": { + "$date": "2025-03-31T12:50:23.928Z" + }, + "updated_at": { + "$date": "2025-12-02T14:51:48.677Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8fb6536282006224f058" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت کوچک", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d92536282006224dc4c" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425461105.png", + "created_at": { + "$date": "2025-03-31T12:51:02.180Z" + }, + "updated_at": { + "$date": "2025-12-02T14:37:49.363Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8fce536282006224f065" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات چاکلت بزرگ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d92536282006224dc4c" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425485315.png", + "created_at": { + "$date": "2025-03-31T12:51:26.364Z" + }, + "updated_at": { + "$date": "2025-12-02T13:45:00.525Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea8fed536282006224f06f" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99dbf536282006224dc58" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425516799.png", + "created_at": { + "$date": "2025-03-31T12:51:57.812Z" + }, + "updated_at": { + "$date": "2025-12-02T14:42:39.971Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea900f536282006224f085" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیرعسل", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99dbf536282006224dc58" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425550396.png", + "created_at": { + "$date": "2025-03-31T12:52:31.468Z" + }, + "updated_at": { + "$date": "2025-12-02T14:44:50.192Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea9048536282006224f08f" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر عسل دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99dbf536282006224dc58" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425607248.png", + "created_at": { + "$date": "2025-03-31T12:53:28.507Z" + }, + "updated_at": { + "$date": "2025-12-02T14:46:45.849Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea90e9536282006224f0c6" + }, + "price": 1210000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلاب گوشت", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99e00536282006224dc91" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425767434.png", + "created_at": { + "$date": "2025-03-31T12:56:09.187Z" + }, + "updated_at": { + "$date": "2025-06-13T15:41:43.118Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea9103536282006224f0d1" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلاب مرغ ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99e00536282006224dc91" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425794235.png", + "created_at": { + "$date": "2025-03-31T12:56:35.782Z" + }, + "updated_at": { + "$date": "2025-06-13T15:41:24.517Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea912b536282006224f0e9" + }, + "price": 1430000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلاب بوقلمون", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99e00536282006224dc91" + }, + "index": 3, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1743425833967.png", + "created_at": { + "$date": "2025-03-31T12:57:15.540Z" + }, + "updated_at": { + "$date": "2025-06-13T15:41:07.994Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea914c536282006224f0fc" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99e11536282006224dc9a" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-31T12:57:48.647Z" + }, + "updated_at": { + "$date": "2025-03-31T12:57:48.647Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea9162536282006224f112" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد ماکارانی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99e11536282006224dc9a" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-31T12:58:10.061Z" + }, + "updated_at": { + "$date": "2025-03-31T12:58:10.061Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ea9e19536282006224f5a1" + }, + "price": 980000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک هویج گردو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 13, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-31T13:52:25.374Z" + }, + "updated_at": { + "$date": "2025-12-22T14:47:47.034Z" + }, + "__v": 0, + "image": "food_1745075310765.png" +}, +{ + "_id": { + "$oid": "67ea9e33536282006224f5ab" + }, + "price": 790000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک سیب دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 14, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-03-31T13:52:51.496Z" + }, + "updated_at": { + "$date": "2025-06-05T12:37:54.119Z" + }, + "__v": 0, + "image": "food_1745075289490.png" +}, +{ + "_id": { + "$oid": "67f517f7f43a0a007b471920" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "آویشن عسل", + "description": "", + "short_description": "", + "category": { + "$oid": "67a5cbf3bd2ce20057159807" + }, + "index": 12, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-04-08T12:35:03.149Z" + }, + "updated_at": { + "$date": "2025-09-06T22:20:33.842Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faa078f43a0a007b479979" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسنک مخصوص", + "description": "یک جفت، ترکیب ژامبون مرغ و گوشت ۹۰%، پنیر پیتزا ترکیبی (مخلوط کاله و مطهر) قارچ، فلفل دلمه ای، سس مخصوص، ادویه اویشن فلفل، پنیر گودا، چیپس خلال، سالاد کاهو", + "short_description": "", + "category": { + "$oid": "673db4bac3c0100063e83ef2" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-04-12T17:18:48.396Z" + }, + "updated_at": { + "$date": "2025-11-24T18:17:48.989Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faa768f43a0a007b479b7e" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "یونانی", + "description": "", + "short_description": "", + "category": { + "$oid": "6522a77659383e8d75527f18" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1744480103541.png", + "created_at": { + "$date": "2025-04-12T17:48:24.897Z" + }, + "updated_at": { + "$date": "2025-04-12T18:15:44.550Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faa79df43a0a007b479ba5" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا شنی", + "description": "", + "short_description": "", + "category": { + "$oid": "6522a77659383e8d75527f18" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-04-12T17:49:17.977Z" + }, + "updated_at": { + "$date": "2025-04-12T18:14:48.623Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faa837f43a0a007b479c0e" + }, + "price": 1890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پشن لایف", + "description": "", + "short_description": "", + "category": { + "$oid": "6527fce059383e8d7552d4be" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1744480310105.png", + "created_at": { + "$date": "2025-04-12T17:51:51.575Z" + }, + "updated_at": { + "$date": "2025-04-12T17:58:36.652Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faa884f43a0a007b479c3f" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارابیچ", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef22159383e8d75524416" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1744480386774.png", + "created_at": { + "$date": "2025-04-12T17:53:08.131Z" + }, + "updated_at": { + "$date": "2025-04-12T17:54:51.127Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faa8cbf43a0a007b479c5a" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کرن دریم", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef22159383e8d75524416" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1744480458800.png", + "created_at": { + "$date": "2025-04-12T17:54:19.867Z" + }, + "updated_at": { + "$date": "2025-04-12T17:54:19.867Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faa930f43a0a007b479c7f" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گرین گاردن", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef22159383e8d75524416" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1744480557853.png", + "created_at": { + "$date": "2025-04-12T17:56:00.420Z" + }, + "updated_at": { + "$date": "2025-04-12T17:56:00.420Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faa972f43a0a007b479c97" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بری موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef22159383e8d75524416" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1744480625767.png", + "created_at": { + "$date": "2025-04-12T17:57:06.828Z" + }, + "updated_at": { + "$date": "2025-06-29T14:21:47.716Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faaabcf43a0a007b479d0c" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ کارامل", + "description": "", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-04-12T18:02:36.911Z" + }, + "updated_at": { + "$date": "2025-04-13T16:51:45.404Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faaad6f43a0a007b479d24" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ کوکی", + "description": "", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-04-12T18:03:02.907Z" + }, + "updated_at": { + "$date": "2025-04-13T16:51:26.118Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faaafff43a0a007b479d31" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ پاپکورن", + "description": "", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-04-12T18:03:43.010Z" + }, + "updated_at": { + "$date": "2025-04-13T16:51:09.697Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faab1ef43a0a007b479d3e" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ فندوق", + "description": "", + "short_description": "", + "category": { + "$oid": "651ee00e59383e8d75523c4e" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-04-12T18:04:14.545Z" + }, + "updated_at": { + "$date": "2025-04-13T16:50:49.684Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faaf06f43a0a007b479efc" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لیدی کیس", + "description": "", + "short_description": "", + "category": { + "$oid": "67faae25f43a0a007b479eaa" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1744482053233.png", + "created_at": { + "$date": "2025-04-12T18:20:54.475Z" + }, + "updated_at": { + "$date": "2025-04-12T18:20:54.475Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faaf2af43a0a007b479f0c" + }, + "price": 2990000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هوراکان", + "description": "", + "short_description": "", + "category": { + "$oid": "67faae25f43a0a007b479eaa" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1744482088578.png", + "created_at": { + "$date": "2025-04-12T18:21:30.846Z" + }, + "updated_at": { + "$date": "2025-04-12T18:21:30.846Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faaf54f43a0a007b479f2e" + }, + "price": 2890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "واینکا", + "description": "", + "short_description": "", + "category": { + "$oid": "67faae25f43a0a007b479eaa" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "image": "food_1744482131071.png", + "created_at": { + "$date": "2025-04-12T18:22:12.288Z" + }, + "updated_at": { + "$date": "2025-04-12T18:22:12.288Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67faaf71f43a0a007b479f38" + }, + "price": 2450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ارسیسا", + "description": "", + "short_description": "", + "category": { + "$oid": "67faae25f43a0a007b479eaa" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-04-12T18:22:41.867Z" + }, + "updated_at": { + "$date": "2025-04-12T18:22:41.867Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67fbec15c4a0d20062ba154a" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک استرابری", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef0b759383e8d7552437a" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-04-13T16:53:41.186Z" + }, + "updated_at": { + "$date": "2025-04-13T16:53:41.186Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67fc02dec4a0d20062ba1e7e" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "کیک شکلات", + "description": "", + "short_description": "", + "category": { + "$oid": "67fc02bbc4a0d20062ba1e6c" + }, + "index": 1, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-04-13T18:30:54.576Z" + }, + "updated_at": { + "$date": "2025-09-06T22:22:21.187Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67fc032dc4a0d20062ba1ea6" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "سن سباستین", + "description": "", + "short_description": "", + "category": { + "$oid": "67fc02bbc4a0d20062ba1e6c" + }, + "index": 2, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-04-13T18:32:13.904Z" + }, + "updated_at": { + "$date": "2025-09-06T22:22:01.147Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67fc035ec4a0d20062ba1ebc" + }, + "price": 150000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "ترافل", + "description": "", + "short_description": "", + "category": { + "$oid": "67fc02bbc4a0d20062ba1e6c" + }, + "index": 4, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-04-13T18:33:02.828Z" + }, + "updated_at": { + "$date": "2025-09-06T22:21:46.353Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "67ffbbe7c4a0d20062ba68c1" + }, + "price": 1880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک کوکی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d78536282006224dc28" + }, + "index": 5, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1744813029366.png", + "created_at": { + "$date": "2025-04-16T14:17:11.314Z" + }, + "updated_at": { + "$date": "2025-12-02T14:51:20.695Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6801535ac4a0d20062baa655" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ویرجین کولادا", + "description": "", + "short_description": "", + "category": { + "$oid": "651ef22159383e8d75524416" + }, + "index": 0, + "storeId": { + "$oid": "650823be59383e8d7550ccb5" + }, + "created_at": { + "$date": "2025-04-17T19:15:38.543Z" + }, + "updated_at": { + "$date": "2025-06-29T14:22:23.149Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6803bcc7c4a0d20062baeade" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سه شیر وانیلی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 17, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1745075397924.png", + "created_at": { + "$date": "2025-04-19T15:09:59.227Z" + }, + "updated_at": { + "$date": "2025-12-22T14:39:34.942Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "680610567383a10062ca101b" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کروسان", + "description": "", + "short_description": "", + "category": { + "$oid": "61b1a1e0fc1eece3d762639b" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-04-21T09:31:02.224Z" + }, + "updated_at": { + "$date": "2025-04-21T09:31:02.224Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "680818727383a10062ca4be0" + }, + "price": 100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "tetA", + "description": "tst", + "short_description": "", + "category": { + "$oid": "680816f77383a10062ca4ba5" + }, + "index": 1, + "storeId": { + "$oid": "678922c2a4463c0057e52bde" + }, + "image": "food_1745361100953.png", + "created_at": { + "$date": "2025-04-22T22:30:10.288Z" + }, + "updated_at": { + "$date": "2025-04-22T22:55:20.735Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6814fbb4f114460057d0c7a2" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "64a6937598ff3c741447ce92" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-05-02T17:07:00.119Z" + }, + "updated_at": { + "$date": "2025-05-02T17:07:00.119Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "681730c4f114460057d0ff56" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پای سیب", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 10, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1746350274914.png", + "created_at": { + "$date": "2025-05-04T09:17:56.790Z" + }, + "updated_at": { + "$date": "2025-06-05T12:37:08.018Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "681730e6f114460057d0ff60" + }, + "price": 990000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پای توت فرنگی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 15, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1746350309090.png", + "created_at": { + "$date": "2025-05-04T09:18:30.617Z" + }, + "updated_at": { + "$date": "2025-06-05T12:36:43.603Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "681736f3f114460057d10017" + }, + "price": 5450000, + "stock": 3, + "static_discount": 0, + "active": true, + "name": "گارلیک چیکن/ Garlick chicken", + "description": "دیپ قارچ و پنیر/ترکیب پنیر معطر/تکه های مرغ مزه دار شده بر پایه سیر/فلفل دلمه ای/ریحان ایتالیایی/اورگانو", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 3, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-05-04T09:44:19.286Z" + }, + "updated_at": { + "$date": "2025-12-04T11:21:22.178Z" + }, + "__v": 0, + "image": "food_1761750232870.png" +}, +{ + "_id": { + "$oid": "6818a396f114460057d12863" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاریس برست", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 19, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1746445205213.png", + "created_at": { + "$date": "2025-05-05T11:40:06.786Z" + }, + "updated_at": { + "$date": "2025-11-03T10:12:15.109Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "682edc5ff114460057d36ab4" + }, + "price": 1820000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ۱۰۰ برزیل", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 1, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-05-22T08:12:15.852Z" + }, + "updated_at": { + "$date": "2025-12-09T13:24:27.907Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "682edc92f114460057d36abe" + }, + "price": 1980000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ۱۰۰ ال سالوادور", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 2, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-05-22T08:13:06.972Z" + }, + "updated_at": { + "$date": "2025-12-09T13:25:36.538Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "682ee1bdf114460057d36d3e" + }, + "price": 1780000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلدبرو کولا", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9f3a4463c0057e68d31" + }, + "index": 7, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-05-22T08:35:09.959Z" + }, + "updated_at": { + "$date": "2025-10-20T19:21:28.084Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "682ee2dcf114460057d36dfd" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جینجر شات انار", + "description": "آب انار، زنجبیل", + "short_description": "", + "category": { + "$oid": "6795ea3aa4463c0057e68d3a" + }, + "index": 8, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-05-22T08:39:56.523Z" + }, + "updated_at": { + "$date": "2025-10-27T19:32:31.182Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "682ee69af114460057d36f85" + }, + "price": 1120000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی شکلات گردو", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 13, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-05-22T08:55:54.293Z" + }, + "updated_at": { + "$date": "2025-12-23T13:52:32.969Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "682ee6b4f114460057d36f97" + }, + "price": 1120000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی دبل چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 14, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-05-22T08:56:20.300Z" + }, + "updated_at": { + "$date": "2025-12-23T13:48:13.082Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "682ee6d0f114460057d36fa9" + }, + "price": 1120000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی رژیمی", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 15, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-05-22T08:56:48.271Z" + }, + "updated_at": { + "$date": "2025-12-23T13:48:37.247Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "682ee6e7f114460057d36fb3" + }, + "price": 1120000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی بادام‌زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 16, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-05-22T08:57:11.143Z" + }, + "updated_at": { + "$date": "2025-12-23T13:47:55.144Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68319f98f114460057d3c836" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک بری - berry milkshake", + "description": "توت فرنگی / شاتوت / وانیل", + "short_description": "", + "category": { + "$oid": "61b1a1befc1eece3d7626390" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-05-24T10:29:44.453Z" + }, + "updated_at": { + "$date": "2025-09-29T10:53:15.483Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6831a091f114460057d3c85f" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موکا توت فرنگی - Strawberry mocha", + "description": "توت فرنگی / شکلات / قهوه / شیر", + "short_description": "", + "category": { + "$oid": "64a6937598ff3c741447ce92" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-05-24T10:33:53.881Z" + }, + "updated_at": { + "$date": "2025-05-24T10:33:53.881Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68416f60f114460057d567f3" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "یارا...yara", + "description": "بیدمشک /خاکشیر/سرددم چای ترش", + "short_description": "", + "category": { + "$oid": "663a58217d6ac20062299ee4" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-06-05T10:20:16.293Z" + }, + "updated_at": { + "$date": "2025-09-29T10:58:35.625Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68472d9df114460057d611bd" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نوشابه لیوانی ", + "description": "کوکا/فانتا/ اسپرایت/ آب سودا", + "short_description": "", + "category": { + "$oid": "61ac60cdabb1b20239abe5bd" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-06-09T18:53:17.850Z" + }, + "updated_at": { + "$date": "2025-07-29T11:29:16.437Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6847c70ef114460057d617ee" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا آلفردو", + "description": "پاستا تازه،سس آلفردو، قارچ بلانچ شده،پنیر پارمسان", + "short_description": "", + "category": { + "$oid": "6847c6f5f114460057d617e1" + }, + "index": 1, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-10T05:47:58.838Z" + }, + "updated_at": { + "$date": "2025-10-20T18:22:01.276Z" + }, + "__v": 0, + "image": "food_1760984472872.png" +}, +{ + "_id": { + "$oid": "68486256f114460057d626cf" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سیاه لاهیجان 3کاپ", + "description": "برگ دستچین شده مزارع لاهیجان،همراه با تاپینگ دارچین، زعفران یا هل", + "short_description": "", + "category": { + "$oid": "6207a2ee1ee4b0270db4c44f" + }, + "index": 2, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "image": "food_1749574230701.png", + "created_at": { + "$date": "2025-06-10T16:50:31.006Z" + }, + "updated_at": { + "$date": "2025-11-13T11:51:46.384Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "684ad37bf114460057d65c12" + }, + "price": 2600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک استرابلا", + "description": "بستنی، شیر، نوتلا، توت‌فرنگی، پوره‌ی توت‌فرنگی", + "short_description": "", + "category": { + "$oid": "684ad2a6f114460057d65be3" + }, + "index": 1, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-06-12T13:17:47.913Z" + }, + "updated_at": { + "$date": "2025-12-23T14:00:10.472Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "684ad3acf114460057d65c1d" + }, + "price": 2110000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک پیناتی", + "description": "بستنی، شیر، موز، بادام‌زمینی، سس کارامل‌نمکی", + "short_description": "", + "category": { + "$oid": "684ad2a6f114460057d65be3" + }, + "index": 2, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-06-12T13:18:36.897Z" + }, + "updated_at": { + "$date": "2025-12-23T14:00:37.176Z" + }, + "__v": 0, + "image": "food_1753793881494.png" +}, +{ + "_id": { + "$oid": "684ad3d5f114460057d65c29" + }, + "price": 2060000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک فروتی", + "description": "بستنی، شیر، شاتوت، توت‌فرنگی", + "short_description": "", + "category": { + "$oid": "684ad2a6f114460057d65be3" + }, + "index": 3, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-06-12T13:19:17.768Z" + }, + "updated_at": { + "$date": "2025-12-23T14:09:59.427Z" + }, + "__v": 0, + "image": "food_1753793899891.png" +}, +{ + "_id": { + "$oid": "684ad409f114460057d65c33" + }, + "price": 2510000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک ماچانگو", + "description": "بستنی، شیر نارگیل، سیروپ نارگیل، انبه، ماچا", + "short_description": "", + "category": { + "$oid": "684ad2a6f114460057d65be3" + }, + "index": 4, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-06-12T13:20:09.211Z" + }, + "updated_at": { + "$date": "2025-12-23T14:10:17.756Z" + }, + "__v": 0, + "image": "food_1753793935719.png" +}, +{ + "_id": { + "$oid": "684be542f114460057d67a53" + }, + "price": 3290000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا ریحان و پسته ", + "description": "پاستا تازه ،سس کرم ریحان، مغز پسته،پنیر پارمسان،سیر", + "short_description": "", + "category": { + "$oid": "6847c6f5f114460057d617e1" + }, + "index": 2, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:45:54.803Z" + }, + "updated_at": { + "$date": "2025-10-20T17:39:41.356Z" + }, + "__v": 0, + "image": "food_1760981977562.png" +}, +{ + "_id": { + "$oid": "684be570f114460057d67a60" + }, + "price": 3480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا گود کرما‌‌", + "description": "پاستا تازه ، سس گود کرما(ترکیب خامه و پنیر گودا)،مغز گردو ، پنیر پارمسان", + "short_description": "", + "category": { + "$oid": "6847c6f5f114460057d617e1" + }, + "index": 3, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:46:40.644Z" + }, + "updated_at": { + "$date": "2025-10-20T17:36:58.247Z" + }, + "__v": 0, + "image": "food_1760981814392.png" +}, +{ + "_id": { + "$oid": "684be5adf114460057d67a80" + }, + "price": 3490000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا چدارلا", + "description": "پاستا تازه،سس چدار ،پنیر موزارلا،مغز بادام هندی", + "short_description": "", + "category": { + "$oid": "6847c6f5f114460057d617e1" + }, + "index": 4, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:47:41.781Z" + }, + "updated_at": { + "$date": "2025-10-20T17:35:54.637Z" + }, + "__v": 0, + "image": "food_1760981750380.png" +}, +{ + "_id": { + "$oid": "684be5f0f114460057d67a92" + }, + "price": 2600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاساتا پلاس", + "description": "پاستا تازه،سس تمیتو فرش، گوجه گیلاسی،سبزیجات معطر،پنیر ،بادام هندی و گردو،پارمسان", + "short_description": "", + "category": { + "$oid": "6847c6f5f114460057d617e1" + }, + "index": 5, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:48:48.452Z" + }, + "updated_at": { + "$date": "2025-10-20T17:31:09.118Z" + }, + "__v": 0, + "image": "food_1760981465649.png" +}, +{ + "_id": { + "$oid": "684be62ff114460057d67ab5" + }, + "price": 2550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هاتینو پاستا(تند)", + "description": "پاستا تازه، سس چیلی ،فلفل،گوجه گیلاسی، سبزیجات معطر، پنیر پارمسان", + "short_description": "", + "category": { + "$oid": "6847c6f5f114460057d617e1" + }, + "index": 6, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:49:51.894Z" + }, + "updated_at": { + "$date": "2025-10-20T17:29:56.383Z" + }, + "__v": 0, + "image": "food_1760981392033.png" +}, +{ + "_id": { + "$oid": "684be667f114460057d67abf" + }, + "price": 3800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "راویولی‌ پنیر و مرغ ( روزهای دوشنبه و سه شنبه )", + "description": "پاستای تازه ،مرغ طعم دار شده ،پنیر ،بلوچیز‌،سیر، سس ماشروم کرم", + "short_description": "", + "category": { + "$oid": "684be3cff114460057d679ed" + }, + "index": 1, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:50:47.312Z" + }, + "updated_at": { + "$date": "2025-10-19T16:58:42.336Z" + }, + "__v": 0, + "image": "food_1760893100067.png" +}, +{ + "_id": { + "$oid": "684be7b9f114460057d67adb" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "راگو", + "description": "گوشت گردن گوساله آرام پز شده،سس باربیکی", + "short_description": "", + "category": { + "$oid": "684be3fdf114460057d679fd" + }, + "index": 1, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:56:25.348Z" + }, + "updated_at": { + "$date": "2025-10-19T16:56:09.553Z" + }, + "__v": 0, + "image": "food_1760892964603.png" +}, +{ + "_id": { + "$oid": "684be7dff114460057d67ae5" + }, + "price": 990000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن", + "description": "۱۵۰ گرم فیله مرغ طعم دار شده", + "short_description": "", + "category": { + "$oid": "684be3fdf114460057d679fd" + }, + "index": 2, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:57:03.221Z" + }, + "updated_at": { + "$date": "2025-10-19T16:54:28.986Z" + }, + "__v": 0, + "image": "food_1760892860513.png" +}, +{ + "_id": { + "$oid": "684be7fff114460057d67aef" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میگو", + "description": "میگو طعم دار شده،سس سس‌ گامباس،سبزیجات معطر", + "short_description": "", + "category": { + "$oid": "684be3fdf114460057d679fd" + }, + "index": 3, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:57:35.647Z" + }, + "updated_at": { + "$date": "2025-10-19T16:53:20.644Z" + }, + "__v": 0, + "image": "food_1760892744593.png" +}, +{ + "_id": { + "$oid": "684be822f114460057d67af9" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن استیک", + "description": "۱۵۰ گرم فیله مرغ طعم دار شده با سس ماشروم کرم", + "short_description": "", + "category": { + "$oid": "684be3fdf114460057d679fd" + }, + "index": 4, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:58:10.376Z" + }, + "updated_at": { + "$date": "2025-10-19T16:51:12.506Z" + }, + "__v": 0, + "image": "food_1760892668573.png" +}, +{ + "_id": { + "$oid": "684be83df114460057d67b03" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیکن گوشت و مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "684be3fdf114460057d679fd" + }, + "index": 5, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:58:37.694Z" + }, + "updated_at": { + "$date": "2025-10-19T17:16:35.416Z" + }, + "__v": 0, + "image": "food_1760892529571.png" +}, +{ + "_id": { + "$oid": "684be85af114460057d67b0d" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بادمجان", + "description": " بادمجان سرخ شده", + "short_description": "", + "category": { + "$oid": "684be3fdf114460057d679fd" + }, + "index": 6, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T08:59:06.371Z" + }, + "updated_at": { + "$date": "2025-10-19T16:47:13.848Z" + }, + "__v": 0, + "image": "food_1760892427936.png" +}, +{ + "_id": { + "$oid": "684be984f114460057d67b35" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیاز کاراملی", + "description": "پیاز سفید ، کره ", + "short_description": "", + "category": { + "$oid": "684be3fdf114460057d679fd" + }, + "index": 7, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T09:04:04.551Z" + }, + "updated_at": { + "$date": "2025-10-19T16:43:48.646Z" + }, + "__v": 0, + "image": "food_1760892187306.png" +}, +{ + "_id": { + "$oid": "684be9b0f114460057d67b3f" + }, + "price": 890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وگن استار", + "description": "بادمجان ، گوجه گیلاسی، ذرت، قارچ", + "short_description": "", + "category": { + "$oid": "684be3fdf114460057d679fd" + }, + "index": 8, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T09:04:48.598Z" + }, + "updated_at": { + "$date": "2025-10-19T16:41:37.175Z" + }, + "__v": 0, + "image": "food_1760892091585.png" +}, +{ + "_id": { + "$oid": "684be9def114460057d67b55" + }, + "price": 4190000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "راگوسفردو", + "description": "نان چیاباتا،گوشت گردن آرام پز شده ، سس ماشروم کرم ،پیاز کاراملی،وجه", + "short_description": "", + "category": { + "$oid": "684be428f114460057d67a06" + }, + "index": 1, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T09:05:34.189Z" + }, + "updated_at": { + "$date": "2025-10-20T18:01:59.938Z" + }, + "__v": 0, + "image": "food_1760983316509.png" +}, +{ + "_id": { + "$oid": "684be9fff114460057d67b6b" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکناتا", + "description": "فیله مرغ طعم داره ، سس ماشروم کرم ، پنیر گودا ، وجه", + "short_description": "", + "category": { + "$oid": "684be428f114460057d67a06" + }, + "index": 2, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T09:06:07.597Z" + }, + "updated_at": { + "$date": "2025-10-20T18:24:49.468Z" + }, + "__v": 0, + "image": "food_1760984684653.png" +}, +{ + "_id": { + "$oid": "684bea1bf114460057d67b75" + }, + "price": 3550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بیکندویچ", + "description": "بیکن گوشت ،سس پستو،پنیر پستو و موزرلا، قارچ بلانچ، وجه", + "short_description": "", + "category": { + "$oid": "684be428f114460057d67a06" + }, + "index": 3, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T09:06:35.878Z" + }, + "updated_at": { + "$date": "2025-10-20T18:23:30.095Z" + }, + "__v": 0, + "image": "food_1760984608997.png" +}, +{ + "_id": { + "$oid": "684bea35f114460057d67b8e" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکا", + "description": "", + "short_description": "", + "category": { + "$oid": "684be447f114460057d67a0f" + }, + "index": 1, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T09:07:01.130Z" + }, + "updated_at": { + "$date": "2025-10-19T16:11:44.920Z" + }, + "__v": 0, + "image": "food_1760890300457.png" +}, +{ + "_id": { + "$oid": "684bea56f114460057d67ba2" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فانتا", + "description": "", + "short_description": "", + "category": { + "$oid": "684be447f114460057d67a0f" + }, + "index": 2, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T09:07:34.843Z" + }, + "updated_at": { + "$date": "2025-10-19T16:13:43.628Z" + }, + "__v": 0, + "image": "food_1760890421825.png" +}, +{ + "_id": { + "$oid": "684bea6af114460057d67bac" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرایت", + "description": "", + "short_description": "", + "category": { + "$oid": "684be447f114460057d67a0f" + }, + "index": 3, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T09:07:54.956Z" + }, + "updated_at": { + "$date": "2025-10-19T16:15:06.371Z" + }, + "__v": 0, + "image": "food_1760890505141.png" +}, +{ + "_id": { + "$oid": "684bea7ff114460057d67bc2" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاکتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "684be447f114460057d67a0f" + }, + "index": 4, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T09:08:15.812Z" + }, + "updated_at": { + "$date": "2025-10-19T16:23:47.483Z" + }, + "__v": 0, + "image": "food_1760890822242.png" +}, +{ + "_id": { + "$oid": "684beaa8f114460057d67bdf" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکا زیرو", + "description": "", + "short_description": "", + "category": { + "$oid": "684be447f114460057d67a0f" + }, + "index": 6, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T09:08:56.337Z" + }, + "updated_at": { + "$date": "2025-10-19T16:19:34.132Z" + }, + "__v": 0, + "image": "food_1760890772796.png" +}, +{ + "_id": { + "$oid": "684beab9f114460057d67bf2" + }, + "price": 110000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آب معدنی", + "description": "", + "short_description": "", + "category": { + "$oid": "684be447f114460057d67a0f" + }, + "index": 7, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-06-13T09:09:13.551Z" + }, + "updated_at": { + "$date": "2025-10-19T16:17:19.857Z" + }, + "__v": 0, + "image": "food_1760890584189.png" +}, +{ + "_id": { + "$oid": "684c0702f114460057d67e52" + }, + "price": 300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آب سودا ", + "description": "", + "short_description": "", + "category": { + "$oid": "61ac60cdabb1b20239abe5bd" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-06-13T11:09:54.663Z" + }, + "updated_at": { + "$date": "2025-06-13T11:09:54.663Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "686102819086300011bdf82c" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آش رشته کشک", + "description": "", + "short_description": "", + "category": { + "$oid": "6861026c9086300011bdf813" + }, + "index": 1, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T09:08:17.473Z" + }, + "updated_at": { + "$date": "2025-12-25T13:08:15.809Z" + }, + "__v": 0, + "image": "food_1751458394662.png" +}, +{ + "_id": { + "$oid": "68611d9ea67e8f0012d55c38" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آش رشته ترشی", + "description": "", + "short_description": "", + "category": { + "$oid": "6861026c9086300011bdf813" + }, + "index": 2, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T11:03:58.075Z" + }, + "updated_at": { + "$date": "2025-12-25T13:07:56.937Z" + }, + "__v": 0, + "image": "food_1751458332627.png" +}, +{ + "_id": { + "$oid": "6861202aa67e8f0012d55c93" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آش جو بدون سیرابی", + "description": "", + "short_description": "", + "category": { + "$oid": "6861026c9086300011bdf813" + }, + "index": 3, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T11:14:50.692Z" + }, + "updated_at": { + "$date": "2025-12-25T13:07:28.787Z" + }, + "__v": 0, + "image": "food_1751458284386.png" +}, +{ + "_id": { + "$oid": "686122c0a67e8f0012d55cdf" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آش جو با سیرابی", + "description": "", + "short_description": "", + "category": { + "$oid": "6861026c9086300011bdf813" + }, + "index": 4, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T11:25:52.546Z" + }, + "updated_at": { + "$date": "2025-12-25T13:07:02.008Z" + }, + "__v": 0, + "image": "food_1751458241590.png" +}, +{ + "_id": { + "$oid": "686122dfa67e8f0012d55cf3" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آش ترخینه", + "description": "ترخینه دست ساز خودم پز،سبزی آش و حبوبات، نعناداغ و پیازداغ", + "short_description": "", + "category": { + "$oid": "6861026c9086300011bdf813" + }, + "index": 5, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T11:26:23.033Z" + }, + "updated_at": { + "$date": "2025-12-25T13:09:58.705Z" + }, + "__v": 0, + "image": "food_1751458054499.png" +}, +{ + "_id": { + "$oid": "6861231ba67e8f0012d55d00" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کاله جوش", + "description": "کشک،گردو،سیر داغ،و نعنا داغ+دورچین پیاز", + "short_description": "", + "category": { + "$oid": "6861026c9086300011bdf813" + }, + "index": 6, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T11:27:23.040Z" + }, + "updated_at": { + "$date": "2025-12-25T13:06:30.773Z" + }, + "__v": 0, + "image": "food_1751457990529.png" +}, +{ + "_id": { + "$oid": "68612c65a67e8f0012d55dc8" + }, + "price": 4000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جغور بغور", + "description": "۲۵۰ گرم ترکیب جگر گوسفندی و جگر سفید+پیازداغ و چاشنی و دورچین سیب سرخ کرده", + "short_description": "", + "category": { + "$oid": "68612389a67e8f0012d55d2a" + }, + "index": 4, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:07:01.475Z" + }, + "updated_at": { + "$date": "2025-12-25T13:04:54.205Z" + }, + "__v": 0, + "image": "food_1751457914487.png" +}, +{ + "_id": { + "$oid": "68612c90a67e8f0012d55ddb" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پلو خورشت فسنجان ", + "description": "یک پرس برنج ایرانی،گردو،رب انار،گوشت گرم چرخکرده،", + "short_description": "", + "category": { + "$oid": "68612389a67e8f0012d55d2a" + }, + "index": 5, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:07:44.658Z" + }, + "updated_at": { + "$date": "2025-12-25T13:05:20.382Z" + }, + "__v": 0, + "image": "food_1751457659186.png" +}, +{ + "_id": { + "$oid": "68612cbaa67e8f0012d55de8" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پلو خورشت قورمه سبزی", + "description": "برنج ایرانی،گوشت گرم", + "short_description": "", + "category": { + "$oid": "68612389a67e8f0012d55d2a" + }, + "index": 6, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:08:26.126Z" + }, + "updated_at": { + "$date": "2025-12-25T13:03:51.929Z" + }, + "__v": 0, + "image": "food_1751457555463.png" +}, +{ + "_id": { + "$oid": "68612d0ca67e8f0012d55df5" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پلو خورشت قیمه", + "description": "برنج ایرانی،گوشت گرم", + "short_description": "", + "category": { + "$oid": "68612389a67e8f0012d55d2a" + }, + "index": 7, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:09:48.487Z" + }, + "updated_at": { + "$date": "2025-12-25T13:03:28.724Z" + }, + "__v": 0, + "image": "food_1751457401903.png" +}, +{ + "_id": { + "$oid": "68612d36a67e8f0012d55e02" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چلو کره", + "description": "", + "short_description": "", + "category": { + "$oid": "68612389a67e8f0012d55d2a" + }, + "index": 8, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:10:30.227Z" + }, + "updated_at": { + "$date": "2025-11-13T17:51:59.299Z" + }, + "__v": 0, + "image": "food_1751457361220.png" +}, +{ + "_id": { + "$oid": "68612e2ca67e8f0012d55e4e" + }, + "price": 2400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دلمه ", + "description": "برنج ایرانی،لپه،گوشت گرم،،،،،با چاشنی سرکه شکر", + "short_description": "", + "category": { + "$oid": "686123a8a67e8f0012d55d33" + }, + "index": 1, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:14:36.051Z" + }, + "updated_at": { + "$date": "2025-12-25T13:03:07.709Z" + }, + "__v": 0, + "image": "food_1751457305461.png" +}, +{ + "_id": { + "$oid": "68612e47a67e8f0012d55e5b" + }, + "price": 2800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوفته", + "description": "برنج ایرانی،لپه،گوشت گرم+سس مخصوص", + "short_description": "", + "category": { + "$oid": "686123a8a67e8f0012d55d33" + }, + "index": 2, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:15:03.310Z" + }, + "updated_at": { + "$date": "2025-12-25T13:02:39.108Z" + }, + "__v": 0, + "image": "food_1751457265694.png" +}, +{ + "_id": { + "$oid": "68612e80a67e8f0012d55e68" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لوبیا پلو ", + "description": "برنج ایرانی،گوشت گرم،لوبیاسبز،زعفران", + "short_description": "", + "category": { + "$oid": "686123a8a67e8f0012d55d33" + }, + "index": 0, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:16:00.466Z" + }, + "updated_at": { + "$date": "2025-11-30T17:56:10.047Z" + }, + "__v": 0, + "image": "food_1751457204685.png" +}, +{ + "_id": { + "$oid": "68612e8da67e8f0012d55e72" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماکارونی ", + "description": "گوشت گرم چرخکرده،دورچین خیارشور", + "short_description": "", + "category": { + "$oid": "686123a8a67e8f0012d55d33" + }, + "index": 0, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:16:13.524Z" + }, + "updated_at": { + "$date": "2025-12-25T13:01:24.393Z" + }, + "__v": 0, + "image": "food_1751457166583.png" +}, +{ + "_id": { + "$oid": "68612e9ba67e8f0012d55e7c" + }, + "price": 0, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکو یا کتلت", + "description": "موجود نیست", + "short_description": "", + "category": { + "$oid": "686123a8a67e8f0012d55d33" + }, + "index": 0, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:16:27.705Z" + }, + "updated_at": { + "$date": "2025-08-17T18:25:39.601Z" + }, + "__v": 0, + "image": "food_1751457113713.png" +}, +{ + "_id": { + "$oid": "68612fb2a67e8f0012d55e8c" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "عدسی", + "description": "", + "short_description": "", + "category": { + "$oid": "686123c3a67e8f0012d55d3c" + }, + "index": 1, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:21:06.763Z" + }, + "updated_at": { + "$date": "2025-07-02T11:49:58.864Z" + }, + "__v": 0, + "image": "food_1751456994471.png" +}, +{ + "_id": { + "$oid": "68612ff0a67e8f0012d55e96" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لوبیا", + "description": "", + "short_description": "", + "category": { + "$oid": "686123c3a67e8f0012d55d3c" + }, + "index": 2, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:22:08.902Z" + }, + "updated_at": { + "$date": "2025-12-25T13:01:56.487Z" + }, + "__v": 0, + "image": "food_1751456924636.png" +}, +{ + "_id": { + "$oid": "68613044a67e8f0012d55ea3" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "املت", + "description": "", + "short_description": "", + "category": { + "$oid": "686123c3a67e8f0012d55d3c" + }, + "index": 3, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:23:32.724Z" + }, + "updated_at": { + "$date": "2025-12-25T13:15:26.768Z" + }, + "__v": 0, + "image": "food_1751456890468.png" +}, +{ + "_id": { + "$oid": "68613056a67e8f0012d55ead" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "املت شاپوری", + "description": "املت+لوبیا چیتی", + "short_description": "", + "category": { + "$oid": "686123c3a67e8f0012d55d3c" + }, + "index": 4, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:23:50.218Z" + }, + "updated_at": { + "$date": "2025-12-25T13:00:43.586Z" + }, + "__v": 0, + "image": "food_1751456837633.png" +}, +{ + "_id": { + "$oid": "68613081a67e8f0012d55eb7" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوسیس تخم مرغ ", + "description": "", + "short_description": "", + "category": { + "$oid": "686123c3a67e8f0012d55d3c" + }, + "index": 5, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:24:33.491Z" + }, + "updated_at": { + "$date": "2025-12-25T13:00:15.003Z" + }, + "__v": 0, + "image": "food_1751456795641.png" +}, +{ + "_id": { + "$oid": "68613096a67e8f0012d55ec1" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خاگینه", + "description": "", + "short_description": "", + "category": { + "$oid": "686123c3a67e8f0012d55d3c" + }, + "index": 6, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:24:54.104Z" + }, + "updated_at": { + "$date": "2025-12-25T12:59:52.941Z" + }, + "__v": 0, + "image": "food_1751456757455.png" +}, +{ + "_id": { + "$oid": "686130b6a67e8f0012d55ece" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نیمرو", + "description": "", + "short_description": "", + "category": { + "$oid": "686123c3a67e8f0012d55d3c" + }, + "index": 7, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:25:26.160Z" + }, + "updated_at": { + "$date": "2025-07-02T11:45:14.863Z" + }, + "__v": 0, + "image": "food_1751456712560.png" +}, +{ + "_id": { + "$oid": "686130cca67e8f0012d55edb" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "صبحانه ایرانی", + "description": "", + "short_description": "", + "category": { + "$oid": "686123c3a67e8f0012d55d3c" + }, + "index": 8, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:25:48.855Z" + }, + "updated_at": { + "$date": "2025-12-25T12:59:26.037Z" + }, + "__v": 0, + "image": "food_1751456668824.png" +}, +{ + "_id": { + "$oid": "686130e4a67e8f0012d55ee5" + }, + "price": 350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای", + "description": "", + "short_description": "", + "category": { + "$oid": "68612462a67e8f0012d55d48" + }, + "index": 1, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:26:12.242Z" + }, + "updated_at": { + "$date": "2025-12-25T12:58:55.119Z" + }, + "__v": 0, + "image": "food_1751456591727.png" +}, +{ + "_id": { + "$oid": "686130f7a67e8f0012d55eef" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای مخصوص", + "description": "", + "short_description": "", + "category": { + "$oid": "68612462a67e8f0012d55d48" + }, + "index": 2, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:26:31.345Z" + }, + "updated_at": { + "$date": "2025-07-02T11:41:25.949Z" + }, + "__v": 0, + "image": "food_1751456482433.png" +}, +{ + "_id": { + "$oid": "6861310ba67e8f0012d55efc" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش آویشن", + "description": "", + "short_description": "", + "category": { + "$oid": "68612462a67e8f0012d55d48" + }, + "index": 3, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:26:51.848Z" + }, + "updated_at": { + "$date": "2025-12-25T12:57:47.738Z" + }, + "__v": 0, + "image": "food_1751456436613.png" +}, +{ + "_id": { + "$oid": "68613124a67e8f0012d55f09" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش چای ترش", + "description": "", + "short_description": "", + "category": { + "$oid": "68612462a67e8f0012d55d48" + }, + "index": 4, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:27:16.179Z" + }, + "updated_at": { + "$date": "2025-12-25T12:57:15.899Z" + }, + "__v": 0, + "image": "food_1751456360232.png" +}, +{ + "_id": { + "$oid": "68613137a67e8f0012d55f13" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش آرام بخش", + "description": "", + "short_description": "", + "category": { + "$oid": "68612462a67e8f0012d55d48" + }, + "index": 5, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:27:35.205Z" + }, + "updated_at": { + "$date": "2025-12-25T12:56:53.861Z" + }, + "__v": 0, + "image": "food_1751456209480.png" +}, +{ + "_id": { + "$oid": "68613147a67e8f0012d55f1d" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش،گل گاو زبان", + "description": "", + "short_description": "", + "category": { + "$oid": "68612462a67e8f0012d55d48" + }, + "index": 6, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:27:51.072Z" + }, + "updated_at": { + "$date": "2025-12-25T12:56:24.661Z" + }, + "__v": 0, + "image": "food_1751456113962.png" +}, +{ + "_id": { + "$oid": "68613168a67e8f0012d55f37" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دوغ سنتی", + "description": "", + "short_description": "", + "category": { + "$oid": "68612462a67e8f0012d55d48" + }, + "index": 8, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T12:28:24.976Z" + }, + "updated_at": { + "$date": "2025-07-02T11:33:58.103Z" + }, + "__v": 0, + "image": "food_1751456034461.png" +}, +{ + "_id": { + "$oid": "6861564076ec130012b3a7d3" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شربت سنتی", + "description": "", + "short_description": "", + "category": { + "$oid": "68612462a67e8f0012d55d48" + }, + "index": 7, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T15:05:36.194Z" + }, + "updated_at": { + "$date": "2025-07-02T11:32:06.488Z" + }, + "__v": 0, + "image": "food_1751455922149.png" +}, +{ + "_id": { + "$oid": "68615b4a76ec130012b3a8d6" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کباب تابه ای", + "description": "۱۳۵ گرم گوشت گرم و تازه،یک عدد گوجه،سیب زمینی سرخ شده", + "short_description": "", + "category": { + "$oid": "68612389a67e8f0012d55d2a" + }, + "index": 12, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T15:27:06.780Z" + }, + "updated_at": { + "$date": "2025-12-25T12:55:36.928Z" + }, + "__v": 0, + "image": "food_1753715784744.png" +}, +{ + "_id": { + "$oid": "68615bde76ec130012b3a903" + }, + "price": 3800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پلو مرغ ویژه", + "description": "یک عدد ران،مخلفات،برنج ایرانی", + "short_description": "", + "category": { + "$oid": "686123a8a67e8f0012d55d33" + }, + "index": 3, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T15:29:34.753Z" + }, + "updated_at": { + "$date": "2025-12-25T12:02:59.924Z" + }, + "__v": 0, + "image": "food_1751455810504.png" +}, +{ + "_id": { + "$oid": "68615eec76ec130012b3a9ea" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شله زرد", + "description": "برنج ایرانی،زعفران،هل و گلاب،شکر،خلال بادام", + "short_description": "", + "category": { + "$oid": "68615cf876ec130012b3a953" + }, + "index": 1, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T15:42:36.429Z" + }, + "updated_at": { + "$date": "2025-12-25T12:02:32.228Z" + }, + "__v": 0, + "image": "food_1751455743435.png" +}, +{ + "_id": { + "$oid": "68615f3676ec130012b3a9fe" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "حلوا", + "description": "آرد،شکر،روغن،هل و گلاب و زعفران", + "short_description": "", + "category": { + "$oid": "68615cf876ec130012b3a953" + }, + "index": 2, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T15:43:50.958Z" + }, + "updated_at": { + "$date": "2025-12-25T12:03:51.049Z" + }, + "__v": 0, + "image": "food_1751455702434.png" +}, +{ + "_id": { + "$oid": "68615f7c76ec130012b3aa0b" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "زیره جوش", + "description": "آرد،روغن حیوانی،پودر نبات،زیره و زردچوبه", + "short_description": "", + "category": { + "$oid": "68615cf876ec130012b3a953" + }, + "index": 3, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T15:45:00.481Z" + }, + "updated_at": { + "$date": "2025-12-25T12:02:05.066Z" + }, + "__v": 0, + "image": "food_1751455541519.png" +}, +{ + "_id": { + "$oid": "68615fc976ec130012b3aa1f" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی پنیری", + "description": "سیب زمینی سزخکرده،پنیر،پودر آویشن", + "short_description": "", + "category": { + "$oid": "68615ca976ec130012b3a94a" + }, + "index": 2, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T15:46:17.784Z" + }, + "updated_at": { + "$date": "2025-12-25T12:01:39.646Z" + }, + "__v": 0, + "image": "food_1751455318661.png" +}, +{ + "_id": { + "$oid": "6861605f76ec130012b3aa65" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی سرخ کرده", + "description": "", + "short_description": "", + "category": { + "$oid": "68615ca976ec130012b3a94a" + }, + "index": 1, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-29T15:48:47.594Z" + }, + "updated_at": { + "$date": "2025-12-25T12:04:15.754Z" + }, + "__v": 0, + "image": "food_1751455184309.png" +}, +{ + "_id": { + "$oid": "686277db76ec130012b3c5b5" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کشک و بادمجان", + "description": "بادمجان سرخ‌شده، کشک،نعنا و پیازداغ", + "short_description": "", + "category": { + "$oid": "68615ca976ec130012b3a94a" + }, + "index": 3, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-30T11:41:15.818Z" + }, + "updated_at": { + "$date": "2025-12-25T12:01:16.556Z" + }, + "__v": 0, + "image": "food_1751455143526.png" +}, +{ + "_id": { + "$oid": "6862781976ec130012b3c5c2" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میرزا قاسمی", + "description": "بادمجان کبابی،سیر،پوره گوجه،تخم مرغ", + "short_description": "", + "category": { + "$oid": "68615ca976ec130012b3a94a" + }, + "index": 4, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-30T11:42:17.655Z" + }, + "updated_at": { + "$date": "2025-12-25T12:00:47.754Z" + }, + "__v": 0, + "image": "food_1751455054797.png" +}, +{ + "_id": { + "$oid": "6862786076ec130012b3c5cf" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک بندری", + "description": "سوسیس،پیاز،رب،و سیب‌زمینی سرخ شده با دورچین ", + "short_description": "", + "category": { + "$oid": "68615ca976ec130012b3a94a" + }, + "index": 5, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-30T11:43:28.447Z" + }, + "updated_at": { + "$date": "2025-12-25T12:00:22.380Z" + }, + "__v": 0, + "image": "food_1751454996470.png" +}, +{ + "_id": { + "$oid": "6862789d76ec130012b3c5df" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آبدوغ خیار", + "description": "خیار،سبزی،کشمش،گردو،ماست ودوغ", + "short_description": "", + "category": { + "$oid": "68615ca976ec130012b3a94a" + }, + "index": 6, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-30T11:44:29.903Z" + }, + "updated_at": { + "$date": "2025-07-02T11:15:42.062Z" + }, + "__v": 0, + "image": "food_1751454938256.png" +}, +{ + "_id": { + "$oid": "686278be76ec130012b3c5f5" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد ماکارونی", + "description": "", + "short_description": "", + "category": { + "$oid": "68615ca976ec130012b3a94a" + }, + "index": 7, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-30T11:45:02.452Z" + }, + "updated_at": { + "$date": "2025-12-25T11:59:44.578Z" + }, + "__v": 0, + "image": "food_1751454495145.png" +}, +{ + "_id": { + "$oid": "686278e676ec130012b3c5ff" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بورانی اسفناج", + "description": "ماست،اسفناج،ادویه", + "short_description": "", + "category": { + "$oid": "68615ca976ec130012b3a94a" + }, + "index": 8, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-06-30T11:45:42.462Z" + }, + "updated_at": { + "$date": "2025-07-02T11:07:04.470Z" + }, + "__v": 0, + "image": "food_1751454418603.png" +}, +{ + "_id": { + "$oid": "6873a800029023001173cdce" + }, + "price": 2950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جوسی لوسی برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-13T12:35:12.927Z" + }, + "updated_at": { + "$date": "2025-07-13T12:35:12.927Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6873a821029023001173cdd8" + }, + "price": 3350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دوبل برگر", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4372045700b0061064bbb" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-13T12:35:45.790Z" + }, + "updated_at": { + "$date": "2025-07-13T12:35:45.790Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "687625c7555acb0012cfd79f" + }, + "price": 610000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس امریکانو 70/30", + "description": "", + "short_description": "", + "category": { + "$oid": "6876285f555acb0012cfd958" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T09:56:23.586Z" + }, + "updated_at": { + "$date": "2025-07-15T10:08:52.160Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762610555acb0012cfd7d6" + }, + "price": 760000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس امریکانو عربیکا", + "description": "", + "short_description": "", + "category": { + "$oid": "6876285f555acb0012cfd958" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T09:57:36.012Z" + }, + "updated_at": { + "$date": "2025-07-15T10:08:27.165Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762631555acb0012cfd7e7" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس امریکانو پرتقالی", + "description": "", + "short_description": "", + "category": { + "$oid": "6876285f555acb0012cfd958" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T09:58:09.195Z" + }, + "updated_at": { + "$date": "2025-07-15T10:08:16.342Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "687627dc555acb0012cfd923" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو 70/30", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:05:16.150Z" + }, + "updated_at": { + "$date": "2025-07-15T10:08:05.016Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "687628dd555acb0012cfd9b2" + }, + "price": 660000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس امریکانو 50/50", + "description": "", + "short_description": "", + "category": { + "$oid": "6876285f555acb0012cfd958" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:09:33.551Z" + }, + "updated_at": { + "$date": "2025-07-15T10:09:33.551Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "687628f3555acb0012cfd9bc" + }, + "price": 850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "6876285f555acb0012cfd958" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:09:55.153Z" + }, + "updated_at": { + "$date": "2025-07-15T10:09:55.153Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762909555acb0012cfd9c6" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس موکا", + "description": "", + "short_description": "", + "category": { + "$oid": "6876285f555acb0012cfd958" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:10:17.447Z" + }, + "updated_at": { + "$date": "2025-07-15T10:10:17.447Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762923555acb0012cfd9d0" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس کارامل ماکیاتو", + "description": "", + "short_description": "", + "category": { + "$oid": "6876285f555acb0012cfd958" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:10:43.302Z" + }, + "updated_at": { + "$date": "2025-07-15T10:10:43.302Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6876293e555acb0012cfd9e4" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس چاکلت ", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:11:10.065Z" + }, + "updated_at": { + "$date": "2025-07-15T10:11:10.065Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762958555acb0012cfd9ee" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک بری", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:11:36.426Z" + }, + "updated_at": { + "$date": "2025-07-15T10:11:36.426Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762986555acb0012cfda1b" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک لمون بری", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:12:22.079Z" + }, + "updated_at": { + "$date": "2025-07-15T10:12:22.079Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6876299a555acb0012cfda28" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک افتر ایت", + "description": "", + "short_description": "", + "category": { + "$oid": "65f436ef45700b0061064ba6" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:12:42.144Z" + }, + "updated_at": { + "$date": "2025-07-15T10:12:42.144Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "687629d6555acb0012cfda45" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیتروس بلو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:13:42.694Z" + }, + "updated_at": { + "$date": "2025-07-15T10:13:42.694Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "687629eb555acb0012cfda6f" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکو منگو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4370745700b0061064baf" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:14:03.794Z" + }, + "updated_at": { + "$date": "2025-07-15T10:14:03.794Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762a40555acb0012cfdab6" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دارک چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:15:28.492Z" + }, + "updated_at": { + "$date": "2025-07-15T10:15:28.492Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762a55555acb0012cfdac3" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پینک چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:15:49.910Z" + }, + "updated_at": { + "$date": "2025-07-15T10:15:49.910Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762b6f555acb0012cfdae7" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "وایت چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:20:31.661Z" + }, + "updated_at": { + "$date": "2025-07-15T10:20:31.661Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762b8e555acb0012cfdafb" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "فندوق چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:21:02.790Z" + }, + "updated_at": { + "$date": "2025-07-15T10:21:02.790Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762ba3555acb0012cfdb05" + }, + "price": 750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نارگیل چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:21:23.353Z" + }, + "updated_at": { + "$date": "2025-07-15T10:21:23.353Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762bba555acb0012cfdb0f" + }, + "price": 700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:21:46.011Z" + }, + "updated_at": { + "$date": "2025-07-15T10:21:46.011Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762bd9555acb0012cfdb19" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر نارگیل", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:22:17.122Z" + }, + "updated_at": { + "$date": "2025-07-15T10:22:17.122Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762beb555acb0012cfdb23" + }, + "price": 650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای کرک", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:22:35.737Z" + }, + "updated_at": { + "$date": "2025-07-15T10:22:35.737Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762c02555acb0012cfdb2d" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای لاته ", + "description": "", + "short_description": "", + "category": { + "$oid": "65ef0b823ad722005756bb1e" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:22:58.379Z" + }, + "updated_at": { + "$date": "2025-07-15T10:22:58.379Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762c40555acb0012cfdb38" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنه چیکن پستو", + "description": "", + "short_description": "", + "category": { + "$oid": "664626607d6ac200622a915c" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:24:00.780Z" + }, + "updated_at": { + "$date": "2025-07-15T10:24:00.780Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762c6d555acb0012cfdb50" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا ارابیاتا", + "description": "", + "short_description": "", + "category": { + "$oid": "664626607d6ac200622a915c" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:24:45.676Z" + }, + "updated_at": { + "$date": "2025-07-15T10:24:45.676Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762c88555acb0012cfdb5e" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاستا دیپ چیز", + "description": "", + "short_description": "", + "category": { + "$oid": "664626607d6ac200622a915c" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:25:12.156Z" + }, + "updated_at": { + "$date": "2025-07-15T10:25:12.156Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762cb2555acb0012cfdb6c" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوسیس المانی", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4375845700b0061064bd0" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:25:54.233Z" + }, + "updated_at": { + "$date": "2025-07-15T10:25:54.233Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762ccb555acb0012cfdb76" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سوسیس المانی با قارچ و پنیر", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4375845700b0061064bd0" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:26:19.747Z" + }, + "updated_at": { + "$date": "2025-07-15T10:26:19.747Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762cdf555acb0012cfdb80" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بندری", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4375845700b0061064bd0" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:26:39.414Z" + }, + "updated_at": { + "$date": "2025-07-15T10:26:39.414Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762cfb555acb0012cfdb8a" + }, + "price": 1500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بندری با قارچ و پنیر", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4375845700b0061064bd0" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:27:07.271Z" + }, + "updated_at": { + "$date": "2025-07-15T10:27:07.271Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762d36555acb0012cfdb99" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ فیله گریل ( بزرگ )", + "description": "", + "short_description": "", + "category": { + "$oid": "68762dfc555acb0012cfdbe2" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:28:06.201Z" + }, + "updated_at": { + "$date": "2025-07-15T10:32:26.244Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762d54555acb0012cfdba3" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ فیله گریل ( کوچک)", + "description": "", + "short_description": "", + "category": { + "$oid": "68762dfc555acb0012cfdbe2" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:28:36.167Z" + }, + "updated_at": { + "$date": "2025-07-15T10:32:11.799Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762d73555acb0012cfdbb0" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ الفردو", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4373d45700b0061064bc7" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:29:07.408Z" + }, + "updated_at": { + "$date": "2025-07-15T10:29:07.408Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762d89555acb0012cfdbba" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات داگ دیپ چیز", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4373d45700b0061064bc7" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:29:29.959Z" + }, + "updated_at": { + "$date": "2025-07-15T10:29:29.959Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762da6555acb0012cfdbc4" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد سزار گریل", + "description": "", + "short_description": "", + "category": { + "$oid": "667865cc7d6ac200622ec08b" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:29:58.923Z" + }, + "updated_at": { + "$date": "2025-07-15T10:29:58.923Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762e55555acb0012cfdc10" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ دنر گوشت", + "description": "", + "short_description": "", + "category": { + "$oid": "68762dfc555acb0012cfdbe2" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:32:53.866Z" + }, + "updated_at": { + "$date": "2025-07-15T10:32:53.866Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762e69555acb0012cfdc1a" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ دنر مرغ", + "description": "", + "short_description": "", + "category": { + "$oid": "68762dfc555acb0012cfdbe2" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:33:13.500Z" + }, + "updated_at": { + "$date": "2025-07-15T10:33:13.500Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762e7d555acb0012cfdc2a" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ دنر میکس", + "description": "", + "short_description": "", + "category": { + "$oid": "68762dfc555acb0012cfdbe2" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:33:33.337Z" + }, + "updated_at": { + "$date": "2025-07-15T10:33:33.337Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762eb3555acb0012cfdc3a" + }, + "price": 2750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پرس فیله گریل ۵ تیکه + سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4377d45700b0061064be5" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:34:27.802Z" + }, + "updated_at": { + "$date": "2025-07-15T10:35:29.682Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762ede555acb0012cfdc44" + }, + "price": 3100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پرس فیله گریل ۷ تیکه + سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4377d45700b0061064be5" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:35:10.159Z" + }, + "updated_at": { + "$date": "2025-07-15T10:35:41.398Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762f16555acb0012cfdc74" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ مرغ پستو", + "description": "", + "short_description": "", + "category": { + "$oid": "68762dfc555acb0012cfdbe2" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:36:06.678Z" + }, + "updated_at": { + "$date": "2025-07-15T10:36:06.678Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762f2b555acb0012cfdc7e" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پوره سیب زمینی", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:36:27.285Z" + }, + "updated_at": { + "$date": "2025-07-15T10:36:27.285Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762f53555acb0012cfdc8b" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ ژامبون سرد (بزرگ)", + "description": "", + "short_description": "", + "category": { + "$oid": "68762dfc555acb0012cfdbe2" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:37:07.136Z" + }, + "updated_at": { + "$date": "2025-07-15T10:37:07.136Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762f6e555acb0012cfdc95" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ ژامبون سرد ( کوچیک)", + "description": "", + "short_description": "", + "category": { + "$oid": "68762dfc555acb0012cfdbe2" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:37:34.394Z" + }, + "updated_at": { + "$date": "2025-07-15T10:37:57.369Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762fa1555acb0012cfdcb1" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ رست بیف", + "description": "", + "short_description": "", + "category": { + "$oid": "68762dfc555acb0012cfdbe2" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:38:25.994Z" + }, + "updated_at": { + "$date": "2025-07-15T10:38:25.994Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762fc1555acb0012cfdcbb" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هالو فرایز ( بزرگ) ", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:38:57.612Z" + }, + "updated_at": { + "$date": "2025-07-15T10:38:57.612Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68762fe4555acb0012cfdcc9" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هالو فرایز ( متوسط )", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:39:32.131Z" + }, + "updated_at": { + "$date": "2025-07-15T10:39:32.131Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68763017555acb0012cfdcd4" + }, + "price": 2350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن فرایز ( بزرگ )", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:40:23.085Z" + }, + "updated_at": { + "$date": "2025-07-15T10:40:23.085Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68763034555acb0012cfdce1" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن فرایز ( متوسط )", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:40:52.192Z" + }, + "updated_at": { + "$date": "2025-07-15T10:40:52.192Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6876306a555acb0012cfdceb" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی قارچ و پنیر ( بزرگ )", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:41:46.124Z" + }, + "updated_at": { + "$date": "2025-07-15T10:41:46.124Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68763083555acb0012cfdcf5" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب زمینی قارچ و پنیر ( متوسط )", + "description": "", + "short_description": "", + "category": { + "$oid": "65f4379045700b0061064bee" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:42:11.247Z" + }, + "updated_at": { + "$date": "2025-07-15T10:42:11.247Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68763273555acb0012cfde10" + }, + "price": 660000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو 50/50 ", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:50:27.182Z" + }, + "updated_at": { + "$date": "2025-07-15T10:50:27.182Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6876328e555acb0012cfde1a" + }, + "price": 610000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو 70/30 ", + "description": "", + "short_description": "", + "category": { + "$oid": "68762813555acb0012cfd937" + }, + "index": 0, + "storeId": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "created_at": { + "$date": "2025-07-15T10:50:54.072Z" + }, + "updated_at": { + "$date": "2025-07-15T10:50:54.072Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "687b994d49fd7200124fb606" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لمون بری", + "description": "پرتقال، پوره توت‌فرنگی، لیمو", + "short_description": "", + "category": { + "$oid": "6795ea3aa4463c0057e68d3a" + }, + "index": 1, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-07-19T13:10:37.313Z" + }, + "updated_at": { + "$date": "2025-08-24T10:50:27.707Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "687b998049fd7200124fb616" + }, + "price": 1770000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ملو", + "description": "هندوانه، شاتوت، سوئیت اند ساور", + "short_description": "", + "category": { + "$oid": "6795ea3aa4463c0057e68d3a" + }, + "index": 2, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-07-19T13:11:28.459Z" + }, + "updated_at": { + "$date": "2025-08-24T10:50:00.555Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "687b9a2949fd7200124fb648" + }, + "price": 1420000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس تی رد وانیل", + "description": "چای ترش سرددم، زعفران، سیروپ وانیل", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 12, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-07-19T13:14:17.094Z" + }, + "updated_at": { + "$date": "2025-11-27T16:41:07.637Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "687b9cc749fd7200124fb6af" + }, + "price": 4760000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ بوقلمون", + "description": "سینه بوقلمون، کاهو فرانسه، زیتون، ریحان ایتالیایی، سس پستو، گوجه خشک، پنیر خامه‌ای، پنیر موزارلا", + "short_description": "", + "category": { + "$oid": "6795eb06a4463c0057e68d76" + }, + "index": 5, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-07-19T13:25:27.603Z" + }, + "updated_at": { + "$date": "2025-12-23T14:19:29.821Z" + }, + "__v": 0, + "image": "food_1753185176937.png" +}, +{ + "_id": { + "$oid": "6883794a8d476b0011f66acf" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسموکی چیکن ", + "description": "150 گرم فیله مرغ دودی ", + "short_description": "", + "category": { + "$oid": "684be3fdf114460057d679fd" + }, + "index": 0, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-07-25T12:32:10.284Z" + }, + "updated_at": { + "$date": "2025-10-19T17:09:17.515Z" + }, + "__v": 0, + "image": "food_1760893752111.png" +}, +{ + "_id": { + "$oid": "688379d78d476b0011f66b0a" + }, + "price": 1400000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات پرو ", + "description": "پپرونی ، هالوپینو ، سس هالوپی ", + "short_description": "", + "category": { + "$oid": "684be3fdf114460057d679fd" + }, + "index": 0, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-07-25T12:34:31.939Z" + }, + "updated_at": { + "$date": "2025-10-19T17:07:41.223Z" + }, + "__v": 0, + "image": "food_1760893651025.png" +}, +{ + "_id": { + "$oid": "68837a2d8d476b0011f66b26" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استاف چیکن ", + "description": "فیله مرغ با پنیر و سوِيیت چیلی", + "short_description": "", + "category": { + "$oid": "684be3fdf114460057d679fd" + }, + "index": 0, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-07-25T12:35:57.535Z" + }, + "updated_at": { + "$date": "2025-10-19T17:12:58.542Z" + }, + "__v": 0, + "image": "food_1760893974847.png" +}, +{ + "_id": { + "$oid": "68837abb8d476b0011f66b51" + }, + "price": 3700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات پرونی ", + "description": "نان چیاباتا، پپرونی، بیکن بوقلمون، سس هالوپی، هالوپینو، وجه، پنیرسفید", + "short_description": "", + "category": { + "$oid": "684be428f114460057d67a06" + }, + "index": 6, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-07-25T12:38:19.156Z" + }, + "updated_at": { + "$date": "2025-10-20T17:43:30.999Z" + }, + "__v": 0, + "image": "food_1760982156044.png" +}, +{ + "_id": { + "$oid": "68837b248d476b0011f66b61" + }, + "price": 3900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن اسموکی ", + "description": "نان چیاباتا، فیله مرغ دودی، پنیر و اسفناج، سويیت چیلی، پنیر گودا، وجه، سس باربیکی", + "short_description": "", + "category": { + "$oid": "684be428f114460057d67a06" + }, + "index": 5, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-07-25T12:40:04.209Z" + }, + "updated_at": { + "$date": "2025-10-20T17:49:24.137Z" + }, + "__v": 0, + "image": "food_1760982559459.png" +}, +{ + "_id": { + "$oid": "68837b748d476b0011f66b89" + }, + "price": 3550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خامه و خردل ", + "description": "پاستا تازه، سس خامه و خردل، سیر، قارچ بلانچ، پنیر پارمسان، مغز گردو ", + "short_description": "", + "category": { + "$oid": "6847c6f5f114460057d617e1" + }, + "index": 0, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-07-25T12:41:24.016Z" + }, + "updated_at": { + "$date": "2025-10-20T17:28:22.462Z" + }, + "__v": 0, + "image": "food_1760981298852.png" +}, +{ + "_id": { + "$oid": "68837bfc8d476b0011f66b9f" + }, + "price": 3550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کرم ماشرومه ", + "description": "پاستا تازه، سس ماشرومه، قارچ کلاسیک استایل، پنیر پارمسان، جز هندی", + "short_description": "", + "category": { + "$oid": "6847c6f5f114460057d617e1" + }, + "index": 0, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-07-25T12:43:40.444Z" + }, + "updated_at": { + "$date": "2025-10-20T17:27:04.464Z" + }, + "__v": 0, + "image": "food_1760981202234.png" +}, +{ + "_id": { + "$oid": "68837c6f8d476b0011f66bbe" + }, + "price": 3750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز فتوچینی ", + "description": "پاستا تازه، سس پنیر، قارچ بلانچ، پارمسان، پچد", + "short_description": "", + "category": { + "$oid": "6847c6f5f114460057d617e1" + }, + "index": 0, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-07-25T12:45:35.823Z" + }, + "updated_at": { + "$date": "2025-10-20T17:26:08.740Z" + }, + "__v": 0, + "image": "food_1760981163990.png" +}, +{ + "_id": { + "$oid": "68837d438d476b0011f66c13" + }, + "price": 3900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپیرولینا پاستا ( روزهای شنبه و یکشنبه )", + "description": "پاستای تازه، سس کرم اسپیرولینا، بلوبری، کاکتوس، مغز گردو کارامالایز", + "short_description": "", + "category": { + "$oid": "684be3cff114460057d679ed" + }, + "index": 0, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-07-25T12:49:07.645Z" + }, + "updated_at": { + "$date": "2025-10-20T17:46:00.505Z" + }, + "__v": 0, + "image": "food_1760982358410.png" +}, +{ + "_id": { + "$oid": "6885fe5b9f7e1300117f8cc8" + }, + "price": 920000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پشن لایت ", + "description": "بلو کارسایو اب سیب اب لیمو سودا", + "short_description": "", + "category": { + "$oid": "67e99d66536282006224dc1f" + }, + "index": 6, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-07-27T10:24:27.185Z" + }, + "updated_at": { + "$date": "2025-07-27T10:24:27.185Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6888bd09c9c1e300120cb004" + }, + "price": 2570000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد مدیترانه‌ای", + "description": "", + "short_description": "", + "category": { + "$oid": "67960d18a4463c0057e693be" + }, + "index": 1, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-07-29T12:22:33.861Z" + }, + "updated_at": { + "$date": "2025-12-23T14:10:35.337Z" + }, + "__v": 0, + "image": "food_1753792542995.png" +}, +{ + "_id": { + "$oid": "6888bdacc9c1e300120cb028" + }, + "price": 2110000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پنیر برشته", + "description": "تخم مرغ، پنیر فتا، سبزی شوید", + "short_description": "", + "category": { + "$oid": "679b535bbd2ce200571493da" + }, + "index": 6, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-07-29T12:25:16.904Z" + }, + "updated_at": { + "$date": "2025-10-27T14:48:48.359Z" + }, + "__v": 0, + "image": "food_1753793163992.png" +}, +{ + "_id": { + "$oid": "6888beedc9c1e300120cb092" + }, + "price": 5240000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ساندویچ استیک", + "description": "گوشت راسته گوساله، سیب‌زمینی سرخ شده، پیاز کاراملی، روکولا، پنیر چدار، سس خردل عسل، نان چاباتا", + "short_description": "", + "category": { + "$oid": "6795eae6a4463c0057e68d61" + }, + "index": 6, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-07-29T12:30:37.199Z" + }, + "updated_at": { + "$date": "2025-12-23T14:16:23.388Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6888c211c9c1e300120cb1df" + }, + "price": 3180000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "حمص", + "description": "", + "short_description": "", + "category": { + "$oid": "67960d18a4463c0057e693be" + }, + "index": 4, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-07-29T12:44:01.531Z" + }, + "updated_at": { + "$date": "2025-12-23T14:12:30.743Z" + }, + "__v": 0, + "image": "food_1753795504991.png" +}, +{ + "_id": { + "$oid": "6888c315c9c1e300120cb212" + }, + "price": 2560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیکن رپ", + "description": "", + "short_description": "", + "category": { + "$oid": "6795eae6a4463c0057e68d61" + }, + "index": 7, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "image": "food_1753793299396.png", + "created_at": { + "$date": "2025-07-29T12:48:21.184Z" + }, + "updated_at": { + "$date": "2025-12-23T14:16:41.892Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6888c424c9c1e300120cb221" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نیمرو", + "description": "", + "short_description": "", + "category": { + "$oid": "679b535bbd2ce200571493da" + }, + "index": 1, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-07-29T12:52:52.331Z" + }, + "updated_at": { + "$date": "2025-10-18T12:47:02.781Z" + }, + "__v": 0, + "image": "food_1753793605530.png" +}, +{ + "_id": { + "$oid": "6888c47dc9c1e300120cb23e" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "املت", + "description": "", + "short_description": "", + "category": { + "$oid": "679b535bbd2ce200571493da" + }, + "index": 2, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "image": "food_1753793659160.png", + "created_at": { + "$date": "2025-07-29T12:54:21.577Z" + }, + "updated_at": { + "$date": "2025-10-18T12:47:52.266Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6891ce208315560011d07a73" + }, + "price": 1840000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست سیب‌زمینی و قارچ", + "description": "رست سیب‌زمینی، سس قارچ", + "short_description": "", + "category": { + "$oid": "67960d18a4463c0057e693be" + }, + "index": 8, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-08-05T09:25:52.245Z" + }, + "updated_at": { + "$date": "2025-12-23T14:10:53.464Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6891ce818315560011d07a98" + }, + "price": 2710000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست سیب‌زمینی و بیکن", + "description": "رست سیب‌زمینی، بیکن، پنیر چدار", + "short_description": "", + "category": { + "$oid": "67960d18a4463c0057e693be" + }, + "index": 6, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-08-05T09:27:29.931Z" + }, + "updated_at": { + "$date": "2025-12-23T14:11:13.080Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "689767875d963d00117b1d00" + }, + "price": 680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 14, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1754752902259.png", + "created_at": { + "$date": "2025-08-09T15:21:43.566Z" + }, + "updated_at": { + "$date": "2025-08-09T15:21:43.566Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "689767b55d963d00117b1d0e" + }, + "price": 720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز گل سرخ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 15, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1754752948593.png", + "created_at": { + "$date": "2025-08-09T15:22:29.697Z" + }, + "updated_at": { + "$date": "2025-08-09T15:22:29.697Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "689767dc5d963d00117b1d3a" + }, + "price": 720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز و گل یاسمن", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 16, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1754752987903.png", + "created_at": { + "$date": "2025-08-09T15:23:08.978Z" + }, + "updated_at": { + "$date": "2025-08-09T15:23:08.978Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "689768285d963d00117b1d44" + }, + "price": 720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سبز لیمو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 17, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1754753062762.png", + "created_at": { + "$date": "2025-08-09T15:24:24.063Z" + }, + "updated_at": { + "$date": "2025-08-09T15:24:24.063Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "689768ce5d963d00117b1d6d" + }, + "price": 720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سفید نخدی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 18, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1754753229195.png", + "created_at": { + "$date": "2025-08-09T15:27:10.488Z" + }, + "updated_at": { + "$date": "2025-08-24T16:16:56.571Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "689768f75d963d00117b1d90" + }, + "price": 720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای سفید مخملی", + "description": "شیرین و ملایم", + "short_description": "", + "category": { + "$oid": "67e99d36536282006224dc0d" + }, + "index": 19, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1754753270649.png", + "created_at": { + "$date": "2025-08-09T15:27:51.765Z" + }, + "updated_at": { + "$date": "2025-08-09T15:30:41.369Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "689b4e9e9aa1f30012879e4f" + }, + "price": 1470000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "میت درینک", + "description": "سیروپ بلو کاراسائو، سیروپ نارگیل، آب انبه، آب پرتقال، آلوئه ورا، آبلیمو", + "short_description": "", + "category": { + "$oid": "67a5fee4bd2ce20057159ffe" + }, + "index": 2, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-08-12T14:24:30.409Z" + }, + "updated_at": { + "$date": "2025-09-06T18:59:28.404Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "689b4ee69aa1f30012879e59" + }, + "price": 1250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "بلک پشن", + "description": "سیروپ کرن بری، سیروپ پشن فروت، آبلیمو، آب پرتقال، کربن فعال", + "short_description": "", + "category": { + "$oid": "67a5fee4bd2ce20057159ffe" + }, + "index": 3, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-08-12T14:25:42.034Z" + }, + "updated_at": { + "$date": "2025-09-06T18:58:53.724Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "689b4f379aa1f30012879e73" + }, + "price": 1200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اوشن بلو", + "description": "سیروپ بلو کاراسائو، سیروپ کرن بری، سیروپ نعنا، آبلیمو، نمک، سودا", + "short_description": "", + "category": { + "$oid": "67a5fee4bd2ce20057159ffe" + }, + "index": 4, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-08-12T14:27:03.258Z" + }, + "updated_at": { + "$date": "2025-09-06T18:58:34.913Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "689b4f649aa1f30012879e89" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "استمر", + "description": "سیروپ وانیل، بادام درختی، شیر", + "short_description": "", + "category": { + "$oid": "67b2531153628200621fd8f7" + }, + "index": 10, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-08-12T14:27:48.138Z" + }, + "updated_at": { + "$date": "2025-09-06T22:20:58.637Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68a1c60de3a6650011ccabcb" + }, + "price": 1680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس ماچا توت فرنگی", + "description": "ماچا شیر یخ پوره توت فرنگی سیروپ توت فرنگی", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 11, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-08-17T12:07:41.837Z" + }, + "updated_at": { + "$date": "2025-09-06T14:52:05.388Z" + }, + "__v": 0, + "image": "food_1755436714685.png" +}, +{ + "_id": { + "$oid": "68a1c66de3a6650011ccabde" + }, + "price": 1360000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس ماچا انبه", + "description": "ماچا شیر یخ سیروپ انبه", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 12, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-08-17T12:09:17.085Z" + }, + "updated_at": { + "$date": "2025-09-06T14:51:37.396Z" + }, + "__v": 0, + "image": "food_1755436648303.png" +}, +{ + "_id": { + "$oid": "68a1c918e3a6650011ccabf2" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس ماچا", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 13, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-08-17T12:20:40.814Z" + }, + "updated_at": { + "$date": "2025-09-06T14:51:16.778Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68a1cf46e3a6650011ccac36" + }, + "price": 1310000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس تی توت فرنگی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 14, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-08-17T12:47:02.845Z" + }, + "updated_at": { + "$date": "2025-09-06T14:50:59.584Z" + }, + "__v": 0, + "image": "food_1755436593841.png" +}, +{ + "_id": { + "$oid": "68a1d337e3a6650011ccac8a" + }, + "price": 880000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس تی لیمو", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 15, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-08-17T13:03:51.050Z" + }, + "updated_at": { + "$date": "2025-09-06T14:50:42.377Z" + }, + "__v": 0, + "image": "food_1755436507683.png" +}, +{ + "_id": { + "$oid": "68a4370be3a6650011cce904" + }, + "price": 1900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز فرایز مدیوم", + "description": "", + "short_description": "", + "category": { + "$oid": "6225095ca03b80e0a44ef756" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2025-08-19T08:34:19.938Z" + }, + "updated_at": { + "$date": "2025-08-19T09:10:57.169Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68a439fbe3a6650011ccea03" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لونا", + "description": "آب آلبالو +آب انبه+لیموتازه+سیروپ", + "short_description": "", + "category": { + "$oid": "62811f18d65610bd301c5a4b" + }, + "index": 0, + "storeId": { + "$oid": "6210b063adf126141b26173d" + }, + "created_at": { + "$date": "2025-08-19T08:46:51.777Z" + }, + "updated_at": { + "$date": "2025-08-19T08:46:51.777Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68af240dfac0b8001288f47d" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سالاد کلم", + "description": "کلم،ذرت،ژامبون،ادویه مخصوص،سس مخصوص", + "short_description": "", + "category": { + "$oid": "64b4e68898ff3c741448df04" + }, + "index": 0, + "storeId": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "created_at": { + "$date": "2025-08-27T15:28:13.247Z" + }, + "updated_at": { + "$date": "2025-08-27T15:29:13.516Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68b81cbc2fd5a600120077e5" + }, + "price": 1850000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آیس پسته", + "description": "3 اسکوپ بستنی وانیل پسته ، موز خورد شده ", + "short_description": "", + "category": { + "$oid": "673064e6c3c0100063e6bf76" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-09-03T10:47:24.635Z" + }, + "updated_at": { + "$date": "2025-11-04T11:12:32.067Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68b993eb49f83f001267cdaf" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "سبله توت فرنگی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 20, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1756992490158.png", + "created_at": { + "$date": "2025-09-04T13:28:11.713Z" + }, + "updated_at": { + "$date": "2025-11-27T11:45:49.384Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68bc562e49f83f0012681be5" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو 50/50", + "description": "", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1757173293195.png", + "created_at": { + "$date": "2025-09-06T15:41:34.851Z" + }, + "updated_at": { + "$date": "2025-11-25T13:53:13.116Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68bcbaa449f83f0012683061" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "مارشمالو چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "67b2531153628200621fd8f7" + }, + "index": 77, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-09-06T22:50:12.174Z" + }, + "updated_at": { + "$date": "2025-09-06T22:50:12.174Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68bcbaf749f83f001268307d" + }, + "price": 670000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای لته", + "description": "شیر چای", + "short_description": "", + "category": { + "$oid": "67a5cbf3bd2ce20057159807" + }, + "index": 78, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-09-06T22:51:35.260Z" + }, + "updated_at": { + "$date": "2025-09-06T22:51:35.260Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68bcbb7849f83f0012683090" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو ماکیاتو", + "description": "لکه شیر اسپرسو", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 79, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-09-06T22:53:44.040Z" + }, + "updated_at": { + "$date": "2025-09-06T22:53:44.040Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68bcbbc149f83f00126830a2" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رومانو ", + "description": "اسپرسو لیمو ", + "short_description": "", + "category": { + "$oid": "679b8217bd2ce20057149938" + }, + "index": 80, + "storeId": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "created_at": { + "$date": "2025-09-06T22:54:57.137Z" + }, + "updated_at": { + "$date": "2025-09-06T22:54:57.137Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68bec6be49f83f0012685b09" + }, + "price": 730000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکی نیویورکی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 23, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-09-08T12:06:22.568Z" + }, + "updated_at": { + "$date": "2025-12-22T14:55:51.341Z" + }, + "__v": 0, + "image": "food_1766415350354.png" +}, +{ + "_id": { + "$oid": "68c06621b2e223001253df7e" + }, + "price": 1560000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پامکین لاته", + "description": "سیروپ کدو حلوایی / پیشنهاد میشه ", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 4, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1757439519150.png", + "created_at": { + "$date": "2025-09-09T17:38:41.666Z" + }, + "updated_at": { + "$date": "2025-12-02T14:29:54.113Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68c066a6b2e223001253dfa3" + }, + "price": 2040000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ایس پامکین لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d4f536282006224dc16" + }, + "index": 16, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1757439652703.png", + "created_at": { + "$date": "2025-09-09T17:40:54.554Z" + }, + "updated_at": { + "$date": "2025-10-04T13:30:55.432Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68c915e503c3c700124a249c" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نان سنگک سنتی", + "description": "", + "short_description": "", + "category": { + "$oid": "68c9154003c3c700124a2481" + }, + "index": 1, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-09-16T07:46:45.187Z" + }, + "updated_at": { + "$date": "2025-09-16T07:46:45.187Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68c9163503c3c700124a24ab" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کشک اضافه", + "description": "یک پیاله کوچک کشک غلیظ اعلا", + "short_description": "", + "category": { + "$oid": "68c9154003c3c700124a2481" + }, + "index": 2, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-09-16T07:48:05.523Z" + }, + "updated_at": { + "$date": "2025-09-16T07:50:24.441Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68c916ad03c3c700124a24c1" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نعنا داغ یا پیاز داغ ", + "description": "یک پیاله کوچک نعنا داغ یا پیاز داغ اضافه", + "short_description": "", + "category": { + "$oid": "68c9154003c3c700124a2481" + }, + "index": 3, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-09-16T07:50:05.499Z" + }, + "updated_at": { + "$date": "2025-09-16T07:50:05.499Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68c917b903c3c700124a251d" + }, + "price": 200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سبزی خوردن تازه", + "description": "یک سبد سبزی خوردن تازه ", + "short_description": "", + "category": { + "$oid": "68c9154003c3c700124a2481" + }, + "index": 4, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-09-16T07:54:33.438Z" + }, + "updated_at": { + "$date": "2025-09-16T07:54:33.438Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68c93c7c03c3c700124a2a93" + }, + "price": 900000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیرانبه", + "description": "شیرتازه روز ، 150 گرم میوه انبه ", + "short_description": "", + "category": { + "$oid": "673064fdc3c0100063e6bf7f" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-09-16T10:31:24.121Z" + }, + "updated_at": { + "$date": "2025-09-16T10:31:24.121Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68c93e3703c3c700124a2ad6" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر نارگیل", + "description": "شیر تازه پرچرب ، نارگیل 3 پیمانه ، بستنی نارگیل 1 اسکوپ ، بدون هیچگونه افزودنی", + "short_description": "", + "category": { + "$oid": "673064fdc3c0100063e6bf7f" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-09-16T10:38:47.182Z" + }, + "updated_at": { + "$date": "2025-09-16T10:39:56.895Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68cac2d703c3c700124a5471" + }, + "price": 540000, + "stock": 1, + "static_discount": 0, + "active": false, + "name": "اکلر قهوه کارامل", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 16, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-09-17T14:16:55.066Z" + }, + "updated_at": { + "$date": "2025-11-25T13:59:11.580Z" + }, + "__v": 0, + "image": "food_1759326002631.png" +}, +{ + "_id": { + "$oid": "68da622fed9f6a001294b28e" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استرابری کیس - Strawberry kiss", + "description": "", + "short_description": "", + "category": { + "$oid": "68da61cbed9f6a001294b26b" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-09-29T10:40:47.482Z" + }, + "updated_at": { + "$date": "2025-09-29T10:40:47.482Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68da6252ed9f6a001294b2a3" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "افسون afsoon", + "description": "", + "short_description": "", + "category": { + "$oid": "68da61cbed9f6a001294b26b" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-09-29T10:41:22.059Z" + }, + "updated_at": { + "$date": "2025-09-29T10:41:22.059Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68da6271ed9f6a001294b2ad" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "یناکولادا pina colada", + "description": "", + "short_description": "", + "category": { + "$oid": "68da61cbed9f6a001294b26b" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-09-29T10:41:53.566Z" + }, + "updated_at": { + "$date": "2025-09-29T10:41:53.566Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68da628eed9f6a001294b2b7" + }, + "price": 1300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": " آب میوه طبیعی natural fruit juice", + "description": "", + "short_description": "", + "category": { + "$oid": "68da61cbed9f6a001294b26b" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-09-29T10:42:22.460Z" + }, + "updated_at": { + "$date": "2025-11-03T19:24:09.949Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68da62cbed9f6a001294b2c1" + }, + "price": 1100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": " پتر piter", + "description": "", + "short_description": "", + "category": { + "$oid": "68da61cbed9f6a001294b26b" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-09-29T10:43:23.315Z" + }, + "updated_at": { + "$date": "2025-09-29T11:14:40.390Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68e4fbf36c387f001283b3a4" + }, + "price": 1650000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چیز کیک شکلاتی", + "description": "", + "short_description": "", + "category": { + "$oid": "6208a93b1ee4b0270db4c715" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "image": "food_1759837170128.png", + "created_at": { + "$date": "2025-10-07T11:39:31.818Z" + }, + "updated_at": { + "$date": "2025-10-07T11:39:31.818Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68f38b910895bf0012680ab8" + }, + "price": 2740000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تیرامیسو", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 1, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-18T12:44:01.034Z" + }, + "updated_at": { + "$date": "2025-12-23T13:58:23.566Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68f632a39b37ad00121a9052" + }, + "price": 1520000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش به", + "description": "چای به, چوب دارچین, زنجبیل تازه", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 5, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-20T13:01:23.900Z" + }, + "updated_at": { + "$date": "2025-10-27T14:26:57.260Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68f6330d9b37ad00121a9072" + }, + "price": 1580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش گل گاو زبان", + "description": "گل گاو زبان, به لیمو, بهارنارنج", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 4, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-20T13:03:09.387Z" + }, + "updated_at": { + "$date": "2025-10-27T14:27:22.121Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68f67ece9b37ad00121a9f69" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیب کیوی", + "description": "", + "short_description": "", + "category": { + "$oid": "684be447f114460057d67a0f" + }, + "index": 0, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "created_at": { + "$date": "2025-10-20T18:26:22.634Z" + }, + "updated_at": { + "$date": "2025-10-20T18:26:40.831Z" + }, + "__v": 0, + "image": "food_1760984798612.png" +}, +{ + "_id": { + "$oid": "68f67fb49b37ad00121a9fbd" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "موهیتو", + "description": "", + "short_description": "", + "category": { + "$oid": "684be447f114460057d67a0f" + }, + "index": 0, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "image": "food_1760985010771.png", + "created_at": { + "$date": "2025-10-20T18:30:12.530Z" + }, + "updated_at": { + "$date": "2025-10-20T18:30:12.530Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68f680079b37ad00121a9fdb" + }, + "price": 550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استوایی", + "description": "", + "short_description": "", + "category": { + "$oid": "684be447f114460057d67a0f" + }, + "index": 17, + "storeId": { + "$oid": "6847c5f3f114460057d617bf" + }, + "image": "food_1760985092729.png", + "created_at": { + "$date": "2025-10-20T18:31:35.651Z" + }, + "updated_at": { + "$date": "2025-10-20T18:31:35.651Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68f68c369b37ad00121aa222" + }, + "price": 1920000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کوکو هات چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6795eaa0a4463c0057e68d58" + }, + "index": 1, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-20T19:23:34.843Z" + }, + "updated_at": { + "$date": "2025-10-20T19:23:34.843Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68f68c749b37ad00121aa23f" + }, + "price": 1940000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای کرک", + "description": "", + "short_description": "", + "category": { + "$oid": "6795eaa0a4463c0057e68d58" + }, + "index": 13, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-20T19:24:36.327Z" + }, + "updated_at": { + "$date": "2025-11-15T14:16:39.504Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff7c12685b61001121b5bf" + }, + "price": 1830000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسنس", + "description": "آب انار، آب لبو, سماق", + "short_description": "", + "category": { + "$oid": "6795ea3aa4463c0057e68d3a" + }, + "index": 4, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T14:05:06.867Z" + }, + "updated_at": { + "$date": "2025-10-27T14:05:06.867Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff8481685b61001121b774" + }, + "price": 1660000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش بری", + "description": "ترکیب کرن بری, توت فرنگی و زرشک", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 6, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T14:41:05.769Z" + }, + "updated_at": { + "$date": "2025-10-27T14:41:05.769Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff8516685b61001121b787" + }, + "price": 1680000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش انبه", + "description": "لوندر, بابونه, انبه", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 7, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T14:43:34.084Z" + }, + "updated_at": { + "$date": "2025-10-27T14:43:34.084Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff8567685b61001121b7ac" + }, + "price": 1620000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش سیب", + "description": "سیب, هل و استویا", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 8, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T14:44:55.639Z" + }, + "updated_at": { + "$date": "2025-10-27T14:44:55.639Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff8bc0685b61001121ba11" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک هویج گردو", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 20, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T15:12:00.376Z" + }, + "updated_at": { + "$date": "2025-12-23T13:54:47.959Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff8be6685b61001121ba1b" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک سیب دارچین", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 21, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T15:12:38.982Z" + }, + "updated_at": { + "$date": "2025-12-23T13:55:27.543Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff8c0b685b61001121ba25" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک کدو حلوایی", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 22, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T15:13:15.338Z" + }, + "updated_at": { + "$date": "2025-12-23T13:55:07.966Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff8c42685b61001121ba2f" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کیک کشمش گردو", + "description": "", + "short_description": "", + "category": { + "$oid": "67961856a4463c0057e6963e" + }, + "index": 23, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T15:14:10.962Z" + }, + "updated_at": { + "$date": "2025-12-23T13:56:45.681Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff8fbb685b61001121bacf" + }, + "price": 1600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کلدبرو ۷۰/۳۰", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9f3a4463c0057e68d31" + }, + "index": 11, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T15:28:59.980Z" + }, + "updated_at": { + "$date": "2025-12-09T12:49:50.643Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff9157685b61001121bbdc" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ کارامل نمکی دست ساز", + "description": "", + "short_description": "", + "category": { + "$oid": "68ff8ead685b61001121ba9b" + }, + "index": 1, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T15:35:51.985Z" + }, + "updated_at": { + "$date": "2025-10-27T15:35:51.985Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff9179685b61001121bbf8" + }, + "price": 500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ گاناش شکلات دست ساز", + "description": "", + "short_description": "", + "category": { + "$oid": "68ff8ead685b61001121ba9b" + }, + "index": 2, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T15:36:25.379Z" + }, + "updated_at": { + "$date": "2025-10-27T15:36:25.379Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff9258685b61001121bc4d" + }, + "price": 450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "سیروپ", + "description": "نارگیل/ فندوق/ لوتوس/ وانیل", + "short_description": "", + "category": { + "$oid": "68ff8ead685b61001121ba9b" + }, + "index": 3, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T15:40:08.147Z" + }, + "updated_at": { + "$date": "2025-10-27T15:40:08.147Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff92bd685b61001121bc63" + }, + "price": 590000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر بادام گیاهی", + "description": "", + "short_description": "", + "category": { + "$oid": "68ff8ead685b61001121ba9b" + }, + "index": 4, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T15:41:49.351Z" + }, + "updated_at": { + "$date": "2025-10-27T15:41:49.351Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff9328685b61001121bc8a" + }, + "price": 380000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیر نارگیل", + "description": "", + "short_description": "", + "category": { + "$oid": "68ff8ead685b61001121ba9b" + }, + "index": 5, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T15:43:36.195Z" + }, + "updated_at": { + "$date": "2025-10-27T15:43:36.195Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ff9ea8685b61001121bf7f" + }, + "price": 480000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "تاپینگ خامه", + "description": "", + "short_description": "", + "category": { + "$oid": "68ff8ead685b61001121ba9b" + }, + "index": 6, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T16:32:40.871Z" + }, + "updated_at": { + "$date": "2025-10-27T16:32:40.871Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ffc83e685b61001121ccaa" + }, + "price": 2180000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پامکین لاته", + "description": "پوره کدو حلوایی, اسپرسو 7030, شیر", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 15, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T19:30:06.738Z" + }, + "updated_at": { + "$date": "2025-10-27T19:30:06.738Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ffc8b3685b61001121cce8" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جینجر شات لبو", + "description": "آب لبو, لیمو, زنجبیل", + "short_description": "", + "category": { + "$oid": "6795ea3aa4463c0057e68d3a" + }, + "index": 9, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T19:32:03.562Z" + }, + "updated_at": { + "$date": "2025-10-27T19:32:03.562Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "68ffc900685b61001121cd07" + }, + "price": 1150000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جینجر شات پرتقال", + "description": "آب پرتقال, لیمو, زنجبیل", + "short_description": "", + "category": { + "$oid": "6795ea3aa4463c0057e68d3a" + }, + "index": 10, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-10-27T19:33:20.823Z" + }, + "updated_at": { + "$date": "2025-10-27T19:33:20.823Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "690113a7685b61001121e6cd" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نیمرو بیکن (تند)", + "description": "تخم مرغ، بیکن گوشت، هالوپین، دورچین به همراه نان", + "short_description": "", + "category": { + "$oid": "62deac91faacb066e12087e7" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2025-10-28T19:04:07.037Z" + }, + "updated_at": { + "$date": "2025-12-09T12:01:42.564Z" + }, + "__v": 0, + "image": "food_1765281700365.png" +}, +{ + "_id": { + "$oid": "690113d7685b61001121e6d7" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نیمرو بیف", + "description": "تخم مرغ، گوشت رست بیف، پنیر پیتزا، دورچین به همراه نان", + "short_description": "", + "category": { + "$oid": "62deac91faacb066e12087e7" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2025-10-28T19:04:55.105Z" + }, + "updated_at": { + "$date": "2025-12-09T12:00:15.560Z" + }, + "__v": 0, + "image": "food_1765281612636.png" +}, +{ + "_id": { + "$oid": "69011496685b61001121e715" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پرشین برک", + "description": "انتخابی (املت ساده، نیمرو، سوسیس تخم مرغ) دورچین به همراه نان", + "short_description": "", + "category": { + "$oid": "62deac91faacb066e12087e7" + }, + "index": 0, + "storeId": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "created_at": { + "$date": "2025-10-28T19:08:06.027Z" + }, + "updated_at": { + "$date": "2025-11-13T11:52:30.664Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6909e00e2d486c0012858937" + }, + "price": 1800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "شیک موز پسته ", + "description": "4 اسکوپ بستنی وانیل ، موز تازه ، پودر پسته", + "short_description": "", + "category": { + "$oid": "67305804c3c0100063e6bc62" + }, + "index": 12, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-11-04T11:14:22.105Z" + }, + "updated_at": { + "$date": "2025-11-04T11:14:22.105Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "690a53af2d486c0012859df8" + }, + "price": 1580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش آرامش", + "description": "گل گاو زبان, سنبل الطیب, لیموعمانی", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 9, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-11-04T19:27:43.571Z" + }, + "updated_at": { + "$date": "2025-11-04T19:27:43.571Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "690df7a92d486c001285e75f" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "جوجه کباب سیخ چوبی", + "description": "۳۶۰ گرم فیله مرغ+برنج ایرانی ودورچین", + "short_description": "", + "category": { + "$oid": "68612389a67e8f0012d55d2a" + }, + "index": 1, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-11-07T13:44:09.085Z" + }, + "updated_at": { + "$date": "2025-11-09T08:02:08.640Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "690f36c12d486c0012860990" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پای کدو حلوایی", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99b4c536282006224db80" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1762604734494.png", + "created_at": { + "$date": "2025-11-08T12:25:37.903Z" + }, + "updated_at": { + "$date": "2025-11-08T12:25:37.903Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69104ce02d486c0012861973" + }, + "price": 2500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "خوراک جوجه ", + "description": "۳۶۰ گرم فیله مرغ +دورچین", + "short_description": "", + "category": { + "$oid": "68612389a67e8f0012d55d2a" + }, + "index": 2, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-11-09T08:12:16.923Z" + }, + "updated_at": { + "$date": "2025-11-09T08:12:16.923Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69188a61b2d2da00122f7052" + }, + "price": 1640000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دارک چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6795eaa0a4463c0057e68d58" + }, + "index": 3, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-11-15T14:12:49.266Z" + }, + "updated_at": { + "$date": "2025-11-15T14:12:49.266Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69188a7fb2d2da00122f705f" + }, + "price": 1720000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6795eaa0a4463c0057e68d58" + }, + "index": 10, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-11-15T14:13:19.377Z" + }, + "updated_at": { + "$date": "2025-11-15T14:17:06.601Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69188abbb2d2da00122f706c" + }, + "price": 1640000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ناتی چاکلت", + "description": "", + "short_description": "", + "category": { + "$oid": "6795eaa0a4463c0057e68d58" + }, + "index": 5, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-11-15T14:14:19.232Z" + }, + "updated_at": { + "$date": "2025-11-15T14:14:19.232Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "691b3c7022cbfe001218b9ca" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای کرک", + "description": "چای کرک زعفرانی", + "short_description": "", + "category": { + "$oid": "68612462a67e8f0012d55d48" + }, + "index": 9, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-11-17T15:17:04.480Z" + }, + "updated_at": { + "$date": "2025-11-17T15:17:04.480Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "691b3c9522cbfe001218b9d4" + }, + "price": 600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو", + "description": "", + "short_description": "", + "category": { + "$oid": "68612462a67e8f0012d55d48" + }, + "index": 10, + "storeId": { + "$oid": "686100dd9086300011bdf7d0" + }, + "created_at": { + "$date": "2025-11-17T15:17:41.505Z" + }, + "updated_at": { + "$date": "2025-11-17T15:17:41.505Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6925aeedb781ca001170a6f7" + }, + "price": 4260000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا سیر استیک", + "description": "", + "short_description": "", + "category": { + "$oid": "6925a5d9b781ca001170a50d" + }, + "index": 1, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-11-25T13:28:13.507Z" + }, + "updated_at": { + "$date": "2025-11-25T13:28:13.507Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6925af6fb781ca001170a704" + }, + "price": 4370000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا رست بیف", + "description": "راسته گوساله 100گرم . پنیرمزرلا . سس خامه . و.... ", + "short_description": "", + "category": { + "$oid": "6925a5d9b781ca001170a50d" + }, + "index": 2, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-11-25T13:30:23.839Z" + }, + "updated_at": { + "$date": "2025-11-25T13:31:11.802Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6925b092b781ca001170a73f" + }, + "price": 2700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا پولو", + "description": "فیله مرغ 120 گرم . پنیر مزرلا . قارچ . سس مارینارا و...", + "short_description": "", + "category": { + "$oid": "6925a5d9b781ca001170a50d" + }, + "index": 3, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-11-25T13:35:14.609Z" + }, + "updated_at": { + "$date": "2025-12-06T13:51:43.441Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6925b136b781ca001170a74d" + }, + "price": 3910000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا میکس", + "description": "فیله گوساله 40 گرم . فیله مرغ 60 گرم . قارچ . پنیرمزرلا . و....", + "short_description": "", + "category": { + "$oid": "6925a5d9b781ca001170a50d" + }, + "index": 4, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-11-25T13:37:58.848Z" + }, + "updated_at": { + "$date": "2025-11-25T13:37:58.848Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6925b16db781ca001170a75a" + }, + "price": 1950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نان سیر ", + "description": "", + "short_description": "", + "category": { + "$oid": "6925a5d9b781ca001170a50d" + }, + "index": 5, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-11-25T13:38:53.065Z" + }, + "updated_at": { + "$date": "2025-11-25T13:38:53.065Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6925ec13b781ca001170b232" + }, + "price": 1760000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپرسو دی کف", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 12, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-11-25T17:49:07.658Z" + }, + "updated_at": { + "$date": "2025-11-25T17:49:07.658Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6925ec44b781ca001170b245" + }, + "price": 1760000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "آمریکانو دی کف", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e956a4463c0057e68d0c" + }, + "index": 13, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-11-25T17:49:56.422Z" + }, + "updated_at": { + "$date": "2025-11-25T17:49:56.422Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "6925ecd9b781ca001170b291" + }, + "price": 2580000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "V60 کلمبیا بیبی گیشا", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9f3a4463c0057e68d31" + }, + "index": 3, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-11-25T17:52:25.461Z" + }, + "updated_at": { + "$date": "2025-12-09T12:53:38.472Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69287f48b781ca001170ed5b" + }, + "price": 1550000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دمنوش آویشن", + "description": "آویشن, زنجبیل, لیموعمانی, بهلیمو", + "short_description": "", + "category": { + "$oid": "679615c6a4463c0057e695b4" + }, + "index": 10, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-11-27T16:41:44.696Z" + }, + "updated_at": { + "$date": "2025-11-27T16:41:44.696Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "692eeae6a74f3300133ce6ff" + }, + "price": 1000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "چای کرک", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d92536282006224dc4c" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-02T13:34:30.143Z" + }, + "updated_at": { + "$date": "2025-12-02T13:35:52.789Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "692eeb14a74f3300133ce714" + }, + "price": 950000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماسالا", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d92536282006224dc4c" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-02T13:35:16.103Z" + }, + "updated_at": { + "$date": "2025-12-02T14:38:27.230Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "692eebe9a74f3300133ce751" + }, + "price": 1350000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پاور شات", + "description": "اسپرسو و کره", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 8, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-02T13:38:49.241Z" + }, + "updated_at": { + "$date": "2025-12-02T13:39:47.475Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "692eee7ca74f3300133ce814" + }, + "price": 2100000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-02T13:49:48.651Z" + }, + "updated_at": { + "$date": "2025-12-02T13:49:48.651Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "692eeef9a74f3300133ce833" + }, + "price": 2250000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته پسته", + "description": "", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-02T13:51:53.271Z" + }, + "updated_at": { + "$date": "2025-12-02T13:51:53.271Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "692eefdba74f3300133ce871" + }, + "price": 800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "گلدن میلک", + "description": "زرد چوبه و شیر انتی اکسیدان بالا ضد التهاب درمان درد و خشکی مفاصل", + "short_description": "", + "category": { + "$oid": "67e99dbf536282006224dc58" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-02T13:55:39.993Z" + }, + "updated_at": { + "$date": "2025-12-02T13:55:39.993Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "692ef0eaa74f3300133ce8db" + }, + "price": 2000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پرشین لاته", + "description": "قهوه . شیر .هل .کره پسته .گلاب . زعفران ", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-02T14:00:10.277Z" + }, + "updated_at": { + "$date": "2025-12-02T14:00:10.277Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "692ef1a1a74f3300133ce90c" + }, + "price": 1450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "ماچا لاته", + "description": "", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-02T14:03:13.664Z" + }, + "updated_at": { + "$date": "2025-12-02T14:03:13.664Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "692ef21ea74f3300133ce92c" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "افوگاتو پسته", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d78536282006224dc28" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-02T14:05:18.745Z" + }, + "updated_at": { + "$date": "2025-12-02T14:50:07.710Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "692ef538a74f3300133ce9a1" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "افوگاتو شکلات ", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d78536282006224dc28" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-02T14:18:32.144Z" + }, + "updated_at": { + "$date": "2025-12-02T14:48:36.889Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "692ef6dba74f3300133cea10" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "افوگاتو لوتوس", + "description": "", + "short_description": "", + "category": { + "$oid": "67e99d78536282006224dc28" + }, + "index": 0, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-02T14:25:31.269Z" + }, + "updated_at": { + "$date": "2025-12-02T14:49:18.850Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "693435728fbedb001284c4f8" + }, + "price": 3700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا سزار", + "description": "", + "short_description": "", + "category": { + "$oid": "6925a5d9b781ca001170a50d" + }, + "index": 6, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-06T13:53:54.196Z" + }, + "updated_at": { + "$date": "2025-12-06T13:53:54.196Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69381c08eddcc100126d662c" + }, + "price": 1980000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "v60 اتیوپی وامنا", + "description": "", + "short_description": "", + "category": { + "$oid": "6795e9f3a4463c0057e68d31" + }, + "index": 2, + "storeId": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "created_at": { + "$date": "2025-12-09T12:54:32.817Z" + }, + "updated_at": { + "$date": "2025-12-09T12:54:32.817Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "693bd66e95816d0012b73b70" + }, + "price": 1050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "رست نات چوبی نوتلا", + "description": "یک عدد دونات رست شده همراه با شکلات نوتلا ", + "short_description": "", + "category": { + "$oid": "6731afdfc3c0100063e6dec2" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-12-12T08:46:38.696Z" + }, + "updated_at": { + "$date": "2025-12-12T08:46:38.696Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "693bda0495816d0012b73bc7" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پک 4 عددی شکلات", + "description": "4 عدد دونات شکلات ", + "short_description": "", + "category": { + "$oid": "693bd9a195816d0012b73bb0" + }, + "index": 1, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-12-12T09:01:56.096Z" + }, + "updated_at": { + "$date": "2025-12-12T09:01:56.096Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "693bda4195816d0012b73bd1" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پک 4 عددی دارک", + "description": "4 عدد دونات دارک ", + "short_description": "", + "category": { + "$oid": "693bd9a195816d0012b73bb0" + }, + "index": 2, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-12-12T09:02:57.348Z" + }, + "updated_at": { + "$date": "2025-12-12T09:02:57.348Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "693bda6e95816d0012b73bdb" + }, + "price": 3500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پک 4 عددی نوتلا ", + "description": "4 عدد دونات نوتلا ", + "short_description": "", + "category": { + "$oid": "693bd9a195816d0012b73bb0" + }, + "index": 3, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-12-12T09:03:42.377Z" + }, + "updated_at": { + "$date": "2025-12-12T09:03:42.377Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "693bdac595816d0012b73be5" + }, + "price": 3000000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پک خانواده ", + "description": "1 عدد دونات شکلات ، 1 عدد دونات نوتلا ، 1 عدد دونات لاولی ، 1 عدد دونات توت فرنگی", + "short_description": "", + "category": { + "$oid": "693bd9a195816d0012b73bb0" + }, + "index": 4, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-12-12T09:05:09.531Z" + }, + "updated_at": { + "$date": "2025-12-12T09:05:09.531Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "693bdb2f95816d0012b73bef" + }, + "price": 2450000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پک نوستالژی", + "description": "1 عدد دونات شکری ، 1 عدد دونات دارچین ، 1 عدد دونات هل ، 1 عدد دونات کنجد", + "short_description": "", + "category": { + "$oid": "693bd9a195816d0012b73bb0" + }, + "index": 5, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "created_at": { + "$date": "2025-12-12T09:06:55.186Z" + }, + "updated_at": { + "$date": "2025-12-12T09:06:55.186Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "693bdc0e95816d0012b73c0b" + }, + "price": 2300000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "دونات تخم مرغ شانسی کیندر", + "description": "1 عدد دونات شکلاتی همراه با ترافل ، 1 عدد دونات تخم مرغ شانسی کیندر", + "short_description": "", + "category": { + "$oid": "6731af5ac3c0100063e6de8c" + }, + "index": 14, + "storeId": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "image": "food_1765530634407.png", + "created_at": { + "$date": "2025-12-12T09:10:38.634Z" + }, + "updated_at": { + "$date": "2025-12-12T09:10:38.634Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "693d36a1eb83510011b1163e" + }, + "price": 10500000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "استیک میلانو ", + "description": "150گرم شنسل مرغ/150 گرم فیله گوساله/سس قارچ/دورچین سبزیجات وصیفی جات بخار پز/", + "short_description": "", + "category": { + "$oid": "61ac5f9b26d2e0e4fbd9b3fe" + }, + "index": 3, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-12-13T09:49:21.088Z" + }, + "updated_at": { + "$date": "2025-12-13T10:27:04.292Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69417f0d5d516700119184f8" + }, + "price": 1700000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "امریکانو شیر عسلی", + "description": "اسپرسو شیرعسلی اب جوش", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 9, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1765900043529.png", + "created_at": { + "$date": "2025-12-16T15:47:25.469Z" + }, + "updated_at": { + "$date": "2025-12-16T15:50:45.326Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69417f3d5d51670011918503" + }, + "price": 1890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "لاته عسل دارچین", + "description": "اسپرسو عسل طبیعی دارچین شیر فوم شبر", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 12, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1765900091502.png", + "created_at": { + "$date": "2025-12-16T15:48:13.208Z" + }, + "updated_at": { + "$date": "2025-12-16T15:50:12.661Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69417f7f5d5167001191850d" + }, + "price": 1890000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "اسپنیش لته", + "description": "اسپرسو شیر فوم شیر.شیرعسلی", + "short_description": "", + "category": { + "$oid": "67e990e0536282006224d7be" + }, + "index": 13, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "image": "food_1765900157490.png", + "created_at": { + "$date": "2025-12-16T15:49:19.018Z" + }, + "updated_at": { + "$date": "2025-12-16T15:49:19.018Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "694181015d5167001191856f" + }, + "price": 2600000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات پسته", + "description": "شیر کره پسته تکه های پسته", + "short_description": "", + "category": { + "$oid": "67e99d92536282006224dc4c" + }, + "index": 3, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-16T15:55:45.146Z" + }, + "updated_at": { + "$date": "2025-12-16T15:55:45.146Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "694181375d51670011918585" + }, + "price": 2200000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "هات لوتوس ", + "description": "کرم لوتوس شیر فوم شیر ", + "short_description": "", + "category": { + "$oid": "67e99d92536282006224dc4c" + }, + "index": 4, + "storeId": { + "$oid": "67e93f9e536282006224c40d" + }, + "created_at": { + "$date": "2025-12-16T15:56:39.703Z" + }, + "updated_at": { + "$date": "2025-12-16T15:56:39.703Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69425a765d51670011919383" + }, + "price": 5800000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "پیتزا نیویورکی HOT", + "description": "سس مخصوص مکزیکی , مرغ طعم دار شده, فلفل دلمه ای , فلفل هالوپینو ", + "short_description": "", + "category": { + "$oid": "61aba45b1d86dbbc7d60676a" + }, + "index": 2, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-12-17T07:23:34.134Z" + }, + "updated_at": { + "$date": "2025-12-17T09:42:52.054Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69425ae85d51670011919392" + }, + "price": 5050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نیویورکی آمریکایی تک نفره HOT ", + "description": "سس مخصوص مکزیکی , مرغ مزه دار شده , فلفل دلمه ای , فلفل هالوپینو ", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 3, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-12-17T07:25:28.768Z" + }, + "updated_at": { + "$date": "2025-12-17T07:25:28.768Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "69425b205d5167001191939c" + }, + "price": 7050000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "نیویورکی آمریکایی دو نفره HOT", + "description": "سس مخصوص مکزیکی , مرغ مزه دار شده , فلفل دلمه ای , فلفل هالوپینو ", + "short_description": "", + "category": { + "$oid": "61aba4711d86dbbc7d606777" + }, + "index": 4, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-12-17T07:26:24.857Z" + }, + "updated_at": { + "$date": "2025-12-17T09:43:26.597Z" + }, + "__v": 0 +}, +{ + "_id": { + "$oid": "694faf20235ae700126f52cc" + }, + "price": 1750000, + "stock": 1, + "static_discount": 0, + "active": true, + "name": "کارامل ماکیاتو ", + "description": "شیر/ کارامل / قهوه ", + "short_description": "", + "category": { + "$oid": "61b1a16afc1eece3d7626360" + }, + "index": 0, + "storeId": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "created_at": { + "$date": "2025-12-27T10:04:16.583Z" + }, + "updated_at": { + "$date": "2025-12-27T10:04:16.583Z" + }, + "__v": 0 +}] \ No newline at end of file diff --git a/dump/dmenu_db.storeinfos.json b/dump/dmenu_db.storeinfos.json new file mode 100644 index 0000000..0f2ae5d --- /dev/null +++ b/dump/dmenu_db.storeinfos.json @@ -0,0 +1,1892 @@ +[ + { + "_id": { + "$oid": "61a3661f37a0d33354a6d210" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://whatsapp.com", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "urlRouter": "zhivan", + "timezone": "Asia/Tehran", + "active": true, + "danakId": "619a8bd42d952a12c0674fdd", + "serviceId": "619b4c2371acdd1694d2316a", + "title": "ژیوان", + "caption": "", + "email": "as@as.com", + "tel": "123", + "address": "sada", + "colorTheme": "#1069BF", + "created_at": { + "$date": "2021-11-28T11:21:03.135Z" + }, + "updated_at": { + "$date": "2025-12-17T07:20:45.453Z" + }, + "__v": 0, + "logo": "store_1638870352717_61a3661f37a0d33354a6d210.png", + "showAd": true, + "getData": true, + "theme": false, + "message": "لبخند خود را با جهانیان به اشتراک بگذارید. \nاین نمادی از دوستی و صلح است🏳️😉", + "showMessage": true, + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "61d2b72b2e8bd97126a70b5f" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://instagram.com/coffee_sepanta", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "urlRouter": "sepanta", + "timezone": "Asia/Tehran", + "active": true, + "showAd": true, + "danakId": "61d2b3b16a546e336810a027", + "title": "سپنتا", + "caption": "", + "email": "sepanta@gmail.com", + "tel": "0863", + "address": "میدان نماز - ابتدای خ مصطفی خمینی - جنب کترینگ 47", + "colorTheme": "#9A7136", + "created_at": { + "$date": "2022-01-03T08:43:23.505Z" + }, + "updated_at": { + "$date": "2022-01-03T09:47:13.029Z" + }, + "__v": 0, + "logo": "store_1641199914860_61d2b72b2e8bd97126a70b5f.png", + "serviceId": "61d2b403c1858764d9578360", + "theme": false + }, + { + "_id": { + "$oid": "61e509141601c7c7d9141989" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://instagram.com/ocafe.arak?utm_medium=copy_link", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "urlRouter": "ocafe", + "timezone": "Asia/Tehran", + "active": true, + "danakId": "61e507e030f1ec064832e2d3", + "serviceId": "61e50897c1858764d95798a0", + "title": "اکافه", + "caption": "*مهمان گرامی ضمن عرض خوش آمد به شما دوست عزیز،لطفا برای فراخوان ویترها از پیجرهای تعبیه شده روی میز خود استفاده کنید .\r\n*تسویه صورتحساب سر میز شما انجام میگردد.\r\n*تمامی آیتم ها با بهترین متریال موجود در بازار و به صورت روزانه تهیه و آماده سازی میشوند ،تمامی برگرها حاوی 100% گوشت خالص به صورت روزانه و از گوشت گرم استفاده میگردد.", + "email": "info@ocafe.com", + "tel": "1", + "address": "اراک ، ابتدای بلوار جهلن پناه ، برج میلاد(اساتید)", + "colorTheme": "#000000", + "created_at": { + "$date": "2021-11-28T11:21:03.135Z" + }, + "updated_at": { + "$date": "2022-02-02T14:03:17.768Z" + }, + "__v": 0, + "logo": "store_1643274757715_61e509141601c7c7d9141989.png", + "showAd": true, + "getData": true, + "theme": false + }, + { + "_id": { + "$oid": "6202562b1ee4b0270db4ae58" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "6202562bedcac34637f77a4d", + "urlRouter": "easydizy", + "timezone": "Asia/Tehran", + "active": true, + "getData": true, + "showAd": true, + "danakId": "620254caedcac34637f77a24", + "title": "رستوران ایزی دیزی", + "created_at": { + "$date": "2022-02-08T11:38:19.358Z" + }, + "updated_at": { + "$date": "2022-02-08T12:55:42.630Z" + }, + "__v": 0, + "address": "", + "caption": "", + "colorTheme": "#A0522D", + "email": "info@easydizy.com", + "logo": "store_1644324825827_6202562b1ee4b0270db4ae58.png", + "tel": "undefined", + "theme": false + }, + { + "_id": { + "$oid": "62076fa71ee4b0270db4c32d" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://instagram.com/boote.restaurant?utm_medium=copy_link", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "62076fa7edcac34637f77fd5", + "urlRouter": "boote", + "timezone": "Asia/Tehran", + "active": true, + "getData": true, + "showAd": false, + "danakId": "620767e6edcac34637f77faf", + "title": "کافه رستوران بوته", + "created_at": { + "$date": "2022-02-12T08:28:23.714Z" + }, + "updated_at": { + "$date": "2025-05-19T11:05:50.171Z" + }, + "__v": 0, + "address": "اراک-خیابان شریعتی- مابین میدان راه آهن و فرمانداری", + "caption": "", + "colorTheme": "#DC7F54", + "email": "info@boote.com", + "logo": "store_1644655737806_62076fa71ee4b0270db4c32d.png", + "tel": "08634021212", + "merchant_id": "", + "theme": false, + "showMessage": true, + "message": "... همه روزه از ساعت 08:30 صبح با منو صبحانه در خدمت شما هستیم ..." + }, + { + "_id": { + "$oid": "6207b1211ee4b0270db4c4ae" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "cafee_life", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "6207b121edcac34637f78125", + "urlRouter": "life", + "timezone": "Asia/Tehran", + "active": true, + "getData": true, + "showAd": true, + "danakId": "6207a456edcac34637f780f4", + "title": "کافه لایف", + "created_at": { + "$date": "2022-02-12T13:07:45.407Z" + }, + "updated_at": { + "$date": "2022-02-16T13:12:12.930Z" + }, + "__v": 0, + "address": "اراک خیابان ملک کوچه رضوان", + "caption": "", + "colorTheme": "#000000", + "email": "info@life.com", + "tel": "09369663486", + "logo": "store_1644838482386_6207b1211ee4b0270db4c4ae.png", + "theme": false + }, + { + "_id": { + "$oid": "6210b063adf126141b26173d" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://instagram.com/hotel_food_court?utm_medium=copy_link", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "6210b063113bfedc4a502574", + "urlRouter": "foodcourt", + "timezone": "Asia/Tehran", + "active": true, + "getData": true, + "showAd": true, + "danakId": "6210ae15113bfedc4a5024f8", + "title": "ninja park", + "created_at": { + "$date": "2022-02-19T08:54:59.938Z" + }, + "updated_at": { + "$date": "2025-08-19T08:08:55.915Z" + }, + "__v": 0, + "address": "هتل امیر کبیر جنب استخر", + "caption": "", + "colorTheme": "#FF8C00", + "email": "info@foodcourt.com", + "tel": "09120861022", + "logo": "store_1725286063770_6210b063adf126141b26173d.png", + "merchant_id": "undefined", + "theme": false, + "message": "1403/03/29", + "showMessage": true + }, + { + "_id": { + "$oid": "622dccbda03b80e0a44f1d3a" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "622dccbcde4119e96e83a327", + "urlRouter": "banicho", + "timezone": "Asia/Tehran", + "active": true, + "getData": true, + "showAd": true, + "danakId": "622dcc1cde4119e96e83a300", + "title": "هیزم", + "created_at": { + "$date": "2022-03-13T10:51:41.022Z" + }, + "updated_at": { + "$date": "2023-11-18T07:01:47.975Z" + }, + "__v": 0, + "address": "اراک-خیابان شریعتی-نبش کوچه صنوبر", + "caption": "", + "colorTheme": "#1E90FF", + "email": "info@banicho.com", + "logo": "store_1699722686770_622dccbda03b80e0a44f1d3a.png", + "tel": "086-34222234", + "merchant_id": "", + "theme": true, + "message": "جهت ثبت نام در باشگاه مشتریان و استفاده از امتیازات خود شماره خود را به صندوق بدهید", + "showMessage": true + }, + { + "_id": { + "$oid": "62378f6bc1bb048b321cd949" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://instagram.com/blacksugar.ir?utm_medium=copy_link", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "62378f6b7c3bcf5392f746c0", + "urlRouter": "blacksugar", + "timezone": "Asia/Tehran", + "active": true, + "getData": true, + "showAd": false, + "danakId": "623780357c3bcf5392f74664", + "title": "بلک شوگر", + "created_at": { + "$date": "2022-03-20T20:32:43.749Z" + }, + "updated_at": { + "$date": "2022-03-20T20:52:45.818Z" + }, + "__v": 0, + "address": "اراک-خیابان شهید رجایی - نبش کوچه واثق", + "caption": "", + "colorTheme": "#453030", + "email": "shayan.karami69@gmail.com", + "logo": "store_1647809564910_62378f6bc1bb048b321cd949.png", + "tel": "09190211676", + "theme": false + }, + { + "_id": { + "$oid": "627e3d972353df2fe6512c8f" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://www.instagram.com/piano_coffe/", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "627e3d97531f6bf1ab6f4f7b", + "urlRouter": "Piano", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "danakId": "627e3d5a531f6bf1ab6f4f65", + "title": "پیانو", + "created_at": { + "$date": "2022-05-13T11:14:31.818Z" + }, + "updated_at": { + "$date": "2022-05-13T21:13:10.230Z" + }, + "__v": 0, + "address": "اراک خیابان شریعتی حدفاصل میدان فرمانداری", + "caption": "", + "colorTheme": "#453030", + "email": "piano@piano.com", + "logo": "store_1652476386948_627e3d972353df2fe6512c8f.png", + "tel": "۳۲۲۴۷۶۸۴" + }, + { + "_id": { + "$oid": "62a9cff7128ed6fd013332dc" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://instagram.com/saadat_complex_arak", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "62a9cff75f1bdafd1a445e6e", + "urlRouter": "saadat", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "danakId": "62a9cfbb5f1bdafd1a445e4a", + "title": "سعادت", + "created_at": { + "$date": "2022-06-15T12:26:31.510Z" + }, + "updated_at": { + "$date": "2022-07-24T11:19:27.464Z" + }, + "__v": 0, + "address": "اراک - نظم آباد", + "caption": "", + "colorTheme": "#453030", + "email": "info@saadat.com", + "tel": "09126850744", + "logo": "store_1655296406771_62a9cff7128ed6fd013332dc.png", + "merchant_id": "undefined", + "message": "مجتمع گردشگری سعادت : حس خوب زندگی", + "showMessage": true + }, + { + "_id": { + "$oid": "62c157f3fbc4ea222a499088" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "62c157f3f8953b363396184b", + "urlRouter": "Haftkhan", + "timezone": "Asia/Tehran", + "theme": false, + "active": false, + "getData": false, + "showAd": true, + "danakId": "62c15791f8953b3633961831", + "title": "هفت خوان", + "created_at": { + "$date": "2022-07-03T08:48:51.501Z" + }, + "updated_at": { + "$date": "2022-07-03T08:48:51.501Z" + }, + "__v": 0 + }, + { + "_id": { + "$oid": "62cea8d47400250986c70a07" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "Ehsan_haaftkhaan", + "googlePlus": "", + "telegram": "" + }, + "location": {}, + "serviceId": "62cea8d4801d5ed020f372ea", + "urlRouter": "Haaft khaan", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "danakId": "62cea884801d5ed020f372c6", + "title": "سفره خانه و باغ رستوران هفت خوان", + "created_at": { + "$date": "2022-07-13T11:13:24.852Z" + }, + "updated_at": { + "$date": "2022-07-13T12:51:39.442Z" + }, + "__v": 0, + "address": "گلپایگان _پارک جنگی ", + "caption": "", + "colorTheme": "#00CED1", + "email": "Te.mobile913@yahoo.com", + "logo": "store_1657711159036_62cea8d47400250986c70a07.png", + "tel": "09133710111", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "62dd3bf3faacb066e1206279" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "1972.cafe", + "googlePlus": "", + "telegram": "" + }, + "location": {}, + "serviceId": "62dd3bf3801d5ed020f3fddc", + "urlRouter": "1972Cafe", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": true, + "message": "هستیم در خدمتتون از ساعت 15:00____24:00 ", + "danakId": "62dd3add801d5ed020f3fd8b", + "title": "1972", + "created_at": { + "$date": "2022-07-24T12:32:51.603Z" + }, + "updated_at": { + "$date": "2023-12-02T16:10:13.760Z" + }, + "__v": 0, + "address": "خیابان علم الهدی پلاک ۲۰", + "caption": "", + "colorTheme": "#869D88", + "email": "vahidfaraji915@gmail.com", + "logo": "store_1658666648415_62dd3bf3faacb066e1206279.png", + "tel": "09124161536", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "62e3ff5e96be484852cba3c3" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://instagram.com/lounge", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "62e3ff5e801d5ed020f44503", + "urlRouter": "lounge1", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "62e3ff0c801d5ed020f444de", + "title": "لانژ", + "created_at": { + "$date": "2022-07-29T15:40:14.401Z" + }, + "updated_at": { + "$date": "2022-07-29T15:44:53.322Z" + }, + "__v": 0, + "address": "تهران - نیاوران", + "caption": "", + "colorTheme": "#FF8C00", + "email": "info@lounge.com", + "logo": "store_1659109491707_62e3ff5e96be484852cba3c3.png", + "tel": "02132223555" + }, + { + "_id": { + "$oid": "63131c3d96be484852d0a9ed" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "honarcoffeee", + "googlePlus": "", + "telegram": "" + }, + "location": {}, + "serviceId": "63131c3d801d5ed020f60dc6", + "urlRouter": "Honar", + "timezone": "Asia/Tehran", + "theme": true, + "active": true, + "getData": true, + "showAd": true, + "showMessage": true, + "message": "در هنر لحظه ای شاد بنوش", + "danakId": "63130d17801d5ed020f60c7c", + "title": "کافه رستوران هنر", + "created_at": { + "$date": "2022-09-03T09:19:57.618Z" + }, + "updated_at": { + "$date": "2022-09-04T13:22:14.025Z" + }, + "__v": 0, + "address": "اراک\r\nخیابان ملک - ابتدای خیابان جنت - کافه رستوران هنر", + "caption": "۹ صبح تا ۱۱ شب", + "colorTheme": "#0067A5", + "email": "honarcafee@gmail.com", + "logo": "store_1662296508840_63131c3d96be484852d0a9ed.png", + "tel": "09387797169", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "631f0484e410c5322752c409" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "Vanilla_.home", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "631f0483801d5ed020f67af9", + "urlRouter": "Vanilla", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "محصولات خانگی ", + "danakId": "631f0431801d5ed020f67ade", + "title": "خانه وانیلی", + "created_at": { + "$date": "2022-09-12T10:05:56.050Z" + }, + "updated_at": { + "$date": "2022-09-12T10:12:00.029Z" + }, + "__v": 0, + "address": "خیابان امام سجاد ", + "caption": "پذیرش سفارش انواع نان و شیرینی \r\nکیک عصرانه ، کافی شاپی و خامه ای", + "colorTheme": "#EDCA0E", + "email": "reyhaneaghaei@yahoo.com", + "logo": "store_1662977478952_631f0484e410c5322752c409.png", + "tel": "09301604007" + }, + { + "_id": { + "$oid": "63a9c15f82d7fc8d726b8b2f" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "63a9c15fa1ab0cf026fb1d52", + "urlRouter": "1972", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "62dd3add801d5ed020f3fd8b", + "title": "1972", + "created_at": { + "$date": "2022-12-26T15:44:31.343Z" + }, + "updated_at": { + "$date": "2022-12-26T16:22:48.249Z" + }, + "__v": 0, + "address": "arak", + "caption": "", + "colorTheme": "#453030", + "email": "vahidfaraji4179202@gmail.com", + "logo": "store_1672070842973_63a9c15f82d7fc8d726b8b2f.png", + "tel": "09039844606" + }, + { + "_id": { + "$oid": "6426a42be9ad5f14dee9cb74" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "6426a42bd27073186ccc5495", + "urlRouter": "Narcis", + "timezone": "Asia/Tehran", + "theme": false, + "active": false, + "getData": false, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "6426a3f2d27073186ccc5477", + "title": "نارسیس", + "created_at": { + "$date": "2023-03-31T09:13:15.299Z" + }, + "updated_at": { + "$date": "2023-03-31T09:14:16.955Z" + }, + "__v": 0, + "address": "گلپایگا", + "caption": "", + "colorTheme": "#453030", + "email": "Lord22.mm@gmail.com", + "tel": "09210740267" + }, + { + "_id": { + "$oid": "6450aa9a98ff3c7414414230" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "@Cafe-sepanj", + "googlePlus": "", + "telegram": "" + }, + "location": {}, + "serviceId": "6450aa9abddf4c7783af8b8d", + "urlRouter": "cafe_sepanj", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "6450a9d0bddf4c7783af8b74", + "title": "کافه سپنج", + "created_at": { + "$date": "2023-05-02T06:15:54.405Z" + }, + "updated_at": { + "$date": "2023-05-25T14:47:35.240Z" + }, + "__v": 0, + "address": "شهر صنعتی خیابان بنفشه سر پارکینگ سوم ", + "caption": "", + "colorTheme": "#FF0000", + "email": "darkoobadv.ir@gmail.com", + "logo": "store_1683113201780_6450aa9a98ff3c7414414230.png", + "tel": "08633135117", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "6450d97a98ff3c7414414999" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "instagram.com/munichcoffee_", + "googlePlus": "", + "telegram": "" + }, + "location": {}, + "serviceId": "6450d97abddf4c7783af902d", + "urlRouter": "monikh", + "timezone": "Asia/Tehran", + "theme": true, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "6450d948bddf4c7783af900a", + "title": "مونیخ", + "created_at": { + "$date": "2023-05-02T09:35:54.133Z" + }, + "updated_at": { + "$date": "2025-01-25T15:50:52.725Z" + }, + "__v": 1, + "address": "خیابان امام ، جنب کبابی ملی", + "caption": "Feel Good For hours", + "colorTheme": "#00604F", + "email": "info@munich.com", + "logo": "store_1737820250944_6450d97a98ff3c7414414999.png", + "tel": "09385434474", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "6465ff4d98ff3c741442d56a" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://instagram.com/ocafe.arak", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "6465ff4dbddf4c7783b02f32", + "urlRouter": "o-cafe", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": true, + "message": "شب و روزتون پر از حال خوب ...", + "danakId": "61fa73c0edcac34637f76c70", + "title": "اُ کافه", + "created_at": { + "$date": "2023-05-18T10:34:53.833Z" + }, + "updated_at": { + "$date": "2023-05-19T17:39:08.540Z" + }, + "__v": 0, + "address": "اراک - ابتدای بلوار جهان پناه - زیر برج میلاد", + "caption": "", + "colorTheme": "#453030", + "email": "info@o-cafe.com", + "logo": "store_1684406222541_6465ff4d98ff3c741442d56a.png", + "tel": "08622222222" + }, + { + "_id": { + "$oid": "64b3d17d98ff3c741448cccd" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://instagram.com/yummyburger.arak", + "googlePlus": "", + "telegram": "" + }, + "location": {}, + "serviceId": "64b3d17d07943f7ca0920a3b", + "urlRouter": "yummyburger", + "timezone": "Asia/Tehran", + "theme": true, + "active": true, + "getData": false, + "showAd": false, + "showMessage": false, + "message": "", + "danakId": "64b2ce273559924aec695d33", + "title": "یامی برگر", + "created_at": { + "$date": "2023-07-16T11:16:13.797Z" + }, + "updated_at": { + "$date": "2024-12-02T09:15:18.691Z" + }, + "__v": 1, + "colorTheme": "#F10F0F", + "address": "اراک - خیابان جهان پناه - ابتدای بلوار علم الهدی", + "caption": "undefined", + "email": "yami@yami.com", + "merchant_id": "undefined", + "tel": "34223300", + "logo": "store_1689594902563_64b3d17d98ff3c741448cccd.png" + }, + { + "_id": { + "$oid": "64bad3b698ff3c741449521e" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "Mahtab_cafe", + "googlePlus": "", + "telegram": "" + }, + "location": {}, + "serviceId": "64bad3b607943f7ca0923d96", + "urlRouter": "mahtabgarden", + "timezone": "Asia/Tehran", + "theme": true, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "64bad33a07943f7ca0923d72", + "title": "کافه رستوران مهتاب", + "created_at": { + "$date": "2023-07-21T18:51:34.476Z" + }, + "updated_at": { + "$date": "2023-07-22T19:22:35.133Z" + }, + "__v": 0, + "address": "اراک - پل برق - اوایل خیابان فتح شیاکوه (نمکوریها) روبروی مسجد نبش کوچه اکبرزاده - باغ رستوران مهتاب", + "caption": "کافه آش مهتاب یک رستوران سنتی می باشد که در سال 1400 در محیطی سرسبز و رویایی با فضای باز و مسقف جهت ارایه انواع نوشیدنی و غذاهای متنوع شامل انواع آش ، کافه ، انواع غذاهای سنتی ، سوخاری و ... تاسیس گردیده است", + "colorTheme": "#453030", + "email": "ahmadadiban27@gmail.com", + "logo": "store_1689965802684_64bad3b698ff3c741449521e.png", + "tel": "08632771771-09120681032", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "64d9e2b979f54f6403d7e0be" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "64d9e2b852b4d75759964e51", + "urlRouter": "dream", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "64d2184352b4d7575996186c", + "title": "dream", + "created_at": { + "$date": "2023-08-14T08:15:53.016Z" + }, + "updated_at": { + "$date": "2024-05-11T16:03:38.247Z" + }, + "__v": 0, + "address": "اراک", + "caption": "", + "colorTheme": "#EA8598", + "email": "dream@dream.com", + "logo": "store_1692001432499_64d9e2b979f54f6403d7e0be.png", + "tel": "0862222222" + }, + { + "_id": { + "$oid": "650823be59383e8d7550ccb5" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "lanka_cafe_restaurant", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "650823be9dc0f99b4cca88eb", + "urlRouter": "lanka", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": true, + "message": "", + "danakId": "6508236e9dc0f99b4cca88be", + "title": "لانکا", + "created_at": { + "$date": "2023-09-18T10:17:34.836Z" + }, + "updated_at": { + "$date": "2025-04-12T17:19:07.282Z" + }, + "__v": 0, + "address": "نظم آباد", + "caption": "", + "colorTheme": "#23173B", + "email": "me@me.com", + "logo": "store_1695032652234_650823be59383e8d7550ccb5.png", + "tel": "09381535372", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "651a7ffe59383e8d7551eebf" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "@thisispariaaa", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "651a7ffe9dc0f99b4ccaf8f1", + "urlRouter": "123", + "timezone": "Asia/Tehran", + "theme": true, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "....", + "danakId": "651a558e9dc0f99b4ccaf82c", + "title": "123", + "created_at": { + "$date": "2023-10-02T08:31:58.131Z" + }, + "updated_at": { + "$date": "2023-10-07T10:56:13.717Z" + }, + "__v": 0, + "address": "123", + "caption": "", + "colorTheme": "#47236C", + "email": "paria.shrfn@gmail.com", + "tel": "09184916933", + "logo": "store_1696240982921_651a7ffe59383e8d7551eebf.png" + }, + { + "_id": { + "$oid": "651ad03159383e8d7551f3be" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ], + "type": "Point" + }, + "serviceId": "651ad0319dc0f99b4ccafbae", + "urlRouter": "LIAN", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": false, + "showAd": false, + "showMessage": false, + "message": "", + "danakId": "651acfd19dc0f99b4ccafb8b", + "title": "لیان", + "created_at": { + "$date": "2023-10-02T14:14:09.973Z" + }, + "updated_at": { + "$date": "2024-05-28T12:08:54.960Z" + }, + "__v": 1, + "address": "اراک،شهرصنعتی،میدان اطلسی ۴", + "caption": "undefined", + "colorTheme": "#FF8C00", + "email": "llian@lian.com", + "logo": "store_1701608905866_651ad03159383e8d7551f3be.png", + "merchant_id": "fc0b7503-bba5-40d1-9f9d-dae52ac02eef", + "tel": "08633333333" + }, + { + "_id": { + "$oid": "6533b63559383e8d7553aec6" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "6533b6359dc0f99b4ccbb34c", + "urlRouter": "Lanka", + "timezone": "Asia/Tehran", + "theme": false, + "active": false, + "getData": false, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "6508236e9dc0f99b4cca88be", + "title": "کافه رستوران لانکا", + "created_at": { + "$date": "2023-10-21T11:29:57.574Z" + }, + "updated_at": { + "$date": "2023-10-21T11:29:57.574Z" + }, + "__v": 0 + }, + { + "_id": { + "$oid": "65ef0b1d3ad722005756bb0f" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "Milco_plus", + "googlePlus": "", + "telegram": "" + }, + "location": { + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ], + "type": "Point" + }, + "serviceId": "65ef0b1de67d710057f81e77", + "urlRouter": "milco-pilco", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": false, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "65ef092be67d710057f81e4c", + "title": "میلکو پلاس", + "created_at": { + "$date": "2024-03-11T13:46:05.472Z" + }, + "updated_at": { + "$date": "2025-07-15T09:32:13.296Z" + }, + "__v": 1, + "address": "شهر صنعتی میدان شهدای نظم اباد منطقه ۷ پارکینگ پنجم خیابان شقایق", + "caption": "اراک", + "colorTheme": "#EA6608", + "email": "info@milcopilco.com", + "logo": "store_1710166978715_65ef0b1d3ad722005756bb0f.png", + "merchant_id": "undefined", + "tel": "08634133149" + }, + { + "_id": { + "$oid": "65ef1a093ad722005756bc8e" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "65ef1a09e67d710057f820c2", + "urlRouter": "lama", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "65ef1506e67d710057f81f5a", + "title": "لاما", + "created_at": { + "$date": "2024-03-11T14:49:45.667Z" + }, + "updated_at": { + "$date": "2024-03-13T12:32:58.282Z" + }, + "__v": 0, + "address": "اراک", + "caption": "", + "colorTheme": "#453030", + "email": "info@lama.com", + "logo": "store_1710333176537_65ef1a093ad722005756bc8e.png", + "tel": "22222222" + }, + { + "_id": { + "$oid": "6693d0cc136cc10070469510" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "kaj.foodhall", + "googlePlus": "", + "telegram": "" + }, + "location": {}, + "serviceId": "6693d0cc43c1a700614f41e0", + "urlRouter": "kaj.foodhall", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "6693cc2543c1a700614f417f", + "title": "کاج", + "created_at": { + "$date": "2024-07-14T13:21:16.523Z" + }, + "updated_at": { + "$date": "2024-07-14T13:27:57.601Z" + }, + "__v": 0, + "address": "اراک", + "caption": "کاج", + "colorTheme": "#208C3E", + "email": "kaj@kaj.com", + "logo": "store_1720963586174_6693d0cc136cc10070469510.png", + "tel": "08691009001", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "671c9c58c3c0100063e4d1a9" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": {}, + "serviceId": "671c9c58ac67310056d186e3", + "urlRouter": "hamid", + "timezone": "Asia/Tehran", + "theme": true, + "active": true, + "getData": true, + "showAd": true, + "showMessage": true, + "message": "به کافه رستوران حمیدخان خوش امدید", + "danakId": "671c9189ac67310056d18694", + "title": "حمید", + "created_at": { + "$date": "2024-10-26T07:38:00.757Z" + }, + "updated_at": { + "$date": "2024-10-26T08:01:08.157Z" + }, + "__v": 0, + "address": "اراک", + "caption": "", + "colorTheme": "#C71585", + "email": "tesst@mail.com", + "logo": "store_1729929522774_671c9c58c3c0100063e4d1a9.png", + "tel": "09017149865", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "672f3c9bc3c0100063e6a526" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://www.instagram.com/donutfactory.arak?igsh=MWllMXZwZWQ2dGp4Nw==", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "672f3c9bac67310056d288dd", + "urlRouter": "donat-factory", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "672f136bac67310056d2870d", + "title": "دونات فکتوری", + "created_at": { + "$date": "2024-11-09T10:42:35.586Z" + }, + "updated_at": { + "$date": "2024-11-14T20:01:37.175Z" + }, + "__v": 0, + "address": "اراک", + "caption": "", + "colorTheme": "#694512", + "email": "donat@donat.com", + "logo": "store_1731152090639_672f3c9bc3c0100063e6a526.png", + "tel": "0935 816 7043", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "6731c2b9c3c0100063e6e2ae" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "narciss_garden", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "6731c2b9ac67310056d2ada6", + "urlRouter": "narsis", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": false, + "showMessage": true, + "message": "قابل توجه مشتریان گرامی \nقیمت های منو نارسیس قدیمی هست \nلطفابرای اطلاعات بیشتر به صندوق مراجعه کنید", + "danakId": "6731c097ac67310056d2ad59", + "title": "نارسیس", + "created_at": { + "$date": "2024-11-11T08:39:21.930Z" + }, + "updated_at": { + "$date": "2025-09-16T19:04:48.718Z" + }, + "__v": 0, + "address": "ادرس", + "caption": "", + "colorTheme": "#4D8C6B", + "email": "narsis@narsis.com", + "logo": "store_1731314427492_6731c2b9c3c0100063e6e2ae.png", + "tel": "0121111111", + "merchant_id": "ZP.2844766" + }, + { + "_id": { + "$oid": "677ab9f9a4463c0057e3ac5d" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "677ab9f9bc315300703f4902", + "urlRouter": "Theory", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": true, + "message": "", + "danakId": "677ab972bc315300703f48cf", + "title": "تئوری", + "created_at": { + "$date": "2025-01-05T16:57:29.725Z" + }, + "updated_at": { + "$date": "2025-10-14T15:24:12.007Z" + }, + "__v": 0, + "address": "کریمخان-ایرانشهر-پلاک ۲۳۹", + "caption": "تئوری", + "colorTheme": "#2D5443", + "email": "teory@teory.com", + "logo": "store_1736665730887_677ab9f9a4463c0057e3ac5d.png", + "tel": "021 8881 0144", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "6786f839a4463c0057e4f429" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "6786f839bddf7e007d9bc1c6", + "urlRouter": "testmenu", + "timezone": "Asia/Tehran", + "theme": false, + "active": false, + "getData": false, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "67859882bc315300703fdc18", + "title": "testmenu", + "created_at": { + "$date": "2025-01-14T23:50:17.976Z" + }, + "updated_at": { + "$date": "2025-01-14T23:50:17.976Z" + }, + "__v": 0 + }, + { + "_id": { + "$oid": "6798e6aabd2ce20057144cfb" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "ahr_cafe", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "6798e6aa31110e0057c1b0d4", + "urlRouter": "ahr_cofe", + "timezone": "Asia/Tehran", + "theme": true, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "believe in your self", + "danakId": "6798d37231110e0057c1aefc", + "title": "ahr_cafe", + "created_at": { + "$date": "2025-01-28T14:16:10.503Z" + }, + "updated_at": { + "$date": "2025-01-29T16:37:28.640Z" + }, + "__v": 0, + "address": "اراک شهرصنعتی منطقه 3 پامچال 2", + "caption": "test", + "colorTheme": "#453030", + "email": "rezamobarak47@gmail.com", + "tel": "09183623730", + "logo": "store_1738074249830_6798e6aabd2ce20057144cfb.png" + }, + { + "_id": { + "$oid": "679b7fe7bd2ce200571498a8" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "@Cafe_meat", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "679b7fe731110e0057c1d877", + "urlRouter": "cafe_meat", + "timezone": "Asia/Tehran", + "theme": true, + "active": true, + "getData": true, + "showAd": true, + "showMessage": true, + "message": "welcome to meat", + "danakId": "679b7c9e31110e0057c1d77d", + "title": "cafe_meat", + "created_at": { + "$date": "2025-01-30T13:34:31.463Z" + }, + "updated_at": { + "$date": "2025-09-06T18:56:58.382Z" + }, + "__v": 0, + "address": "اراک باغ ملی نبش کوچه مرغی ها جنب در دوم پاساژ فردوسی", + "caption": "اینجا یک کافه معمولی نیست", + "colorTheme": "#453030", + "email": "Barbodmahdavi57@gmail.com", + "logo": "store_1739868881926_679b7fe7bd2ce200571498a8.png", + "tel": "09308241024", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "67bd773f536282006220de43" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "67bd773f25eec500570d281e", + "urlRouter": "KFP", + "timezone": "Asia/Tehran", + "theme": true, + "active": true, + "getData": true, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "67bd76d225eec500570d27f7", + "title": "پیتزا خانواده", + "created_at": { + "$date": "2025-02-25T07:54:39.174Z" + }, + "updated_at": { + "$date": "2025-02-25T07:57:23.628Z" + }, + "__v": 0, + "address": "کرج میدان توحید ابتدای بلوار بلال ", + "caption": "", + "colorTheme": "#453030", + "email": "Alisasani83@gmail.com", + "logo": "store_1740470240551_67bd773f536282006220de43.png", + "tel": "09109898433 " + }, + { + "_id": { + "$oid": "67bd785a536282006220de93" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "67bd785a25eec500570d2885", + "urlRouter": "KFP ", + "timezone": "Asia/Tehran", + "theme": false, + "active": false, + "getData": false, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "67bd76d225eec500570d27f7", + "title": "پیتزا خانواده ", + "created_at": { + "$date": "2025-02-25T07:59:22.683Z" + }, + "updated_at": { + "$date": "2025-02-25T07:59:22.683Z" + }, + "__v": 0 + }, + { + "_id": { + "$oid": "67e93f9e536282006224c40d" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "https://instagram.com/THEMOONCAFFE", + "googlePlus": "", + "telegram": "" + }, + "location": {}, + "serviceId": "67e93f9e25eec500570f3f76", + "urlRouter": "Moon", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": true, + "message": "alone but still shine", + "danakId": "67e93d2125eec500570f3f0e", + "title": "Themoon", + "created_at": { + "$date": "2025-03-30T12:57:02.818Z" + }, + "updated_at": { + "$date": "2025-11-25T13:10:09.296Z" + }, + "__v": 0, + "address": "اراک - شهر صنعتی - منطقه 9", + "caption": "کافه مون بر این اساس شکل گرفته تا لحظه های خوشی را براتون به یادگار بگذارد", + "colorTheme": "#453030", + "email": "themooncaffe@gmail.com", + "logo": "store_1743347876393_67e93f9e536282006224c40d.png", + "tel": "09100333360", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "681b2e34f114460057d16354" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "681b2e34fd81710074d28d93", + "urlRouter": "zparty", + "timezone": "Asia/Tehran", + "theme": false, + "active": false, + "getData": false, + "showAd": true, + "showMessage": false, + "message": "", + "danakId": "681b2d8bfd81710074d28cee", + "title": "زپارتی", + "created_at": { + "$date": "2025-05-07T09:56:04.067Z" + }, + "updated_at": { + "$date": "2025-05-07T09:56:04.067Z" + }, + "__v": 0 + }, + { + "_id": { + "$oid": "6847c5f3f114460057d617bf" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "passata.plus", + "googlePlus": "", + "telegram": "" + }, + "location": {}, + "serviceId": "6847c5f3fd81710074d4eba0", + "urlRouter": "passata", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": true, + "message": "کارخونه کوچیک پاستاپزی", + "danakId": "6847c5a9fd81710074d4eb78", + "title": "پاساتا پلاس", + "created_at": { + "$date": "2025-06-10T05:43:15.608Z" + }, + "updated_at": { + "$date": "2025-10-20T18:17:20.861Z" + }, + "__v": 0, + "address": "ابتدای خیابان جهانپناه،نبش کوچه سلیمی (رو بروی سیلو)", + "caption": "", + "colorTheme": "#4E2D03", + "email": "info@pasa.com", + "logo": "store_1749534426675_6847c5f3f114460057d617bf.png", + "tel": "08633141117", + "merchant_id": "undefined" + }, + { + "_id": { + "$oid": "686100dd9086300011bdf7d0" + }, + "socials": { + "whatsaap": "", + "twitter": "", + "facebook": "", + "instagram": "", + "googlePlus": "", + "telegram": "" + }, + "location": { + "type": "Point", + "coordinates": [ + 49.67720236907016, + 34.07654928061605 + ] + }, + "serviceId": "686100dd4230e5001211c6d6", + "urlRouter": "kolbe-setareh", + "timezone": "Asia/Tehran", + "theme": false, + "active": true, + "getData": true, + "showAd": true, + "showMessage": true, + "message": "غذا فقط طعم نیست،یه خاطره هست", + "danakId": "6860d7574230e5001211c5da", + "title": "کلبه ستاره", + "created_at": { + "$date": "2025-06-29T09:01:17.737Z" + }, + "updated_at": { + "$date": "2025-09-07T06:06:58.584Z" + }, + "__v": 0, + "address": "ssja", + "caption": "dasjdsad", + "colorTheme": "#1E8995", + "email": "nansd2jassdn@ns.cc", + "logo": "store_1751196871890_686100dd9086300011bdf7d0.png", + "tel": "0192292", + "merchant_id": "undefined" + } +] \ No newline at end of file diff --git a/dump/dump-icons.sh b/dump/dump-icons.sh new file mode 100755 index 0000000..c57bf04 --- /dev/null +++ b/dump/dump-icons.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# Script to dump icon and icon_groups tables from PostgreSQL database +# Usage: ./dump-icons.sh [output_file] + +set -e + +# Load environment variables if .env file exists +if [ -f .env ]; then + set -a + # Source .env file, handling comments and empty lines + while IFS= read -r line || [ -n "$line" ]; do + # Remove leading/trailing whitespace + line=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + # Skip empty lines and lines starting with # + [[ -z "$line" ]] && continue + [[ "$line" =~ ^# ]] && continue + # Remove inline comments (everything after # that's not in quotes) + line=$(echo "$line" | sed 's/#.*$//' | sed 's/[[:space:]]*$//') + # Skip if line is empty after removing comments + [[ -z "$line" ]] && continue + # Export the variable (only if it looks like KEY=VALUE) + if [[ "$line" =~ ^[[:alpha:]_][[:alnum:]_]*= ]]; then + export "$line" 2>/dev/null || true + fi + done < .env + set +a +fi + +# Get database connection details from environment variables +DB_HOST="${DB_HOST:-localhost}" +DB_PORT="${DB_PORT:-5432}" +DB_NAME="${DB_NAME:-dmenu}" +DB_USER="${DB_USER:-postgres}" + +# Output file name (default: icons_dump_YYYYMMDD_HHMMSS.sql) +if [ -z "$1" ]; then + TIMESTAMP=$(date +%Y%m%d_%H%M%S) + OUTPUT_FILE="icons_dump_${TIMESTAMP}.sql" +else + OUTPUT_FILE="$1" +fi + +echo "Dumping icon_groups and icons tables..." +echo "Database: ${DB_NAME}@${DB_HOST}:${DB_PORT}" +echo "Output file: ${OUTPUT_FILE}" + +# Dump icon_groups table first (parent table) +echo "Dumping icon_groups table..." +PGPASSWORD="${DB_PASS}" pg_dump \ + -h "${DB_HOST}" \ + -p "${DB_PORT}" \ + -U "${DB_USER}" \ + -d "${DB_NAME}" \ + -t icon_groups \ + --data-only \ + --column-inserts \ + --no-owner \ + --no-privileges \ + > "${OUTPUT_FILE}" + +# Append icons table to the dump file +echo "Dumping icons table..." +PGPASSWORD="${DB_PASS}" pg_dump \ + -h "${DB_HOST}" \ + -p "${DB_PORT}" \ + -U "${DB_USER}" \ + -d "${DB_NAME}" \ + -t icons \ + --data-only \ + --column-inserts \ + --no-owner \ + --no-privileges \ + >> "${OUTPUT_FILE}" + +echo "Dump completed successfully!" +echo "File saved to: ${OUTPUT_FILE}" +echo "" +echo "To restore, run: ./restore-icons.sh ${OUTPUT_FILE}" + diff --git a/dump/icon_viewer.html b/dump/icon_viewer.html new file mode 100644 index 0000000..e0a3cbe --- /dev/null +++ b/dump/icon_viewer.html @@ -0,0 +1,312 @@ + + + + + + Icon Viewer - Name the Icons + + + +
+

Icon Name Editor

+

Review each icon below and enter appropriate names. Names will be saved back to the CSV file.

+
+ 0 of 138 icons named +
+ + +
+ +
+ +
+ + + + diff --git a/dump/icons.csv b/dump/icons.csv new file mode 100644 index 0000000..c1390e8 --- /dev/null +++ b/dump/icons.csv @@ -0,0 +1,138 @@ +"id","created_at","updated_at","deleted_at","url","group_id","icon_name" +"01KD7DGWH6TDB47V4710FDT7SR","2025-12-24 05:32:46.503+00","2025-12-24 05:32:46.503+00",NULL,"https://storage.danakcorp.com/images/1766554365832-411750172.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DH9F6BN4TEM96TA2QT4GJ","2025-12-24 05:32:59.751+00","2025-12-24 05:32:59.751+00",NULL,"https://storage.danakcorp.com/images/1766554379149-104970938.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DHK6ZTEGPRBNXJPV49TE6","2025-12-24 05:33:09.727+00","2025-12-24 05:33:09.727+00",NULL,"https://storage.danakcorp.com/images/1766554389090-593863597.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DJ2NVEHVQMDCAM31VKKGK","2025-12-24 05:33:25.564+00","2025-12-24 05:33:25.564+00",NULL,"https://storage.danakcorp.com/images/1766554404968-905984091.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DJCQY1V84DAVXPV097HE6","2025-12-24 05:33:35.871+00","2025-12-24 05:33:35.871+00",NULL,"https://storage.danakcorp.com/images/1766554415325-873800591.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DJSZ2XVX971FGNFRRDQV6","2025-12-24 05:33:49.411+00","2025-12-24 05:33:49.411+00",NULL,"https://storage.danakcorp.com/images/1766554428814-77027818.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DK3HJAD9SMDD8CM1RPNQS","2025-12-24 05:33:59.218+00","2025-12-24 05:33:59.218+00",NULL,"https://storage.danakcorp.com/images/1766554438632-45072052.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DKB23B6XWJ8CMAKQ5R8HS","2025-12-24 05:34:06.915+00","2025-12-24 05:34:06.915+00",NULL,"https://storage.danakcorp.com/images/1766554446340-463157109.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DKN32VCDQDF2D407MGKF0","2025-12-24 05:34:17.186+00","2025-12-24 05:34:17.186+00",NULL,"https://storage.danakcorp.com/images/1766554456605-280166176.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DM4AEQ2FCJGZM390N7YVJ","2025-12-24 05:34:32.782+00","2025-12-24 05:34:32.782+00",NULL,"https://storage.danakcorp.com/images/1766554471887-315640495.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DMHKWJSHX6BR41FTDYVHE","2025-12-24 05:34:46.396+00","2025-12-24 05:34:46.396+00",NULL,"https://storage.danakcorp.com/images/1766554485634-242317100.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DN3XNDW2JQ0RGM711R9Q5","2025-12-24 05:35:05.141+00","2025-12-24 05:35:05.141+00",NULL,"https://storage.danakcorp.com/images/1766554504553-157481346.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DNV0F9CPMKQ4R482MTVKJ","2025-12-24 05:35:28.783+00","2025-12-24 05:35:28.783+00",NULL,"https://storage.danakcorp.com/images/1766554528198-919877647.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DPAKCPXD2GK0FCZ7N3XXP","2025-12-24 05:35:44.749+00","2025-12-24 05:35:44.749+00",NULL,"https://storage.danakcorp.com/images/1766554544140-886744157.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DPZGZFZPS5AJ8RNM3W16F","2025-12-24 05:36:06.175+00","2025-12-24 05:36:06.175+00",NULL,"https://storage.danakcorp.com/images/1766554565614-684869010.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DQCMAD39T5QB5728M6PFP","2025-12-24 05:36:19.594+00","2025-12-24 05:36:19.594+00",NULL,"https://storage.danakcorp.com/images/1766554578855-318583145.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DQTQHGWP5J77V327Y4GHZ","2025-12-24 05:36:34.034+00","2025-12-24 05:36:34.034+00",NULL,"https://storage.danakcorp.com/images/1766554593272-362758712.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DR75VSDY0B28AFTB6QP9M","2025-12-24 05:36:46.779+00","2025-12-24 05:36:46.779+00",NULL,"https://storage.danakcorp.com/images/1766554606166-877198688.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DRRT3B7BAA714MMYVVHN4","2025-12-24 05:37:04.835+00","2025-12-24 05:37:04.835+00",NULL,"https://storage.danakcorp.com/images/1766554624133-21439996.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DS9TQY1KWPM2HY7VC7THR","2025-12-24 05:37:22.263+00","2025-12-24 05:37:22.263+00",NULL,"https://storage.danakcorp.com/images/1766554641691-535696200.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DST85ZZ0SKSVDYJWN67VQ","2025-12-24 05:37:39.078+00","2025-12-24 05:37:39.078+00",NULL,"https://storage.danakcorp.com/images/1766554658481-114730426.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7DT75Y84N1ECNV2WW6VQ37","2025-12-24 05:37:52.318+00","2025-12-24 05:37:52.318+00",NULL,"https://storage.danakcorp.com/images/1766554671760-634916570.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7E3837FJ9TDDKPF8S6PHK6","2025-12-24 05:42:48.167+00","2025-12-24 05:42:48.167+00",NULL,"https://storage.danakcorp.com/images/1766554967381-660612838.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7E7G89J5KH2ZT45F0MT5X3","2025-12-24 05:45:07.593+00","2025-12-24 05:45:07.593+00",NULL,"https://storage.danakcorp.com/images/1766555106925-267924006.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7EBA6ATBBFVMGWQHACZ1G7","2025-12-24 05:47:12.459+00","2025-12-24 05:47:12.459+00",NULL,"https://storage.danakcorp.com/images/1766555231674-387319393.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7ED3NRKEX3Z8G6CTHK5QAB","2025-12-24 05:48:11.32+00","2025-12-24 05:48:11.32+00",NULL,"https://storage.danakcorp.com/images/1766555290519-155637622.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7EDN07W94SGG04BRNRNRWT","2025-12-24 05:48:29.063+00","2025-12-24 05:48:29.063+00",NULL,"https://storage.danakcorp.com/images/1766555308301-230359494.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7EH2W75B2H8JGMHR9P76ZE","2025-12-24 05:50:21.576+00","2025-12-24 05:50:21.576+00",NULL,"https://storage.danakcorp.com/images/1766555420851-186440015.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7EP8V3KQYMDCDMXYP1QKPK","2025-12-24 05:53:11.523+00","2025-12-24 05:53:11.523+00",NULL,"https://storage.danakcorp.com/images/1766555590828-644527730.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7EPRJWQAQX00F0J02FV05J","2025-12-24 05:53:27.644+00","2025-12-24 05:53:27.644+00",NULL,"https://storage.danakcorp.com/images/1766555606997-571682462.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7ERGH1ABTPGSJN1WFTESP6","2025-12-24 05:54:24.929+00","2025-12-24 05:54:24.929+00",NULL,"https://storage.danakcorp.com/images/1766555663659-433052581.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7ET0394XN31KFT3340R04H","2025-12-24 05:55:13.641+00","2025-12-24 05:55:13.641+00",NULL,"https://storage.danakcorp.com/images/1766555713098-988242030.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7ETCZBFV8ZZF1GFDKP7DXA","2025-12-24 05:55:26.827+00","2025-12-24 05:55:26.827+00",NULL,"https://storage.danakcorp.com/images/1766555726158-680948882.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7EV0VW1M18RGBB54C4YDAC","2025-12-24 05:55:47.196+00","2025-12-24 05:55:47.196+00",NULL,"https://storage.danakcorp.com/images/1766555746650-426516324.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7EVMP392QF71V6QFGK9XQA","2025-12-24 05:56:07.491+00","2025-12-24 05:56:07.491+00",NULL,"https://storage.danakcorp.com/images/1766555765798-127083646.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7EW6MQX0VFPS21TJPSEBAH","2025-12-24 05:56:25.879+00","2025-12-24 05:56:25.879+00",NULL,"https://storage.danakcorp.com/images/1766555784837-243715698.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7EWMGEHYQRKBM6XBS9EKTF","2025-12-24 05:56:40.078+00","2025-12-24 05:56:40.078+00",NULL,"https://storage.danakcorp.com/images/1766555799191-594035927.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7EZHSEJ4G27VT3HS7JZ8YN","2025-12-24 05:58:15.599+00","2025-12-24 05:58:15.599+00",NULL,"https://storage.danakcorp.com/images/1766555894624-524350777.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7F0PCEADF1HWJ47V8RP1ZP","2025-12-24 05:58:53.07+00","2025-12-24 05:58:53.07+00",NULL,"https://storage.danakcorp.com/images/1766555932114-485954688.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7F184CHB129A900K2V6N94","2025-12-24 05:59:11.244+00","2025-12-24 05:59:11.244+00",NULL,"https://storage.danakcorp.com/images/1766555949650-909996041.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7F1R0JNNRP8QW8NHANZB01","2025-12-24 05:59:27.506+00","2025-12-24 05:59:27.506+00",NULL,"https://storage.danakcorp.com/images/1766555966861-75517122.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7F2Z1V0T1S47R7VWBEPY66","2025-12-24 06:00:07.483+00","2025-12-24 06:00:07.483+00",NULL,"https://storage.danakcorp.com/images/1766556006875-239689681.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FAP3S04D5CW51W98YZRHE","2025-12-24 06:04:20.473+00","2025-12-24 06:04:20.473+00",NULL,"https://storage.danakcorp.com/images/1766556257163-459958715.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FBQJAV9HJMG4EVRKPSAC5","2025-12-24 06:04:54.73+00","2025-12-24 06:04:54.73+00",NULL,"https://storage.danakcorp.com/images/1766556293812-665835248.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FC48FRARBP7ZXN7SPGP8K","2025-12-24 06:05:07.727+00","2025-12-24 06:05:07.727+00",NULL,"https://storage.danakcorp.com/images/1766556307082-162280793.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FD4SW2G73QX0YY6KNK7V4","2025-12-24 06:05:41.052+00","2025-12-24 06:05:41.052+00",NULL,"https://storage.danakcorp.com/images/1766556340402-744632392.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FGRC85J6JXEYNBGCPY0S4","2025-12-24 06:07:39.4+00","2025-12-24 06:07:39.4+00",NULL,"https://storage.danakcorp.com/images/1766556458335-857124841.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FHCW86SPVBSC8N62YEY5R","2025-12-24 06:08:00.393+00","2025-12-24 06:08:00.393+00",NULL,"https://storage.danakcorp.com/images/1766556479530-161860621.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FHYWZ73T36XKTDQ5FEN7G","2025-12-24 06:08:18.847+00","2025-12-24 06:08:18.847+00",NULL,"https://storage.danakcorp.com/images/1766556498215-91175544.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FQDYPGWD05HHATWBC499Z","2025-12-24 06:11:18.103+00","2025-12-24 06:11:18.103+00",NULL,"https://storage.danakcorp.com/images/1766556677355-108854669.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FS7QGJJ3YRSM10Y5YWD6C","2025-12-24 06:12:17.264+00","2025-12-24 06:12:17.264+00",NULL,"https://storage.danakcorp.com/images/1766556736283-691587656.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FSY2XKBREKJ9HCNJN924C","2025-12-24 06:12:40.157+00","2025-12-24 06:12:40.157+00",NULL,"https://storage.danakcorp.com/images/1766556759367-58066921.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FTFZ25MHQATRC41Y3EPQS","2025-12-24 06:12:58.468+00","2025-12-24 06:12:58.468+00",NULL,"https://storage.danakcorp.com/images/1766556777353-490756125.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FXARH84SJYESXVAG0AH3Q","2025-12-24 06:14:31.441+00","2025-12-24 06:14:31.441+00",NULL,"https://storage.danakcorp.com/images/1766556870740-118553581.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FXXV4DP74NGWJC0J43MDP","2025-12-24 06:14:50.98+00","2025-12-24 06:14:50.98+00",NULL,"https://storage.danakcorp.com/images/1766556890334-962678132.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FYVRNQAAA0DQZ8NZ02F2R","2025-12-24 06:15:21.621+00","2025-12-24 06:15:21.621+00",NULL,"https://storage.danakcorp.com/images/1766556921029-865260745.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7FZMJ4QGTG6NZEDKWP7V0W","2025-12-24 06:15:47.013+00","2025-12-24 06:15:47.013+00",NULL,"https://storage.danakcorp.com/images/1766556946363-320833501.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7G0F8GTY7KZ530Y9XF8YXF","2025-12-24 06:16:14.352+00","2025-12-24 06:16:14.352+00",NULL,"https://storage.danakcorp.com/images/1766556973771-832565827.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7G300731YZQDT3FVAP0KHH","2025-12-24 06:17:37.031+00","2025-12-24 06:17:37.031+00",NULL,"https://storage.danakcorp.com/images/1766557056358-727862983.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7G7BHM8WEXFHHKD09MG10J","2025-12-24 06:19:59.925+00","2025-12-24 06:19:59.925+00",NULL,"https://storage.danakcorp.com/images/1766557199259-72955190.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7G8ZM2FPZ9H5BVGD983CTS","2025-12-24 06:20:53.25+00","2025-12-24 06:20:53.25+00",NULL,"https://storage.danakcorp.com/images/1766557252452-988016525.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7G9N7J647RH94K5WQB1Q3B","2025-12-24 06:21:15.378+00","2025-12-24 06:21:15.378+00",NULL,"https://storage.danakcorp.com/images/1766557274778-439028456.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GA36DDJBQJ15XT4D0E2D6","2025-12-24 06:21:29.678+00","2025-12-24 06:21:29.678+00",NULL,"https://storage.danakcorp.com/images/1766557289094-415104854.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GAEZKQKRC80EP7F03K22K","2025-12-24 06:21:41.747+00","2025-12-24 06:21:41.747+00",NULL,"https://storage.danakcorp.com/images/1766557300923-302277606.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GAYJAHXAZV84PN3X2N4FY","2025-12-24 06:21:57.707+00","2025-12-24 06:21:57.707+00",NULL,"https://storage.danakcorp.com/images/1766557317091-602116315.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GN1W5Q0WZWCJR8V62AD88","2025-12-24 06:27:28.774+00","2025-12-24 06:27:28.774+00",NULL,"https://storage.danakcorp.com/images/1766557647999-47333939.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GNPEX4CMZHRVYB4AZYSK3","2025-12-24 06:27:49.853+00","2025-12-24 06:27:49.853+00",NULL,"https://storage.danakcorp.com/images/1766557669282-172512141.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GPSY27QGH5XSPXWHD8VJ5","2025-12-24 06:28:26.179+00","2025-12-24 06:28:26.179+00",NULL,"https://storage.danakcorp.com/images/1766557705283-692546793.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GQGZK52YM87E283013JS4","2025-12-24 06:28:49.779+00","2025-12-24 06:28:49.779+00",NULL,"https://storage.danakcorp.com/images/1766557729175-762576743.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GRBRZTFFHDS1A6MH2CMJ4","2025-12-24 06:29:17.215+00","2025-12-24 06:29:17.215+00",NULL,"https://storage.danakcorp.com/images/1766557756487-665300947.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GRYXHE220H9C3VH4VAC8E","2025-12-24 06:29:36.817+00","2025-12-24 06:29:36.817+00",NULL,"https://storage.danakcorp.com/images/1766557776067-804149228.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GSKMZH8WAH5VYAS4GH02C","2025-12-24 06:29:58.048+00","2025-12-24 06:29:58.048+00",NULL,"https://storage.danakcorp.com/images/1766557797509-101726352.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GT6A83SX8NKPVHYXAKJ3H","2025-12-24 06:30:17.16+00","2025-12-24 06:30:17.16+00",NULL,"https://storage.danakcorp.com/images/1766557816484-357699340.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7GTTKT3H3EDFTRCY8P2AE9","2025-12-24 06:30:37.946+00","2025-12-24 06:30:37.946+00",NULL,"https://storage.danakcorp.com/images/1766557837292-326521286.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7J0VP01FCP0TEHYG0MD191","2025-12-24 06:51:24.224+00","2025-12-24 06:51:24.224+00",NULL,"https://storage.danakcorp.com/images/1766559083575-564721059.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7J1BMTMBMV009EYC7N4G7D","2025-12-24 06:51:40.57+00","2025-12-24 06:51:40.57+00",NULL,"https://storage.danakcorp.com/images/1766559099561-720966516.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7J1W90CASGWZKBFMN75STB","2025-12-24 06:51:57.601+00","2025-12-24 06:51:57.601+00",NULL,"https://storage.danakcorp.com/images/1766559116496-834964990.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7NS1HJ2C707G3KXRRZCN7Y","2025-12-24 07:57:02.387+00","2025-12-24 07:57:02.387+00",NULL,"https://storage.danakcorp.com/images/1766563021426-600579018.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7NSHYZ6XESEJR7MCKS7CY0","2025-12-24 07:57:19.199+00","2025-12-24 07:57:19.199+00",NULL,"https://storage.danakcorp.com/images/1766563038525-727531190.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7NSYX5W066SDN0RYBKXHQ3","2025-12-24 07:57:32.454+00","2025-12-24 07:57:32.454+00",NULL,"https://storage.danakcorp.com/images/1766563051485-824602001.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7NTCZK4NYE3KCYDM1247GP","2025-12-24 07:57:46.867+00","2025-12-24 07:57:46.867+00",NULL,"https://storage.danakcorp.com/images/1766563066017-372210647.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7NW5KZEW4M2ZJX93T53G41","2025-12-24 07:58:44.863+00","2025-12-24 07:58:44.863+00",NULL,"https://storage.danakcorp.com/images/1766563124296-331607800.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7NWQ7YFJ7HDNWRB5F1V47Q","2025-12-24 07:59:02.91+00","2025-12-24 07:59:02.91+00",NULL,"https://storage.danakcorp.com/images/1766563142133-359920423.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7NXCZSEN7M2TN0DT0XVVR9","2025-12-24 07:59:25.177+00","2025-12-24 07:59:25.177+00",NULL,"https://storage.danakcorp.com/images/1766563164270-350101986.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7NXXMYZFMAWMRS23GRZSKP","2025-12-24 07:59:42.238+00","2025-12-24 07:59:42.238+00",NULL,"https://storage.danakcorp.com/images/1766563181587-86630830.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7NYP6M0HNC3A4XCXHK4W4M","2025-12-24 08:00:07.38+00","2025-12-24 08:00:07.38+00",NULL,"https://storage.danakcorp.com/images/1766563204966-651499380.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7NZ3PDZX4WTVV3KC5MTD8K","2025-12-24 08:00:21.198+00","2025-12-24 08:00:21.198+00",NULL,"https://storage.danakcorp.com/images/1766563220596-103699525.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7P0FWPK3HTYVX14XMGCHTC","2025-12-24 08:01:06.455+00","2025-12-24 08:01:06.455+00",NULL,"https://storage.danakcorp.com/images/1766563265634-373953449.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7P0SAN0PA6KAGE3ABAXSWF","2025-12-24 08:01:16.117+00","2025-12-24 08:01:16.117+00",NULL,"https://storage.danakcorp.com/images/1766563275517-958045207.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7P1429PQT8NFDFRZEDNH1P","2025-12-24 08:01:27.113+00","2025-12-24 08:01:27.113+00",NULL,"https://storage.danakcorp.com/images/1766563286526-622849562.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7QC4M3D2SF26ZH0S0SDWBD","2025-12-24 08:24:56.708+00","2025-12-24 08:24:56.708+00",NULL,"https://storage.danakcorp.com/images/1766564695339-504553420.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7QCEDA0T3CGZ01NGBKWZ9S","2025-12-24 08:25:06.73+00","2025-12-24 08:25:06.73+00",NULL,"https://storage.danakcorp.com/images/1766564706032-159367016.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7QCWQ00TVCK7BAAHSWA09H","2025-12-24 08:25:21.376+00","2025-12-24 08:25:21.376+00",NULL,"https://storage.danakcorp.com/images/1766564720683-887818252.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7QDA1R9WTTV2JWQ2Y3WGST","2025-12-24 08:25:35.032+00","2025-12-24 08:25:35.032+00",NULL,"https://storage.danakcorp.com/images/1766564734432-483528219.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7QDSCQNW2JC4SAQCK0QBNW","2025-12-24 08:25:50.743+00","2025-12-24 08:25:50.743+00",NULL,"https://storage.danakcorp.com/images/1766564750099-854146988.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7QE1NXGG08JQ5F2BC35NFC","2025-12-24 08:25:59.23+00","2025-12-24 08:25:59.23+00",NULL,"https://storage.danakcorp.com/images/1766564758573-696060786.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7QFFXDVTSB5VAXB640HR7N","2025-12-24 08:26:46.574+00","2025-12-24 08:26:46.574+00",NULL,"https://storage.danakcorp.com/images/1766564805823-829938380.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7QJ37DT4NCD6QY9MNGCZXZ","2025-12-24 08:28:11.885+00","2025-12-24 08:28:11.885+00",NULL,"https://storage.danakcorp.com/images/1766564891137-468827500.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7QJJZX6Y7CR8R60W3TNKRS","2025-12-24 08:28:28.029+00","2025-12-24 08:28:28.029+00",NULL,"https://storage.danakcorp.com/images/1766564907215-921380792.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7QK69ZH6B4S602YKZCBVMB","2025-12-24 08:28:47.807+00","2025-12-24 08:28:47.807+00",NULL,"https://storage.danakcorp.com/images/1766564926872-672612697.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7R3EM739KW6PV431V6P19S","2025-12-24 08:37:40.616+00","2025-12-24 08:37:40.616+00",NULL,"https://storage.danakcorp.com/images/1766565459604-638026702.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7R3YZ6SAQWZ4CMC4GCJ1V4","2025-12-24 08:37:57.351+00","2025-12-24 08:37:57.351+00",NULL,"https://storage.danakcorp.com/images/1766565476771-42527917.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7R4D5BVGPWKXE6A7FNVNRA","2025-12-24 08:38:11.883+00","2025-12-24 08:38:11.883+00",NULL,"https://storage.danakcorp.com/images/1766565491264-946731491.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7R4RFYFFQ4GV5TQ3DH6BW6","2025-12-24 08:38:23.486+00","2025-12-24 08:38:23.486+00",NULL,"https://storage.danakcorp.com/images/1766565502475-288189136.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7R5KMSAGCXZCTQPTVYDTA7","2025-12-24 08:38:51.289+00","2025-12-24 08:38:51.289+00",NULL,"https://storage.danakcorp.com/images/1766565530628-800474580.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7R64HYQD37W8ASB2Q817MW","2025-12-24 08:39:08.606+00","2025-12-24 08:39:08.606+00",NULL,"https://storage.danakcorp.com/images/1766565547983-878658938.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7R6KF9YWZBZ3WPAKXQS2CH","2025-12-24 08:39:23.881+00","2025-12-24 08:39:23.881+00",NULL,"https://storage.danakcorp.com/images/1766565563263-891688321.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7R7RM02R8FZ4DN65WMJVE8","2025-12-24 08:40:01.92+00","2025-12-24 08:40:01.92+00",NULL,"https://storage.danakcorp.com/images/1766565600547-704332792.svg","01KD7DG4VCTWZRSA54M3PEJ6NW" +"01KD7R8G53XBC6AG6KAVSBW94G","2025-12-24 08:40:26.019+00","2025-12-24 08:40:26.019+00",NULL,"https://storage.danakcorp.com/images/1766565625437-528383713.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7R901TPNAX9YYRG6W0GWHF","2025-12-24 08:40:42.298+00","2025-12-24 08:40:42.298+00",NULL,"https://storage.danakcorp.com/images/1766565641620-53176909.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7R9PKF9G1DD1HMS2QQQN9V","2025-12-24 08:41:05.391+00","2025-12-24 08:41:05.391+00",NULL,"https://storage.danakcorp.com/images/1766565664427-433669317.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RK2G6E5JKEDK9P95W79PR","2025-12-24 08:46:12.487+00","2025-12-24 08:46:12.487+00",NULL,"https://storage.danakcorp.com/images/1766565971515-159903323.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RKSM9QD6RA2H6WGE23KEC","2025-12-24 08:46:36.169+00","2025-12-24 08:46:36.169+00",NULL,"https://storage.danakcorp.com/images/1766565995424-288101561.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RMR9DRA1TG2BJ9Q8QAZ15","2025-12-24 08:47:07.565+00","2025-12-24 08:47:07.565+00",NULL,"https://storage.danakcorp.com/images/1766566026942-868807643.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RN6FH0TX69RZTKJKM6MEN","2025-12-24 08:47:22.097+00","2025-12-24 08:47:22.097+00",NULL,"https://storage.danakcorp.com/images/1766566041525-973019175.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RNX4EE92QR2C24577BJCW","2025-12-24 08:47:45.294+00","2025-12-24 08:47:45.294+00",NULL,"https://storage.danakcorp.com/images/1766566064741-271844433.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RPHHCKNXNQH29WSG84D2Z","2025-12-24 08:48:06.189+00","2025-12-24 08:48:06.189+00",NULL,"https://storage.danakcorp.com/images/1766566084368-438871956.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RQ6MFA5CDQ4J55NG3N7PX","2025-12-24 08:48:27.791+00","2025-12-24 08:48:27.791+00",NULL,"https://storage.danakcorp.com/images/1766566106954-47179607.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RQNXJNRXS8MXV57R50PKN","2025-12-24 08:48:43.443+00","2025-12-24 08:48:43.443+00",NULL,"https://storage.danakcorp.com/images/1766566122836-486871124.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RR9W6B9BTWJ0N2H11TWM1","2025-12-24 08:49:03.879+00","2025-12-24 08:49:03.879+00",NULL,"https://storage.danakcorp.com/images/1766566143171-668309076.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RRVQWYHSHN3M7R25GNGHS","2025-12-24 08:49:22.172+00","2025-12-24 08:49:22.172+00",NULL,"https://storage.danakcorp.com/images/1766566161551-844376214.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RSAKAP1TJ59GN11DEAXD9","2025-12-24 08:49:37.386+00","2025-12-24 08:49:37.386+00",NULL,"https://storage.danakcorp.com/images/1766566176755-30806596.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RSV35PY1A6193H4GDW1ZW","2025-12-24 08:49:54.277+00","2025-12-24 08:49:54.277+00",NULL,"https://storage.danakcorp.com/images/1766566193720-339416210.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RWX3D4ZZE35W345HDK35S","2025-12-24 08:51:34.638+00","2025-12-24 08:51:34.638+00",NULL,"https://storage.danakcorp.com/images/1766566293736-981836756.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RX79BVR30WGKXAZQ3D0CM","2025-12-24 08:51:45.068+00","2025-12-24 08:51:45.068+00",NULL,"https://storage.danakcorp.com/images/1766566304318-193301989.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RXY99C8PV6SAR0AJ00F16","2025-12-24 08:52:08.618+00","2025-12-24 08:52:08.618+00",NULL,"https://storage.danakcorp.com/images/1766566327768-2675508.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RYBPV273KCR350ESK2FN1","2025-12-24 08:52:22.364+00","2025-12-24 08:52:22.364+00",NULL,"https://storage.danakcorp.com/images/1766566341717-462491426.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RYTNTE20YS29X2XJT7GY3","2025-12-24 08:52:37.69+00","2025-12-24 08:52:37.69+00",NULL,"https://storage.danakcorp.com/images/1766566357028-432111036.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RZ8K86GCJSW1E0EC5T4B2","2025-12-24 08:52:51.944+00","2025-12-24 08:52:51.944+00",NULL,"https://storage.danakcorp.com/images/1766566371354-279596850.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7RZPNGASPYFP9XKMSY208B","2025-12-24 08:53:06.352+00","2025-12-24 08:53:06.352+00",NULL,"https://storage.danakcorp.com/images/1766566385674-569493499.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7S0HEQZ4AY5TTFKF36HS6F","2025-12-24 08:53:33.783+00","2025-12-24 08:53:33.783+00",NULL,"https://storage.danakcorp.com/images/1766566413058-975642584.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7S0ZEQ6BH163HCX0MQZHBJ","2025-12-24 08:53:48.119+00","2025-12-24 08:53:48.119+00",NULL,"https://storage.danakcorp.com/images/1766566427440-982841441.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7S1EF6R6J6AMMC6HP5J0AA","2025-12-24 08:54:03.494+00","2025-12-24 08:54:03.494+00",NULL,"https://storage.danakcorp.com/images/1766566442808-761588425.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7S27EFH2CDEK71GVQC839G","2025-12-24 08:54:29.074+00","2025-12-24 08:54:29.074+00",NULL,"https://storage.danakcorp.com/images/1766566468108-519151895.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7S2N705Z754YS3YFQW4AGQ","2025-12-24 08:54:43.169+00","2025-12-24 08:54:43.169+00",NULL,"https://storage.danakcorp.com/images/1766566482278-661272876.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7S31HNKPAAK58CX77BNJCA","2025-12-24 08:54:55.798+00","2025-12-24 08:54:55.798+00",NULL,"https://storage.danakcorp.com/images/1766566494050-408184442.svg","01KD7DGBDFX76VKXMKQKR51RJK" +"01KD7S3AX9VW5B830MYJYGXQ0B","2025-12-24 08:55:05.385+00","2025-12-24 08:55:05.385+00",NULL,"https://storage.danakcorp.com/images/1766566504760-709260995.svg","01KD7DGBDFX76VKXMKQKR51RJK" diff --git a/dump/icons_dump_20251224_233800.sql b/dump/icons_dump_20251224_233800.sql new file mode 100644 index 0000000..3b66b8b --- /dev/null +++ b/dump/icons_dump_20251224_233800.sql @@ -0,0 +1,205 @@ +-- +-- PostgreSQL database dump +-- + +\restrict acoqslHA6I152rhJbwpzhi5E4Cp5r1Bq6kFOAPp82JWutcjW9v0rh7ptBQwHz6l + +-- Dumped from database version 17.6 (Debian 17.6-2.pgdg13+1) +-- Dumped by pg_dump version 17.7 (Ubuntu 17.7-3.pgdg24.04+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET transaction_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Data for Name: icon_groups; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO public.icon_groups (id, created_at, updated_at, deleted_at, name) VALUES ('01KD7DG4VCTWZRSA54M3PEJ6NW', '2025-12-24 05:32:22.252+00', '2025-12-24 05:32:22.252+00', NULL, 'پک آیکون 1'); +INSERT INTO public.icon_groups (id, created_at, updated_at, deleted_at, name) VALUES ('01KD7DGBDFX76VKXMKQKR51RJK', '2025-12-24 05:32:28.976+00', '2025-12-24 05:32:28.976+00', NULL, 'پک آیکون 2'); + + +-- +-- PostgreSQL database dump complete +-- + +\unrestrict acoqslHA6I152rhJbwpzhi5E4Cp5r1Bq6kFOAPp82JWutcjW9v0rh7ptBQwHz6l + +-- +-- PostgreSQL database dump +-- + +\restrict 4pvnNoptyhScdLjLBpsonU6ZnOH502ap2y2am0YHcRG7WkY1NxnW43VtUD3Gq85 + +-- Dumped from database version 17.6 (Debian 17.6-2.pgdg13+1) +-- Dumped by pg_dump version 17.7 (Ubuntu 17.7-3.pgdg24.04+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET transaction_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Data for Name: icons; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DGWH6TDB47V4710FDT7SR', '2025-12-24 05:32:46.503+00', '2025-12-24 05:32:46.503+00', NULL, 'https://storage.danakcorp.com/images/1766554365832-411750172.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DH9F6BN4TEM96TA2QT4GJ', '2025-12-24 05:32:59.751+00', '2025-12-24 05:32:59.751+00', NULL, 'https://storage.danakcorp.com/images/1766554379149-104970938.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DHK6ZTEGPRBNXJPV49TE6', '2025-12-24 05:33:09.727+00', '2025-12-24 05:33:09.727+00', NULL, 'https://storage.danakcorp.com/images/1766554389090-593863597.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DJ2NVEHVQMDCAM31VKKGK', '2025-12-24 05:33:25.564+00', '2025-12-24 05:33:25.564+00', NULL, 'https://storage.danakcorp.com/images/1766554404968-905984091.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DJCQY1V84DAVXPV097HE6', '2025-12-24 05:33:35.871+00', '2025-12-24 05:33:35.871+00', NULL, 'https://storage.danakcorp.com/images/1766554415325-873800591.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DJSZ2XVX971FGNFRRDQV6', '2025-12-24 05:33:49.411+00', '2025-12-24 05:33:49.411+00', NULL, 'https://storage.danakcorp.com/images/1766554428814-77027818.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DK3HJAD9SMDD8CM1RPNQS', '2025-12-24 05:33:59.218+00', '2025-12-24 05:33:59.218+00', NULL, 'https://storage.danakcorp.com/images/1766554438632-45072052.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DKB23B6XWJ8CMAKQ5R8HS', '2025-12-24 05:34:06.915+00', '2025-12-24 05:34:06.915+00', NULL, 'https://storage.danakcorp.com/images/1766554446340-463157109.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DKN32VCDQDF2D407MGKF0', '2025-12-24 05:34:17.186+00', '2025-12-24 05:34:17.186+00', NULL, 'https://storage.danakcorp.com/images/1766554456605-280166176.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DM4AEQ2FCJGZM390N7YVJ', '2025-12-24 05:34:32.782+00', '2025-12-24 05:34:32.782+00', NULL, 'https://storage.danakcorp.com/images/1766554471887-315640495.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DMHKWJSHX6BR41FTDYVHE', '2025-12-24 05:34:46.396+00', '2025-12-24 05:34:46.396+00', NULL, 'https://storage.danakcorp.com/images/1766554485634-242317100.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DN3XNDW2JQ0RGM711R9Q5', '2025-12-24 05:35:05.141+00', '2025-12-24 05:35:05.141+00', NULL, 'https://storage.danakcorp.com/images/1766554504553-157481346.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DNV0F9CPMKQ4R482MTVKJ', '2025-12-24 05:35:28.783+00', '2025-12-24 05:35:28.783+00', NULL, 'https://storage.danakcorp.com/images/1766554528198-919877647.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DPAKCPXD2GK0FCZ7N3XXP', '2025-12-24 05:35:44.749+00', '2025-12-24 05:35:44.749+00', NULL, 'https://storage.danakcorp.com/images/1766554544140-886744157.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DPZGZFZPS5AJ8RNM3W16F', '2025-12-24 05:36:06.175+00', '2025-12-24 05:36:06.175+00', NULL, 'https://storage.danakcorp.com/images/1766554565614-684869010.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DQCMAD39T5QB5728M6PFP', '2025-12-24 05:36:19.594+00', '2025-12-24 05:36:19.594+00', NULL, 'https://storage.danakcorp.com/images/1766554578855-318583145.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DQTQHGWP5J77V327Y4GHZ', '2025-12-24 05:36:34.034+00', '2025-12-24 05:36:34.034+00', NULL, 'https://storage.danakcorp.com/images/1766554593272-362758712.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DR75VSDY0B28AFTB6QP9M', '2025-12-24 05:36:46.779+00', '2025-12-24 05:36:46.779+00', NULL, 'https://storage.danakcorp.com/images/1766554606166-877198688.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DRRT3B7BAA714MMYVVHN4', '2025-12-24 05:37:04.835+00', '2025-12-24 05:37:04.835+00', NULL, 'https://storage.danakcorp.com/images/1766554624133-21439996.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DS9TQY1KWPM2HY7VC7THR', '2025-12-24 05:37:22.263+00', '2025-12-24 05:37:22.263+00', NULL, 'https://storage.danakcorp.com/images/1766554641691-535696200.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DST85ZZ0SKSVDYJWN67VQ', '2025-12-24 05:37:39.078+00', '2025-12-24 05:37:39.078+00', NULL, 'https://storage.danakcorp.com/images/1766554658481-114730426.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7DT75Y84N1ECNV2WW6VQ37', '2025-12-24 05:37:52.318+00', '2025-12-24 05:37:52.318+00', NULL, 'https://storage.danakcorp.com/images/1766554671760-634916570.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7E3837FJ9TDDKPF8S6PHK6', '2025-12-24 05:42:48.167+00', '2025-12-24 05:42:48.167+00', NULL, 'https://storage.danakcorp.com/images/1766554967381-660612838.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7E7G89J5KH2ZT45F0MT5X3', '2025-12-24 05:45:07.593+00', '2025-12-24 05:45:07.593+00', NULL, 'https://storage.danakcorp.com/images/1766555106925-267924006.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7EBA6ATBBFVMGWQHACZ1G7', '2025-12-24 05:47:12.459+00', '2025-12-24 05:47:12.459+00', NULL, 'https://storage.danakcorp.com/images/1766555231674-387319393.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7ED3NRKEX3Z8G6CTHK5QAB', '2025-12-24 05:48:11.32+00', '2025-12-24 05:48:11.32+00', NULL, 'https://storage.danakcorp.com/images/1766555290519-155637622.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7EDN07W94SGG04BRNRNRWT', '2025-12-24 05:48:29.063+00', '2025-12-24 05:48:29.063+00', NULL, 'https://storage.danakcorp.com/images/1766555308301-230359494.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7EH2W75B2H8JGMHR9P76ZE', '2025-12-24 05:50:21.576+00', '2025-12-24 05:50:21.576+00', NULL, 'https://storage.danakcorp.com/images/1766555420851-186440015.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7EP8V3KQYMDCDMXYP1QKPK', '2025-12-24 05:53:11.523+00', '2025-12-24 05:53:11.523+00', NULL, 'https://storage.danakcorp.com/images/1766555590828-644527730.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7EPRJWQAQX00F0J02FV05J', '2025-12-24 05:53:27.644+00', '2025-12-24 05:53:27.644+00', NULL, 'https://storage.danakcorp.com/images/1766555606997-571682462.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7ERGH1ABTPGSJN1WFTESP6', '2025-12-24 05:54:24.929+00', '2025-12-24 05:54:24.929+00', NULL, 'https://storage.danakcorp.com/images/1766555663659-433052581.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7ET0394XN31KFT3340R04H', '2025-12-24 05:55:13.641+00', '2025-12-24 05:55:13.641+00', NULL, 'https://storage.danakcorp.com/images/1766555713098-988242030.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7ETCZBFV8ZZF1GFDKP7DXA', '2025-12-24 05:55:26.827+00', '2025-12-24 05:55:26.827+00', NULL, 'https://storage.danakcorp.com/images/1766555726158-680948882.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7EV0VW1M18RGBB54C4YDAC', '2025-12-24 05:55:47.196+00', '2025-12-24 05:55:47.196+00', NULL, 'https://storage.danakcorp.com/images/1766555746650-426516324.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7EVMP392QF71V6QFGK9XQA', '2025-12-24 05:56:07.491+00', '2025-12-24 05:56:07.491+00', NULL, 'https://storage.danakcorp.com/images/1766555765798-127083646.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7EW6MQX0VFPS21TJPSEBAH', '2025-12-24 05:56:25.879+00', '2025-12-24 05:56:25.879+00', NULL, 'https://storage.danakcorp.com/images/1766555784837-243715698.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7EWMGEHYQRKBM6XBS9EKTF', '2025-12-24 05:56:40.078+00', '2025-12-24 05:56:40.078+00', NULL, 'https://storage.danakcorp.com/images/1766555799191-594035927.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7EZHSEJ4G27VT3HS7JZ8YN', '2025-12-24 05:58:15.599+00', '2025-12-24 05:58:15.599+00', NULL, 'https://storage.danakcorp.com/images/1766555894624-524350777.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7F0PCEADF1HWJ47V8RP1ZP', '2025-12-24 05:58:53.07+00', '2025-12-24 05:58:53.07+00', NULL, 'https://storage.danakcorp.com/images/1766555932114-485954688.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7F184CHB129A900K2V6N94', '2025-12-24 05:59:11.244+00', '2025-12-24 05:59:11.244+00', NULL, 'https://storage.danakcorp.com/images/1766555949650-909996041.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7F1R0JNNRP8QW8NHANZB01', '2025-12-24 05:59:27.506+00', '2025-12-24 05:59:27.506+00', NULL, 'https://storage.danakcorp.com/images/1766555966861-75517122.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7F2Z1V0T1S47R7VWBEPY66', '2025-12-24 06:00:07.483+00', '2025-12-24 06:00:07.483+00', NULL, 'https://storage.danakcorp.com/images/1766556006875-239689681.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FAP3S04D5CW51W98YZRHE', '2025-12-24 06:04:20.473+00', '2025-12-24 06:04:20.473+00', NULL, 'https://storage.danakcorp.com/images/1766556257163-459958715.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FBQJAV9HJMG4EVRKPSAC5', '2025-12-24 06:04:54.73+00', '2025-12-24 06:04:54.73+00', NULL, 'https://storage.danakcorp.com/images/1766556293812-665835248.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FC48FRARBP7ZXN7SPGP8K', '2025-12-24 06:05:07.727+00', '2025-12-24 06:05:07.727+00', NULL, 'https://storage.danakcorp.com/images/1766556307082-162280793.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FD4SW2G73QX0YY6KNK7V4', '2025-12-24 06:05:41.052+00', '2025-12-24 06:05:41.052+00', NULL, 'https://storage.danakcorp.com/images/1766556340402-744632392.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FGRC85J6JXEYNBGCPY0S4', '2025-12-24 06:07:39.4+00', '2025-12-24 06:07:39.4+00', NULL, 'https://storage.danakcorp.com/images/1766556458335-857124841.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FHCW86SPVBSC8N62YEY5R', '2025-12-24 06:08:00.393+00', '2025-12-24 06:08:00.393+00', NULL, 'https://storage.danakcorp.com/images/1766556479530-161860621.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FHYWZ73T36XKTDQ5FEN7G', '2025-12-24 06:08:18.847+00', '2025-12-24 06:08:18.847+00', NULL, 'https://storage.danakcorp.com/images/1766556498215-91175544.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FQDYPGWD05HHATWBC499Z', '2025-12-24 06:11:18.103+00', '2025-12-24 06:11:18.103+00', NULL, 'https://storage.danakcorp.com/images/1766556677355-108854669.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FS7QGJJ3YRSM10Y5YWD6C', '2025-12-24 06:12:17.264+00', '2025-12-24 06:12:17.264+00', NULL, 'https://storage.danakcorp.com/images/1766556736283-691587656.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FSY2XKBREKJ9HCNJN924C', '2025-12-24 06:12:40.157+00', '2025-12-24 06:12:40.157+00', NULL, 'https://storage.danakcorp.com/images/1766556759367-58066921.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FTFZ25MHQATRC41Y3EPQS', '2025-12-24 06:12:58.468+00', '2025-12-24 06:12:58.468+00', NULL, 'https://storage.danakcorp.com/images/1766556777353-490756125.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FXARH84SJYESXVAG0AH3Q', '2025-12-24 06:14:31.441+00', '2025-12-24 06:14:31.441+00', NULL, 'https://storage.danakcorp.com/images/1766556870740-118553581.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FXXV4DP74NGWJC0J43MDP', '2025-12-24 06:14:50.98+00', '2025-12-24 06:14:50.98+00', NULL, 'https://storage.danakcorp.com/images/1766556890334-962678132.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FYVRNQAAA0DQZ8NZ02F2R', '2025-12-24 06:15:21.621+00', '2025-12-24 06:15:21.621+00', NULL, 'https://storage.danakcorp.com/images/1766556921029-865260745.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7FZMJ4QGTG6NZEDKWP7V0W', '2025-12-24 06:15:47.013+00', '2025-12-24 06:15:47.013+00', NULL, 'https://storage.danakcorp.com/images/1766556946363-320833501.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7G0F8GTY7KZ530Y9XF8YXF', '2025-12-24 06:16:14.352+00', '2025-12-24 06:16:14.352+00', NULL, 'https://storage.danakcorp.com/images/1766556973771-832565827.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7G300731YZQDT3FVAP0KHH', '2025-12-24 06:17:37.031+00', '2025-12-24 06:17:37.031+00', NULL, 'https://storage.danakcorp.com/images/1766557056358-727862983.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7G7BHM8WEXFHHKD09MG10J', '2025-12-24 06:19:59.925+00', '2025-12-24 06:19:59.925+00', NULL, 'https://storage.danakcorp.com/images/1766557199259-72955190.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7G8ZM2FPZ9H5BVGD983CTS', '2025-12-24 06:20:53.25+00', '2025-12-24 06:20:53.25+00', NULL, 'https://storage.danakcorp.com/images/1766557252452-988016525.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7G9N7J647RH94K5WQB1Q3B', '2025-12-24 06:21:15.378+00', '2025-12-24 06:21:15.378+00', NULL, 'https://storage.danakcorp.com/images/1766557274778-439028456.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GA36DDJBQJ15XT4D0E2D6', '2025-12-24 06:21:29.678+00', '2025-12-24 06:21:29.678+00', NULL, 'https://storage.danakcorp.com/images/1766557289094-415104854.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GAEZKQKRC80EP7F03K22K', '2025-12-24 06:21:41.747+00', '2025-12-24 06:21:41.747+00', NULL, 'https://storage.danakcorp.com/images/1766557300923-302277606.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GAYJAHXAZV84PN3X2N4FY', '2025-12-24 06:21:57.707+00', '2025-12-24 06:21:57.707+00', NULL, 'https://storage.danakcorp.com/images/1766557317091-602116315.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GN1W5Q0WZWCJR8V62AD88', '2025-12-24 06:27:28.774+00', '2025-12-24 06:27:28.774+00', NULL, 'https://storage.danakcorp.com/images/1766557647999-47333939.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GNPEX4CMZHRVYB4AZYSK3', '2025-12-24 06:27:49.853+00', '2025-12-24 06:27:49.853+00', NULL, 'https://storage.danakcorp.com/images/1766557669282-172512141.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GPSY27QGH5XSPXWHD8VJ5', '2025-12-24 06:28:26.179+00', '2025-12-24 06:28:26.179+00', NULL, 'https://storage.danakcorp.com/images/1766557705283-692546793.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GQGZK52YM87E283013JS4', '2025-12-24 06:28:49.779+00', '2025-12-24 06:28:49.779+00', NULL, 'https://storage.danakcorp.com/images/1766557729175-762576743.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GRBRZTFFHDS1A6MH2CMJ4', '2025-12-24 06:29:17.215+00', '2025-12-24 06:29:17.215+00', NULL, 'https://storage.danakcorp.com/images/1766557756487-665300947.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GRYXHE220H9C3VH4VAC8E', '2025-12-24 06:29:36.817+00', '2025-12-24 06:29:36.817+00', NULL, 'https://storage.danakcorp.com/images/1766557776067-804149228.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GSKMZH8WAH5VYAS4GH02C', '2025-12-24 06:29:58.048+00', '2025-12-24 06:29:58.048+00', NULL, 'https://storage.danakcorp.com/images/1766557797509-101726352.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GT6A83SX8NKPVHYXAKJ3H', '2025-12-24 06:30:17.16+00', '2025-12-24 06:30:17.16+00', NULL, 'https://storage.danakcorp.com/images/1766557816484-357699340.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7GTTKT3H3EDFTRCY8P2AE9', '2025-12-24 06:30:37.946+00', '2025-12-24 06:30:37.946+00', NULL, 'https://storage.danakcorp.com/images/1766557837292-326521286.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7J0VP01FCP0TEHYG0MD191', '2025-12-24 06:51:24.224+00', '2025-12-24 06:51:24.224+00', NULL, 'https://storage.danakcorp.com/images/1766559083575-564721059.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7J1BMTMBMV009EYC7N4G7D', '2025-12-24 06:51:40.57+00', '2025-12-24 06:51:40.57+00', NULL, 'https://storage.danakcorp.com/images/1766559099561-720966516.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7J1W90CASGWZKBFMN75STB', '2025-12-24 06:51:57.601+00', '2025-12-24 06:51:57.601+00', NULL, 'https://storage.danakcorp.com/images/1766559116496-834964990.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7NS1HJ2C707G3KXRRZCN7Y', '2025-12-24 07:57:02.387+00', '2025-12-24 07:57:02.387+00', NULL, 'https://storage.danakcorp.com/images/1766563021426-600579018.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7NSHYZ6XESEJR7MCKS7CY0', '2025-12-24 07:57:19.199+00', '2025-12-24 07:57:19.199+00', NULL, 'https://storage.danakcorp.com/images/1766563038525-727531190.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7NSYX5W066SDN0RYBKXHQ3', '2025-12-24 07:57:32.454+00', '2025-12-24 07:57:32.454+00', NULL, 'https://storage.danakcorp.com/images/1766563051485-824602001.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7NTCZK4NYE3KCYDM1247GP', '2025-12-24 07:57:46.867+00', '2025-12-24 07:57:46.867+00', NULL, 'https://storage.danakcorp.com/images/1766563066017-372210647.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7NW5KZEW4M2ZJX93T53G41', '2025-12-24 07:58:44.863+00', '2025-12-24 07:58:44.863+00', NULL, 'https://storage.danakcorp.com/images/1766563124296-331607800.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7NWQ7YFJ7HDNWRB5F1V47Q', '2025-12-24 07:59:02.91+00', '2025-12-24 07:59:02.91+00', NULL, 'https://storage.danakcorp.com/images/1766563142133-359920423.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7NXCZSEN7M2TN0DT0XVVR9', '2025-12-24 07:59:25.177+00', '2025-12-24 07:59:25.177+00', NULL, 'https://storage.danakcorp.com/images/1766563164270-350101986.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7NXXMYZFMAWMRS23GRZSKP', '2025-12-24 07:59:42.238+00', '2025-12-24 07:59:42.238+00', NULL, 'https://storage.danakcorp.com/images/1766563181587-86630830.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7NYP6M0HNC3A4XCXHK4W4M', '2025-12-24 08:00:07.38+00', '2025-12-24 08:00:07.38+00', NULL, 'https://storage.danakcorp.com/images/1766563204966-651499380.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7NZ3PDZX4WTVV3KC5MTD8K', '2025-12-24 08:00:21.198+00', '2025-12-24 08:00:21.198+00', NULL, 'https://storage.danakcorp.com/images/1766563220596-103699525.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7P0FWPK3HTYVX14XMGCHTC', '2025-12-24 08:01:06.455+00', '2025-12-24 08:01:06.455+00', NULL, 'https://storage.danakcorp.com/images/1766563265634-373953449.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7P0SAN0PA6KAGE3ABAXSWF', '2025-12-24 08:01:16.117+00', '2025-12-24 08:01:16.117+00', NULL, 'https://storage.danakcorp.com/images/1766563275517-958045207.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7P1429PQT8NFDFRZEDNH1P', '2025-12-24 08:01:27.113+00', '2025-12-24 08:01:27.113+00', NULL, 'https://storage.danakcorp.com/images/1766563286526-622849562.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7QC4M3D2SF26ZH0S0SDWBD', '2025-12-24 08:24:56.708+00', '2025-12-24 08:24:56.708+00', NULL, 'https://storage.danakcorp.com/images/1766564695339-504553420.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7QCEDA0T3CGZ01NGBKWZ9S', '2025-12-24 08:25:06.73+00', '2025-12-24 08:25:06.73+00', NULL, 'https://storage.danakcorp.com/images/1766564706032-159367016.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7QCWQ00TVCK7BAAHSWA09H', '2025-12-24 08:25:21.376+00', '2025-12-24 08:25:21.376+00', NULL, 'https://storage.danakcorp.com/images/1766564720683-887818252.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7QDA1R9WTTV2JWQ2Y3WGST', '2025-12-24 08:25:35.032+00', '2025-12-24 08:25:35.032+00', NULL, 'https://storage.danakcorp.com/images/1766564734432-483528219.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7QDSCQNW2JC4SAQCK0QBNW', '2025-12-24 08:25:50.743+00', '2025-12-24 08:25:50.743+00', NULL, 'https://storage.danakcorp.com/images/1766564750099-854146988.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7QE1NXGG08JQ5F2BC35NFC', '2025-12-24 08:25:59.23+00', '2025-12-24 08:25:59.23+00', NULL, 'https://storage.danakcorp.com/images/1766564758573-696060786.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7QFFXDVTSB5VAXB640HR7N', '2025-12-24 08:26:46.574+00', '2025-12-24 08:26:46.574+00', NULL, 'https://storage.danakcorp.com/images/1766564805823-829938380.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7QJ37DT4NCD6QY9MNGCZXZ', '2025-12-24 08:28:11.885+00', '2025-12-24 08:28:11.885+00', NULL, 'https://storage.danakcorp.com/images/1766564891137-468827500.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7QJJZX6Y7CR8R60W3TNKRS', '2025-12-24 08:28:28.029+00', '2025-12-24 08:28:28.029+00', NULL, 'https://storage.danakcorp.com/images/1766564907215-921380792.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7QK69ZH6B4S602YKZCBVMB', '2025-12-24 08:28:47.807+00', '2025-12-24 08:28:47.807+00', NULL, 'https://storage.danakcorp.com/images/1766564926872-672612697.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7R3EM739KW6PV431V6P19S', '2025-12-24 08:37:40.616+00', '2025-12-24 08:37:40.616+00', NULL, 'https://storage.danakcorp.com/images/1766565459604-638026702.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7R3YZ6SAQWZ4CMC4GCJ1V4', '2025-12-24 08:37:57.351+00', '2025-12-24 08:37:57.351+00', NULL, 'https://storage.danakcorp.com/images/1766565476771-42527917.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7R4D5BVGPWKXE6A7FNVNRA', '2025-12-24 08:38:11.883+00', '2025-12-24 08:38:11.883+00', NULL, 'https://storage.danakcorp.com/images/1766565491264-946731491.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7R4RFYFFQ4GV5TQ3DH6BW6', '2025-12-24 08:38:23.486+00', '2025-12-24 08:38:23.486+00', NULL, 'https://storage.danakcorp.com/images/1766565502475-288189136.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7R5KMSAGCXZCTQPTVYDTA7', '2025-12-24 08:38:51.289+00', '2025-12-24 08:38:51.289+00', NULL, 'https://storage.danakcorp.com/images/1766565530628-800474580.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7R64HYQD37W8ASB2Q817MW', '2025-12-24 08:39:08.606+00', '2025-12-24 08:39:08.606+00', NULL, 'https://storage.danakcorp.com/images/1766565547983-878658938.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7R6KF9YWZBZ3WPAKXQS2CH', '2025-12-24 08:39:23.881+00', '2025-12-24 08:39:23.881+00', NULL, 'https://storage.danakcorp.com/images/1766565563263-891688321.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7R7RM02R8FZ4DN65WMJVE8', '2025-12-24 08:40:01.92+00', '2025-12-24 08:40:01.92+00', NULL, 'https://storage.danakcorp.com/images/1766565600547-704332792.svg', '01KD7DG4VCTWZRSA54M3PEJ6NW'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7R8G53XBC6AG6KAVSBW94G', '2025-12-24 08:40:26.019+00', '2025-12-24 08:40:26.019+00', NULL, 'https://storage.danakcorp.com/images/1766565625437-528383713.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7R901TPNAX9YYRG6W0GWHF', '2025-12-24 08:40:42.298+00', '2025-12-24 08:40:42.298+00', NULL, 'https://storage.danakcorp.com/images/1766565641620-53176909.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7R9PKF9G1DD1HMS2QQQN9V', '2025-12-24 08:41:05.391+00', '2025-12-24 08:41:05.391+00', NULL, 'https://storage.danakcorp.com/images/1766565664427-433669317.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RK2G6E5JKEDK9P95W79PR', '2025-12-24 08:46:12.487+00', '2025-12-24 08:46:12.487+00', NULL, 'https://storage.danakcorp.com/images/1766565971515-159903323.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RKSM9QD6RA2H6WGE23KEC', '2025-12-24 08:46:36.169+00', '2025-12-24 08:46:36.169+00', NULL, 'https://storage.danakcorp.com/images/1766565995424-288101561.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RMR9DRA1TG2BJ9Q8QAZ15', '2025-12-24 08:47:07.565+00', '2025-12-24 08:47:07.565+00', NULL, 'https://storage.danakcorp.com/images/1766566026942-868807643.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RN6FH0TX69RZTKJKM6MEN', '2025-12-24 08:47:22.097+00', '2025-12-24 08:47:22.097+00', NULL, 'https://storage.danakcorp.com/images/1766566041525-973019175.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RNX4EE92QR2C24577BJCW', '2025-12-24 08:47:45.294+00', '2025-12-24 08:47:45.294+00', NULL, 'https://storage.danakcorp.com/images/1766566064741-271844433.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RPHHCKNXNQH29WSG84D2Z', '2025-12-24 08:48:06.189+00', '2025-12-24 08:48:06.189+00', NULL, 'https://storage.danakcorp.com/images/1766566084368-438871956.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RQ6MFA5CDQ4J55NG3N7PX', '2025-12-24 08:48:27.791+00', '2025-12-24 08:48:27.791+00', NULL, 'https://storage.danakcorp.com/images/1766566106954-47179607.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RQNXJNRXS8MXV57R50PKN', '2025-12-24 08:48:43.443+00', '2025-12-24 08:48:43.443+00', NULL, 'https://storage.danakcorp.com/images/1766566122836-486871124.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RR9W6B9BTWJ0N2H11TWM1', '2025-12-24 08:49:03.879+00', '2025-12-24 08:49:03.879+00', NULL, 'https://storage.danakcorp.com/images/1766566143171-668309076.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RRVQWYHSHN3M7R25GNGHS', '2025-12-24 08:49:22.172+00', '2025-12-24 08:49:22.172+00', NULL, 'https://storage.danakcorp.com/images/1766566161551-844376214.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RSAKAP1TJ59GN11DEAXD9', '2025-12-24 08:49:37.386+00', '2025-12-24 08:49:37.386+00', NULL, 'https://storage.danakcorp.com/images/1766566176755-30806596.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RSV35PY1A6193H4GDW1ZW', '2025-12-24 08:49:54.277+00', '2025-12-24 08:49:54.277+00', NULL, 'https://storage.danakcorp.com/images/1766566193720-339416210.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RWX3D4ZZE35W345HDK35S', '2025-12-24 08:51:34.638+00', '2025-12-24 08:51:34.638+00', NULL, 'https://storage.danakcorp.com/images/1766566293736-981836756.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RX79BVR30WGKXAZQ3D0CM', '2025-12-24 08:51:45.068+00', '2025-12-24 08:51:45.068+00', NULL, 'https://storage.danakcorp.com/images/1766566304318-193301989.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RXY99C8PV6SAR0AJ00F16', '2025-12-24 08:52:08.618+00', '2025-12-24 08:52:08.618+00', NULL, 'https://storage.danakcorp.com/images/1766566327768-2675508.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RYBPV273KCR350ESK2FN1', '2025-12-24 08:52:22.364+00', '2025-12-24 08:52:22.364+00', NULL, 'https://storage.danakcorp.com/images/1766566341717-462491426.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RYTNTE20YS29X2XJT7GY3', '2025-12-24 08:52:37.69+00', '2025-12-24 08:52:37.69+00', NULL, 'https://storage.danakcorp.com/images/1766566357028-432111036.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RZ8K86GCJSW1E0EC5T4B2', '2025-12-24 08:52:51.944+00', '2025-12-24 08:52:51.944+00', NULL, 'https://storage.danakcorp.com/images/1766566371354-279596850.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7RZPNGASPYFP9XKMSY208B', '2025-12-24 08:53:06.352+00', '2025-12-24 08:53:06.352+00', NULL, 'https://storage.danakcorp.com/images/1766566385674-569493499.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7S0HEQZ4AY5TTFKF36HS6F', '2025-12-24 08:53:33.783+00', '2025-12-24 08:53:33.783+00', NULL, 'https://storage.danakcorp.com/images/1766566413058-975642584.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7S0ZEQ6BH163HCX0MQZHBJ', '2025-12-24 08:53:48.119+00', '2025-12-24 08:53:48.119+00', NULL, 'https://storage.danakcorp.com/images/1766566427440-982841441.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7S1EF6R6J6AMMC6HP5J0AA', '2025-12-24 08:54:03.494+00', '2025-12-24 08:54:03.494+00', NULL, 'https://storage.danakcorp.com/images/1766566442808-761588425.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7S27EFH2CDEK71GVQC839G', '2025-12-24 08:54:29.074+00', '2025-12-24 08:54:29.074+00', NULL, 'https://storage.danakcorp.com/images/1766566468108-519151895.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7S2N705Z754YS3YFQW4AGQ', '2025-12-24 08:54:43.169+00', '2025-12-24 08:54:43.169+00', NULL, 'https://storage.danakcorp.com/images/1766566482278-661272876.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7S31HNKPAAK58CX77BNJCA', '2025-12-24 08:54:55.798+00', '2025-12-24 08:54:55.798+00', NULL, 'https://storage.danakcorp.com/images/1766566494050-408184442.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); +INSERT INTO public.icons (id, created_at, updated_at, deleted_at, url, group_id) VALUES ('01KD7S3AX9VW5B830MYJYGXQ0B', '2025-12-24 08:55:05.385+00', '2025-12-24 08:55:05.385+00', NULL, 'https://storage.danakcorp.com/images/1766566504760-709260995.svg', '01KD7DGBDFX76VKXMKQKR51RJK'); + + +-- +-- PostgreSQL database dump complete +-- + +\unrestrict 4pvnNoptyhScdLjLBpsonU6ZnOH502ap2y2am0YHcRG7WkY1NxnW43VtUD3Gq85 + diff --git a/dump/named_icons.csv b/dump/named_icons.csv new file mode 100644 index 0000000..2139efa --- /dev/null +++ b/dump/named_icons.csv @@ -0,0 +1,138 @@ +Index,Name,URL +1,bread,https://storage.danakcorp.com/images/1766554365832-411750172.svg +2,avocado,https://storage.danakcorp.com/images/1766554379149-104970938.svg +3,knife,https://storage.danakcorp.com/images/1766554389090-593863597.svg +4,baby bottle,https://storage.danakcorp.com/images/1766554404968-905984091.svg +5,baby bottle,https://storage.danakcorp.com/images/1766554415325-873800591.svg +6,baby pacifier,https://storage.danakcorp.com/images/1766554428814-77027818.svg +7,banana,https://storage.danakcorp.com/images/1766554438632-45072052.svg +8,barbecue,https://storage.danakcorp.com/images/1766554446340-463157109.svg +9,barbeque2,https://storage.danakcorp.com/images/1766554456605-280166176.svg +10,drink,https://storage.danakcorp.com/images/1766554471887-315640495.svg +11,hanburger,https://storage.danakcorp.com/images/1766554485634-242317100.svg +12,drink2,https://storage.danakcorp.com/images/1766554504553-157481346.svg +13,bottle1,https://storage.danakcorp.com/images/1766554528198-919877647.svg +14,bottle2,https://storage.danakcorp.com/images/1766554544140-886744157.svg +15,broccoli,https://storage.danakcorp.com/images/1766554565614-684869010.svg +16,cake1,https://storage.danakcorp.com/images/1766554578855-318583145.svg +17,cake2,https://storage.danakcorp.com/images/1766554593272-362758712.svg +18,cake piece,https://storage.danakcorp.com/images/1766554606166-877198688.svg +19,cup cake,https://storage.danakcorp.com/images/1766554624133-21439996.svg +20,caupcake2,https://storage.danakcorp.com/images/1766554641691-535696200.svg +21,candle,https://storage.danakcorp.com/images/1766554658481-114730426.svg +22,candy,https://storage.danakcorp.com/images/1766554671760-634916570.svg +23,carrot,https://storage.danakcorp.com/images/1766554967381-660612838.svg +24,cheese,https://storage.danakcorp.com/images/1766555106925-267924006.svg +25,cheese2,https://storage.danakcorp.com/images/1766555231674-387319393.svg +26,hat robe,https://storage.danakcorp.com/images/1766555290519-155637622.svg +27,hat robe 2,https://storage.danakcorp.com/images/1766555308301-230359494.svg +28,cherry,https://storage.danakcorp.com/images/1766555420851-186440015.svg +29,chicken,https://storage.danakcorp.com/images/1766555590828-644527730.svg +30,baken,https://storage.danakcorp.com/images/1766555606997-571682462.svg +31,lollipop,https://storage.danakcorp.com/images/1766555663659-433052581.svg +32,cookie1,https://storage.danakcorp.com/images/1766555713098-988242030.svg +33,cookie2,https://storage.danakcorp.com/images/1766555726158-680948882.svg +34,crosson,https://storage.danakcorp.com/images/1766555746650-426516324.svg +35,juice,https://storage.danakcorp.com/images/1766555765798-127083646.svg +36,juice2,https://storage.danakcorp.com/images/1766555784837-243715698.svg +37,juice3,https://storage.danakcorp.com/images/1766555799191-594035927.svg +38,spoon and fork 1,https://storage.danakcorp.com/images/1766555894624-524350777.svg +39,spoon and fork 2,https://storage.danakcorp.com/images/1766555932114-485954688.svg +40,spoon and knife,https://storage.danakcorp.com/images/1766555949650-909996041.svg +41,fork and knife,https://storage.danakcorp.com/images/1766555966861-75517122.svg +42,hot dog,https://storage.danakcorp.com/images/1766556006875-239689681.svg +43,soap,https://storage.danakcorp.com/images/1766556257163-459958715.svg +44,dish,https://storage.danakcorp.com/images/1766556293812-665835248.svg +45,donuts,https://storage.danakcorp.com/images/1766556307082-162280793.svg +46,egg plant,https://storage.danakcorp.com/images/1766556340402-744632392.svg +47,egg,https://storage.danakcorp.com/images/1766556458335-857124841.svg +48,fast-food,https://storage.danakcorp.com/images/1766556479530-161860621.svg +49,taco,https://storage.danakcorp.com/images/1766556498215-91175544.svg +50,fire,https://storage.danakcorp.com/images/1766556677355-108854669.svg +51,fish,https://storage.danakcorp.com/images/1766556736283-691587656.svg +52,fish,https://storage.danakcorp.com/images/1766556759367-58066921.svg +53,french fries,https://storage.danakcorp.com/images/1766556777353-490756125.svg +54,fried egg,https://storage.danakcorp.com/images/1766556870740-118553581.svg +55,refrigerator,https://storage.danakcorp.com/images/1766556890334-962678132.svg +56,grape,https://storage.danakcorp.com/images/1766556921029-865260745.svg +57,hat robe,https://storage.danakcorp.com/images/1766556946363-320833501.svg +58,hot dog,https://storage.danakcorp.com/images/1766556973771-832565827.svg +59,ice cream,https://storage.danakcorp.com/images/1766557056358-727862983.svg +60,ice cream,https://storage.danakcorp.com/images/1766557199259-72955190.svg +61,ice cream 3,https://storage.danakcorp.com/images/1766557252452-988016525.svg +62,jar,https://storage.danakcorp.com/images/1766557274778-439028456.svg +63,jelly,https://storage.danakcorp.com/images/1766557289094-415104854.svg +64,juice1,https://storage.danakcorp.com/images/1766557300923-302277606.svg +65,juice 2,https://storage.danakcorp.com/images/1766557317091-602116315.svg +66,kitchen stove,https://storage.danakcorp.com/images/1766557647999-47333939.svg +67,orange slash,https://storage.danakcorp.com/images/1766557669282-172512141.svg +68,loaf of bread,https://storage.danakcorp.com/images/1766557705283-692546793.svg +69,loaf of bread 2,https://storage.danakcorp.com/images/1766557729175-762576743.svg +70,meat,https://storage.danakcorp.com/images/1766557756487-665300947.svg +71,meat 2,https://storage.danakcorp.com/images/1766557776067-804149228.svg +72,mixer,https://storage.danakcorp.com/images/1766557797509-101726352.svg +73,mortar,https://storage.danakcorp.com/images/1766557816484-357699340.svg +74,noodle,https://storage.danakcorp.com/images/1766557837292-326521286.svg +75,nuts,https://storage.danakcorp.com/images/1766559083575-564721059.svg +76,olive,https://storage.danakcorp.com/images/1766559099561-720966516.svg +77,onion,https://storage.danakcorp.com/images/1766559116496-834964990.svg +78,pizza,https://storage.danakcorp.com/images/1766563021426-600579018.svg +79,rolling pin,https://storage.danakcorp.com/images/1766563038525-727531190.svg +80,solt,https://storage.danakcorp.com/images/1766563051485-824602001.svg +81,scales,https://storage.danakcorp.com/images/1766563066017-372210647.svg +82,basket,https://storage.danakcorp.com/images/1766563124296-331607800.svg +83,skewer,https://storage.danakcorp.com/images/1766563142133-359920423.svg +84,strawberry,https://storage.danakcorp.com/images/1766563164270-350101986.svg +85,toast,https://storage.danakcorp.com/images/1766563181587-86630830.svg +86,watermelon,https://storage.danakcorp.com/images/1766563204966-651499380.svg +87,whisk,https://storage.danakcorp.com/images/1766563220596-103699525.svg +88,wine glass,https://storage.danakcorp.com/images/1766563265634-373953449.svg +89,wine glass 2,https://storage.danakcorp.com/images/1766563275517-958045207.svg +90,wine glass 3,https://storage.danakcorp.com/images/1766563286526-622849562.svg +91,colored bakeries,https://storage.danakcorp.com/images/1766564695339-504553420.svg +92,colored bio,https://storage.danakcorp.com/images/1766564706032-159367016.svg +93,colored bibimbap,https://storage.danakcorp.com/images/1766564720683-887818252.svg +94,colored boba,https://storage.danakcorp.com/images/1766564734432-483528219.svg +95,colored breakfast,https://storage.danakcorp.com/images/1766564750099-854146988.svg +96,colored hamburger,https://storage.danakcorp.com/images/1766564758573-696060786.svg +97,colored hamburger 2,https://storage.danakcorp.com/images/1766564805823-829938380.svg +98,colored coffee,https://storage.danakcorp.com/images/1766564891137-468827500.svg +99,colored coca,https://storage.danakcorp.com/images/1766564907215-921380792.svg +100,colored cookies,https://storage.danakcorp.com/images/1766564926872-672612697.svg +101,colored noodle,https://storage.danakcorp.com/images/1766565459604-638026702.svg +102,colored crossan,https://storage.danakcorp.com/images/1766565476771-42527917.svg +103,colored sweet,https://storage.danakcorp.com/images/1766565491264-946731491.svg +104,colored dumpling,https://storage.danakcorp.com/images/1766565502475-288189136.svg +105,colored fish and chips,https://storage.danakcorp.com/images/1766565530628-800474580.svg +106,colored focaccia,https://storage.danakcorp.com/images/1766565547983-878658938.svg +107,colored french fries,https://storage.danakcorp.com/images/1766565563263-891688321.svg +108,colored fried chicken,https://storage.danakcorp.com/images/1766565600547-704332792.svg +109,colored fried rice,https://storage.danakcorp.com/images/1766565625437-528383713.svg +110,colored fries,https://storage.danakcorp.com/images/1766565641620-53176909.svg +111,hat robe,https://storage.danakcorp.com/images/1766565664427-433669317.svg +112,colored hot dog,https://storage.danakcorp.com/images/1766565971515-159903323.svg +113,colored hot dog,https://storage.danakcorp.com/images/1766565995424-288101561.svg +114,colored hot pot,https://storage.danakcorp.com/images/1766566026942-868807643.svg +115,colored ice cream,https://storage.danakcorp.com/images/1766566041525-973019175.svg +116,colored ice tea,https://storage.danakcorp.com/images/1766566064741-271844433.svg +117,colored instant noodle cup,https://storage.danakcorp.com/images/1766566084368-438871956.svg +118,lemon,https://storage.danakcorp.com/images/1766566106954-47179607.svg +119,colored martini,https://storage.danakcorp.com/images/1766566122836-486871124.svg +120,colored match,https://storage.danakcorp.com/images/1766566143171-668309076.svg +121,colored mochi donuts,https://storage.danakcorp.com/images/1766566161551-844376214.svg +122,colored mochi,https://storage.danakcorp.com/images/1766566176755-30806596.svg +123,colored nachos,https://storage.danakcorp.com/images/1766566193720-339416210.svg +124,colored origini,https://storage.danakcorp.com/images/1766566293736-981836756.svg +125,colored pan cake,https://storage.danakcorp.com/images/1766566304318-193301989.svg +126,colored pepperoni pizza,https://storage.danakcorp.com/images/1766566327768-2675508.svg +127,colored pizza 4,https://storage.danakcorp.com/images/1766566341717-462491426.svg +128,colored podding,https://storage.danakcorp.com/images/1766566357028-432111036.svg +129,quesadilla,https://storage.danakcorp.com/images/1766566371354-279596850.svg +130,salad,https://storage.danakcorp.com/images/1766566385674-569493499.svg +131,colored sandwich,https://storage.danakcorp.com/images/1766566413058-975642584.svg +132,colored stak,https://storage.danakcorp.com/images/1766566427440-982841441.svg +133,colored soshi,https://storage.danakcorp.com/images/1766566442808-761588425.svg +134,colored taco,https://storage.danakcorp.com/images/1766566468108-519151895.svg +135,colored tempura,https://storage.danakcorp.com/images/1766566482278-661272876.svg +136,colored tafu,https://storage.danakcorp.com/images/1766566494050-408184442.svg +137,whisk,https://storage.danakcorp.com/images/1766566504760-709260995.svg diff --git a/dump/populate_icon_names.js b/dump/populate_icon_names.js new file mode 100644 index 0000000..240dfd3 --- /dev/null +++ b/dump/populate_icon_names.js @@ -0,0 +1,58 @@ +const fs = require('fs'); +const path = require('path'); + +// Read the CSV file +const csvPath = path.join(__dirname, 'icons.csv'); +const csvContent = fs.readFileSync(csvPath, 'utf8'); + +// Parse CSV lines +const lines = csvContent.split('\n').filter(line => line.trim()); +const header = lines[0]; +const dataLines = lines.slice(1); + +// Icon names - replace these with your actual icon names after reviewing them +const iconNames = [ + // Add your icon names here, one for each row + // Example: "hamburger", "pizza", "drink", etc. + // For now, placeholders: + "icon_1", "icon_2", "icon_3", "icon_4", "icon_5", "icon_6", "icon_7", "icon_8", "icon_9", "icon_10", + "icon_11", "icon_12", "icon_13", "icon_14", "icon_15", "icon_16", "icon_17", "icon_18", "icon_19", "icon_20", + "icon_21", "icon_22", "icon_23", "icon_24", "icon_25", "icon_26", "icon_27", "icon_28", "icon_29", "icon_30", + "icon_31", "icon_32", "icon_33", "icon_34", "icon_35", "icon_36", "icon_37", "icon_38", "icon_39", "icon_40", + "icon_41", "icon_42", "icon_43", "icon_44", "icon_45", "icon_46", "icon_47", "icon_48", "icon_49", "icon_50", + "icon_51", "icon_52", "icon_53", "icon_54", "icon_55", "icon_56", "icon_57", "icon_58", "icon_59", "icon_60", + "icon_61", "icon_62", "icon_63", "icon_64", "icon_65", "icon_66", "icon_67", "icon_68", "icon_69", "icon_70", + "icon_71", "icon_72", "icon_73", "icon_74", "icon_75", "icon_76", "icon_77", "icon_78", "icon_79", "icon_80", + "icon_81", "icon_82", "icon_83", "icon_84", "icon_85", "icon_86", "icon_87", "icon_88", "icon_89", "icon_90", + "icon_91", "icon_92", "icon_93", "icon_94", "icon_95", "icon_96", "icon_97", "icon_98", "icon_99", "icon_100", + "icon_101", "icon_102", "icon_103", "icon_104", "icon_105", "icon_106", "icon_107", "icon_108", "icon_109", "icon_110", + "icon_111", "icon_112", "icon_113", "icon_114", "icon_115", "icon_116", "icon_117", "icon_118", "icon_119", "icon_120", + "icon_121", "icon_122", "icon_123", "icon_124", "icon_125", "icon_126", "icon_127", "icon_128", "icon_129", "icon_130", + "icon_131", "icon_132", "icon_133", "icon_134", "icon_135", "icon_136", "icon_137", "icon_138" +]; + +// Validate that we have the right number of names +if (iconNames.length !== dataLines.length) { + console.error(`Error: You provided ${iconNames.length} icon names but there are ${dataLines.length} data rows in the CSV.`); + process.exit(1); +} + +// Create new CSV content with icon names +const newLines = [header]; + +dataLines.forEach((line, index) => { + // Remove trailing comma if present and add the icon name + const cleanLine = line.replace(/,$/, ''); + newLines.push(`${cleanLine},"${iconNames[index]}"`); +}); + +// Write the updated CSV +const newCsvContent = newLines.join('\n'); +fs.writeFileSync(csvPath, newCsvContent, 'utf8'); + +console.log(`✅ Successfully added ${iconNames.length} icon names to icons.csv`); +console.log('📁 File saved:', csvPath); + +// Show summary +const namedCount = iconNames.filter(name => name && !name.startsWith('icon_')).length; +console.log(`📊 ${namedCount} custom names, ${iconNames.length - namedCount} placeholder names`); diff --git a/dump/restore-icons.sh b/dump/restore-icons.sh new file mode 100755 index 0000000..140b3a6 --- /dev/null +++ b/dump/restore-icons.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +# Script to restore icon and icon_groups tables to PostgreSQL database +# Usage: ./restore-icons.sh [dump_file] + +set -e + +# Load environment variables if .env file exists +if [ -f .env ]; then + set -a + # Source .env file, handling comments and empty lines + while IFS= read -r line || [ -n "$line" ]; do + # Remove leading/trailing whitespace + line=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') + # Skip empty lines and lines starting with # + [[ -z "$line" ]] && continue + [[ "$line" =~ ^# ]] && continue + # Remove inline comments (everything after # that's not in quotes) + line=$(echo "$line" | sed 's/#.*$//' | sed 's/[[:space:]]*$//') + # Skip if line is empty after removing comments + [[ -z "$line" ]] && continue + # Export the variable (only if it looks like KEY=VALUE) + if [[ "$line" =~ ^[[:alpha:]_][[:alnum:]_]*= ]]; then + export "$line" 2>/dev/null || true + fi + done < .env + set +a +fi + +# Get database connection details from environment variables +DB_HOST="${DB_HOST:-localhost}" +DB_PORT="${DB_PORT:-5432}" +DB_NAME="${DB_NAME:-dmenu}" +DB_USER="${DB_USER:-postgres}" + +# Input file name +if [ -z "$1" ]; then + echo "Error: Please provide a dump file to restore" + echo "Usage: ./restore-icons.sh " + echo "Example: ./restore-icons.sh icons_dump_20240101_120000.sql" + exit 1 +fi + +DUMP_FILE="$1" + +# Check if dump file exists +if [ ! -f "${DUMP_FILE}" ]; then + echo "Error: Dump file '${DUMP_FILE}' not found!" + exit 1 +fi + +echo "Restoring icon_groups and icons tables..." +echo "Database: ${DB_NAME}@${DB_HOST}:${DB_PORT}" +echo "Dump file: ${DUMP_FILE}" +echo "" + +# Ask for confirmation +read -p "This will replace existing data in icon_groups and icons tables. Continue? (y/N) " -n 1 -r +echo +if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "Restore cancelled." + exit 0 +fi + +# Disable foreign key checks temporarily and truncate tables +echo "Clearing existing data..." +PGPASSWORD="${DB_PASS}" psql \ + -h "${DB_HOST}" \ + -p "${DB_PORT}" \ + -U "${DB_USER}" \ + -d "${DB_NAME}" \ + -c "TRUNCATE TABLE icons CASCADE;" \ + -c "TRUNCATE TABLE icon_groups CASCADE;" + +# Restore data from dump file +echo "Restoring data from ${DUMP_FILE}..." +PGPASSWORD="${DB_PASS}" psql \ + -h "${DB_HOST}" \ + -p "${DB_PORT}" \ + -U "${DB_USER}" \ + -d "${DB_NAME}" \ + -f "${DUMP_FILE}" + +echo "" +echo "Restore completed successfully!" +echo "" + +# Verify the restore +echo "Verifying restore..." +ICON_GROUPS_COUNT=$(PGPASSWORD="${DB_PASS}" psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d "${DB_NAME}" -t -c "SELECT COUNT(*) FROM icon_groups;") +ICONS_COUNT=$(PGPASSWORD="${DB_PASS}" psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d "${DB_NAME}" -t -c "SELECT COUNT(*) FROM icons;") + +echo "icon_groups records: ${ICON_GROUPS_COUNT}" +echo "icons records: ${ICONS_COUNT}" + diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..44698c4 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,36 @@ +// @ts-check +import eslint from '@eslint/js'; +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { + ignores: ['eslint.config.mjs'], + }, + eslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + eslintPluginPrettierRecommended, + { + languageOptions: { + globals: { + ...globals.node, + ...globals.jest, + }, + sourceType: 'commonjs', + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + { + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-unsafe-argument': 'warn', + '@typescript-eslint/consistent-type-imports': 'error', + '@typescript-eslint/no-unused-vars': 'error', + }, + }, +); diff --git a/nest-cli.json b/nest-cli.json new file mode 100644 index 0000000..f9aa683 --- /dev/null +++ b/nest-cli.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/nest-cli", + "collection": "@nestjs/schematics", + "sourceRoot": "src", + "compilerOptions": { + "deleteOutDir": true + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4136097 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17122 @@ +{ + "name": "base-api", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "base-api", + "version": "0.0.1", + "license": "UNLICENSED", + "dependencies": { + "@apollo/server": "^5.1.0", + "@as-integrations/fastify": "^3.1.0", + "@aws-sdk/client-s3": "^3.922.0", + "@aws-sdk/s3-request-presigner": "^3.922.0", + "@fastify/cookie": "^11.0.2", + "@fastify/multipart": "^9.3.0", + "@fastify/static": "^8.3.0", + "@keyv/redis": "^5.1.3", + "@mikro-orm/core": "^6.5.8", + "@mikro-orm/nestjs": "^6.1.1", + "@mikro-orm/postgresql": "^6.5.8", + "@nest-lab/fastify-multer": "^1.3.0", + "@nestjs/axios": "^4.0.1", + "@nestjs/bullmq": "^11.0.4", + "@nestjs/cache-manager": "^3.0.1", + "@nestjs/common": "^11.0.1", + "@nestjs/config": "^4.0.2", + "@nestjs/core": "^11.0.1", + "@nestjs/event-emitter": "^3.0.1", + "@nestjs/jwt": "^11.0.1", + "@nestjs/mapped-types": "*", + "@nestjs/platform-express": "^11.0.1", + "@nestjs/platform-fastify": "^11.1.8", + "@nestjs/platform-socket.io": "^11.1.9", + "@nestjs/schedule": "^6.0.1", + "@nestjs/swagger": "^11.2.1", + "@nestjs/throttler": "^6.4.0", + "@types/socket.io": "^3.0.1", + "axios": "^1.13.1", + "bullmq": "^5.65.1", + "cache-manager": "^7.2.4", + "cacheable": "^2.3.1", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.2", + "dayjs": "^1.11.19", + "fastify": "^5.6.1", + "firebase-admin": "^13.6.0", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1", + "sanitize-html": "^2.17.0", + "slugify": "^1.6.6", + "socket.io": "^4.8.1", + "ulid": "^3.0.1", + "uuid": "^13.0.0" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.18.0", + "@mikro-orm/cli": "^6.5.8", + "@mikro-orm/migrations": "^6.5.8", + "@mikro-orm/seeder": "^6.5.8", + "@nestjs/cli": "^11.0.0", + "@nestjs/schematics": "^11.0.0", + "@nestjs/testing": "^11.0.1", + "@types/express": "^5.0.0", + "@types/jest": "^30.0.0", + "@types/node": "^22.10.7", + "@types/sanitize-html": "^2.16.0", + "@types/supertest": "^6.0.2", + "@types/uuid": "^10.0.0", + "eslint": "^9.18.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.2", + "globals": "^16.0.0", + "jest": "^30.0.0", + "prettier": "^3.4.2", + "source-map-support": "^0.5.21", + "supertest": "^7.0.0", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", + "typescript": "^5.7.3", + "typescript-eslint": "^8.20.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.15.tgz", + "integrity": "sha512-pU2RZYX6vhd7uLSdLwPnuBcr0mXJSjp3EgOXKsrlQFQZevc+Qs+2JdXgIElnOT/aDqtRtriDmLlSbtdE8n3ZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/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==", + "dev": true, + "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/@angular-devkit/core/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.15.tgz", + "integrity": "sha512-kNOJ+3vekJJCQKWihNmxBkarJzNW09kP5a9E1SRNiQVNOUEeSwcRR0qYotM65nx821gNzjjhJXnAZ8OazWldrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.15", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli": { + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.15.tgz", + "integrity": "sha512-1ESFmFGMpGQmalDB3t2EtmWDGv6gOFYBMxmHO2f1KI/UDl8UmZnCGL4mD3EWo8Hv0YIsZ9wOH9Q7ZHNYjeSpzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.15", + "@angular-devkit/schematics": "19.2.15", + "@inquirer/prompts": "7.3.2", + "ansi-colors": "4.1.3", + "symbol-observable": "4.0.0", + "yargs-parser": "21.1.1" + }, + "bin": { + "schematics": "bin/schematics.js" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", + "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.1.2", + "@inquirer/confirm": "^5.1.6", + "@inquirer/editor": "^4.2.7", + "@inquirer/expand": "^4.0.9", + "@inquirer/input": "^4.1.6", + "@inquirer/number": "^3.0.9", + "@inquirer/password": "^4.0.9", + "@inquirer/rawlist": "^4.0.9", + "@inquirer/search": "^3.0.9", + "@inquirer/select": "^4.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@apollo/cache-control-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@apollo/cache-control-types/-/cache-control-types-1.0.3.tgz", + "integrity": "sha512-F17/vCp7QVwom9eG7ToauIKdAxpSoadsJnqIfyryLFSkLSOEqu+eC5Z3N8OXcUVStuOMcNHlyraRsA6rRICu4g==", + "license": "MIT", + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/protobufjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.7.tgz", + "integrity": "sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "long": "^4.0.0" + }, + "bin": { + "apollo-pbjs": "bin/pbjs", + "apollo-pbts": "bin/pbts" + } + }, + "node_modules/@apollo/server": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-5.1.0.tgz", + "integrity": "sha512-azqwwmKp23TMFQkjE66622sdY2Ao9d+LrebW++b3rFCNxU6XAl/vRwInOh9ejNgShDQzVS+bdCIFQnH9+r+N1A==", + "license": "MIT", + "dependencies": { + "@apollo/cache-control-types": "^1.0.3", + "@apollo/server-gateway-interface": "^2.0.0", + "@apollo/usage-reporting-protobuf": "^4.1.1", + "@apollo/utils.createhash": "^3.0.0", + "@apollo/utils.fetcher": "^3.0.0", + "@apollo/utils.isnodelike": "^3.0.0", + "@apollo/utils.keyvaluecache": "^4.0.0", + "@apollo/utils.logger": "^3.0.0", + "@apollo/utils.usagereporting": "^2.1.0", + "@apollo/utils.withrequired": "^3.0.0", + "@graphql-tools/schema": "^10.0.0", + "async-retry": "^1.2.1", + "body-parser": "^2.2.0", + "cors": "^2.8.5", + "finalhandler": "^2.1.0", + "loglevel": "^1.6.8", + "lru-cache": "^11.1.0", + "negotiator": "^1.0.0", + "uuid": "^11.1.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "graphql": "^16.11.0" + } + }, + "node_modules/@apollo/server-gateway-interface": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@apollo/server-gateway-interface/-/server-gateway-interface-2.0.0.tgz", + "integrity": "sha512-3HEMD6fSantG2My3jWkb9dvfkF9vJ4BDLRjMgsnD790VINtuPaEp+h3Hg9HOHiWkML6QsOhnaRqZ+gvhp3y8Nw==", + "license": "MIT", + "dependencies": { + "@apollo/usage-reporting-protobuf": "^4.1.1", + "@apollo/utils.fetcher": "^3.0.0", + "@apollo/utils.keyvaluecache": "^4.0.0", + "@apollo/utils.logger": "^3.0.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/server/node_modules/lru-cache": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@apollo/server/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/@apollo/usage-reporting-protobuf": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.1.tgz", + "integrity": "sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA==", + "license": "MIT", + "dependencies": { + "@apollo/protobufjs": "1.2.7" + } + }, + "node_modules/@apollo/utils.createhash": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-3.0.1.tgz", + "integrity": "sha512-CKrlySj4eQYftBE5MJ8IzKwIibQnftDT7yGfsJy5KSEEnLlPASX0UTpbKqkjlVEwPPd4mEwI7WOM7XNxEuO05A==", + "license": "MIT", + "dependencies": { + "@apollo/utils.isnodelike": "^3.0.0", + "sha.js": "^2.4.11" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@apollo/utils.dropunuseddefinitions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-2.0.1.tgz", + "integrity": "sha512-EsPIBqsSt2BwDsv8Wu76LK5R1KtsVkNoO4b0M5aK0hx+dGg9xJXuqlr7Fo34Dl+y83jmzn+UvEW+t1/GP2melA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.fetcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-3.1.0.tgz", + "integrity": "sha512-Z3QAyrsQkvrdTuHAFwWDNd+0l50guwoQUoaDQssLOjkmnmVuvXlJykqlEJolio+4rFwBnWdoY1ByFdKaQEcm7A==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/@apollo/utils.isnodelike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-3.0.0.tgz", + "integrity": "sha512-xrjyjfkzunZ0DeF6xkHaK5IKR8F1FBq6qV+uZ+h9worIF/2YSzA0uoBxGv6tbTeo9QoIQnRW4PVFzGix5E7n/g==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/@apollo/utils.keyvaluecache": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-4.0.0.tgz", + "integrity": "sha512-mKw1myRUkQsGPNB+9bglAuhviodJ2L2MRYLTafCMw5BIo7nbvCPNCkLnIHjZ1NOzH7SnMAr5c9LmXiqsgYqLZw==", + "license": "MIT", + "dependencies": { + "@apollo/utils.logger": "^3.0.0", + "lru-cache": "^11.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@apollo/utils.keyvaluecache/node_modules/lru-cache": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@apollo/utils.logger": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-3.0.0.tgz", + "integrity": "sha512-M8V8JOTH0F2qEi+ktPfw4RL7MvUycDfKp7aEap2eWXfL5SqWHN6jTLbj5f5fj1cceHpyaUSOZlvlaaryaxZAmg==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/@apollo/utils.printwithreducedwhitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-2.0.1.tgz", + "integrity": "sha512-9M4LUXV/fQBh8vZWlLvb/HyyhjJ77/I5ZKu+NBWV/BmYGyRmoEP9EVAy7LCVoY3t8BDcyCAGfxJaLFCSuQkPUg==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.removealiases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-2.0.1.tgz", + "integrity": "sha512-0joRc2HBO4u594Op1nev+mUF6yRnxoUH64xw8x3bX7n8QBDYdeYgY4tF0vJReTy+zdn2xv6fMsquATSgC722FA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.sortast": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-2.0.1.tgz", + "integrity": "sha512-eciIavsWpJ09za1pn37wpsCGrQNXUhM0TktnZmHwO+Zy9O4fu/WdB4+5BvVhFiZYOXvfjzJUcc+hsIV8RUOtMw==", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.stripsensitiveliterals": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-2.0.1.tgz", + "integrity": "sha512-QJs7HtzXS/JIPMKWimFnUMK7VjkGQTzqD9bKD1h3iuPAqLsxd0mUNVbkYOPTsDhUKgcvUOfOqOJWYohAKMvcSA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.usagereporting": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-2.1.0.tgz", + "integrity": "sha512-LPSlBrn+S17oBy5eWkrRSGb98sWmnEzo3DPTZgp8IQc8sJe0prDgDuppGq4NeQlpoqEHz0hQeYHAOA0Z3aQsxQ==", + "license": "MIT", + "dependencies": { + "@apollo/usage-reporting-protobuf": "^4.1.0", + "@apollo/utils.dropunuseddefinitions": "^2.0.1", + "@apollo/utils.printwithreducedwhitespace": "^2.0.1", + "@apollo/utils.removealiases": "2.0.1", + "@apollo/utils.sortast": "^2.0.1", + "@apollo/utils.stripsensitiveliterals": "^2.0.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.withrequired": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.withrequired/-/utils.withrequired-3.0.0.tgz", + "integrity": "sha512-aaxeavfJ+RHboh7c2ofO5HHtQobGX4AgUujXP4CXpREHp9fQ9jPi6K9T1jrAKe7HIipoP0OJ1gd6JamSkFIpvA==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/@as-integrations/fastify": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@as-integrations/fastify/-/fastify-3.1.0.tgz", + "integrity": "sha512-hfK5adsybNj0qRc+5BiCOy50SqqOhPIctvaaGsjqq7ui8lO/TZkLtz6IvDhWC70vOcMXJuMJCTTEb4hex8RVgw==", + "license": "MIT", + "dependencies": { + "fastify-plugin": "^5.0.1" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "@apollo/server": "^4.0.0 || ^5.0.0", + "fastify": "^5.3.0" + } + }, + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/crc32c": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.922.0.tgz", + "integrity": "sha512-SZRaZUUAHCWfEyBf4SRSPd29ko4uFoJpfd0E/w1meE68XhFB52FTtz/71UqYcwqZmN+s7oUNFFZT+DE/dnQSEA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.922.0", + "@aws-sdk/credential-provider-node": "3.922.0", + "@aws-sdk/middleware-bucket-endpoint": "3.922.0", + "@aws-sdk/middleware-expect-continue": "3.922.0", + "@aws-sdk/middleware-flexible-checksums": "3.922.0", + "@aws-sdk/middleware-host-header": "3.922.0", + "@aws-sdk/middleware-location-constraint": "3.922.0", + "@aws-sdk/middleware-logger": "3.922.0", + "@aws-sdk/middleware-recursion-detection": "3.922.0", + "@aws-sdk/middleware-sdk-s3": "3.922.0", + "@aws-sdk/middleware-ssec": "3.922.0", + "@aws-sdk/middleware-user-agent": "3.922.0", + "@aws-sdk/region-config-resolver": "3.922.0", + "@aws-sdk/signature-v4-multi-region": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@aws-sdk/util-endpoints": "3.922.0", + "@aws-sdk/util-user-agent-browser": "3.922.0", + "@aws-sdk/util-user-agent-node": "3.922.0", + "@aws-sdk/xml-builder": "3.921.0", + "@smithy/config-resolver": "^4.4.1", + "@smithy/core": "^3.17.2", + "@smithy/eventstream-serde-browser": "^4.2.4", + "@smithy/eventstream-serde-config-resolver": "^4.3.4", + "@smithy/eventstream-serde-node": "^4.2.4", + "@smithy/fetch-http-handler": "^5.3.5", + "@smithy/hash-blob-browser": "^4.2.5", + "@smithy/hash-node": "^4.2.4", + "@smithy/hash-stream-node": "^4.2.4", + "@smithy/invalid-dependency": "^4.2.4", + "@smithy/md5-js": "^4.2.4", + "@smithy/middleware-content-length": "^4.2.4", + "@smithy/middleware-endpoint": "^4.3.6", + "@smithy/middleware-retry": "^4.4.6", + "@smithy/middleware-serde": "^4.2.4", + "@smithy/middleware-stack": "^4.2.4", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/node-http-handler": "^4.4.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/url-parser": "^4.2.4", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.5", + "@smithy/util-defaults-mode-node": "^4.2.7", + "@smithy/util-endpoints": "^3.2.4", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-retry": "^4.2.4", + "@smithy/util-stream": "^4.5.5", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.4", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.922.0.tgz", + "integrity": "sha512-jdHs7uy7cSpiMvrxhYmqHyJxgK7hyqw4plG8OQ4YTBpq0SbfAxdoOuOkwJ1IVUUQho4otR1xYYjiX/8e8J8qwQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.922.0", + "@aws-sdk/middleware-host-header": "3.922.0", + "@aws-sdk/middleware-logger": "3.922.0", + "@aws-sdk/middleware-recursion-detection": "3.922.0", + "@aws-sdk/middleware-user-agent": "3.922.0", + "@aws-sdk/region-config-resolver": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@aws-sdk/util-endpoints": "3.922.0", + "@aws-sdk/util-user-agent-browser": "3.922.0", + "@aws-sdk/util-user-agent-node": "3.922.0", + "@smithy/config-resolver": "^4.4.1", + "@smithy/core": "^3.17.2", + "@smithy/fetch-http-handler": "^5.3.5", + "@smithy/hash-node": "^4.2.4", + "@smithy/invalid-dependency": "^4.2.4", + "@smithy/middleware-content-length": "^4.2.4", + "@smithy/middleware-endpoint": "^4.3.6", + "@smithy/middleware-retry": "^4.4.6", + "@smithy/middleware-serde": "^4.2.4", + "@smithy/middleware-stack": "^4.2.4", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/node-http-handler": "^4.4.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/url-parser": "^4.2.4", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.5", + "@smithy/util-defaults-mode-node": "^4.2.7", + "@smithy/util-endpoints": "^3.2.4", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-retry": "^4.2.4", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.922.0.tgz", + "integrity": "sha512-EvfP4cqJfpO3L2v5vkIlTkMesPtRwWlMfsaW6Tpfm7iYfBOuTi6jx60pMDMTyJNVfh6cGmXwh/kj1jQdR+w99Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@aws-sdk/xml-builder": "3.921.0", + "@smithy/core": "^3.17.2", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/property-provider": "^4.2.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/signature-v4": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.922.0.tgz", + "integrity": "sha512-WikGQpKkROJSK3D3E7odPjZ8tU7WJp5/TgGdRuZw3izsHUeH48xMv6IznafpRTmvHcjAbDQj4U3CJZNAzOK/OQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/property-provider": "^4.2.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.922.0.tgz", + "integrity": "sha512-i72DgHMK7ydAEqdzU0Duqh60Q8W59EZmRJ73y0Y5oFmNOqnYsAI+UXyOoCsubp+Dkr6+yOwAn1gPt1XGE9Aowg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/fetch-http-handler": "^5.3.5", + "@smithy/node-http-handler": "^4.4.4", + "@smithy/property-provider": "^4.2.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/util-stream": "^4.5.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.922.0.tgz", + "integrity": "sha512-bVF+pI5UCLNkvbiZr/t2fgTtv84s8FCdOGAPxQiQcw5qOZywNuuCCY3wIIchmQr6GJr8YFkEp5LgDCac5EC5aQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/credential-provider-env": "3.922.0", + "@aws-sdk/credential-provider-http": "3.922.0", + "@aws-sdk/credential-provider-process": "3.922.0", + "@aws-sdk/credential-provider-sso": "3.922.0", + "@aws-sdk/credential-provider-web-identity": "3.922.0", + "@aws-sdk/nested-clients": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/credential-provider-imds": "^4.2.4", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.922.0.tgz", + "integrity": "sha512-agCwaD6mBihToHkjycL8ObIS2XOnWypWZZWhJSoWyHwFrhEKz1zGvgylK9Dc711oUfU+zU6J8e0JPKNJMNb3BQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.922.0", + "@aws-sdk/credential-provider-http": "3.922.0", + "@aws-sdk/credential-provider-ini": "3.922.0", + "@aws-sdk/credential-provider-process": "3.922.0", + "@aws-sdk/credential-provider-sso": "3.922.0", + "@aws-sdk/credential-provider-web-identity": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/credential-provider-imds": "^4.2.4", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.922.0.tgz", + "integrity": "sha512-1DZOYezT6okslpvMW7oA2q+y17CJd4fxjNFH0jtThfswdh9CtG62+wxenqO+NExttq0UMaKisrkZiVrYQBTShw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.922.0.tgz", + "integrity": "sha512-nbD3G3hShTYxLCkKMqLkLPtKwAAfxdY/k9jHtZmVBFXek2T6tQrqZHKxlAu+fd23Ga4/Aik7DLQQx1RA1a5ipg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.922.0", + "@aws-sdk/core": "3.922.0", + "@aws-sdk/token-providers": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.922.0.tgz", + "integrity": "sha512-wjGIhgMHGGQfQTdFaJphNOKyAL8wZs6znJdHADPVURmgR+EWLyN/0fDO1u7wx8xaLMZpbHIFWBEvf9TritR/cQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/nested-clients": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.922.0.tgz", + "integrity": "sha512-Dpr2YeOaLFqt3q1hocwBesynE3x8/dXZqXZRuzSX/9/VQcwYBFChHAm4mTAl4zuvArtDbLrwzWSxmOWYZGtq5w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "@smithy/util-config-provider": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.922.0.tgz", + "integrity": "sha512-xmnLWMtmHJHJBupSWMUEW1gyxuRIeQ1Ov2xa8Tqq77fPr4Ft2AluEwiDMaZIMHoAvpxWKEEt9Si59Li7GIA+bQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.922.0.tgz", + "integrity": "sha512-G363np7YcJhf+gBucskdv8cOTbs2TRwocEzRupuqDIooGDlLBlfJrvwehdgtWR8l53yjJR3zcHvGrVPTe2h8Nw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-stream": "^4.5.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.922.0.tgz", + "integrity": "sha512-HPquFgBnq/KqKRVkiuCt97PmWbKtxQ5iUNLEc6FIviqOoZTmaYG3EDsIbuFBz9C4RHJU4FKLmHL2bL3FEId6AA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.922.0.tgz", + "integrity": "sha512-T4iqd7WQ2DDjCH/0s50mnhdoX+IJns83ZE+3zj9IDlpU0N2aq8R91IG890qTfYkUEdP9yRm0xir/CNed+v6Dew==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.922.0.tgz", + "integrity": "sha512-AkvYO6b80FBm5/kk2E636zNNcNgjztNNUxpqVx+huyGn9ZqGTzS4kLqW2hO6CBe5APzVtPCtiQsXL24nzuOlAg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.922.0.tgz", + "integrity": "sha512-TtSCEDonV/9R0VhVlCpxZbp/9sxQvTTRKzIf8LxW3uXpby6Wl8IxEciBJlxmSkoqxh542WRcko7NYODlvL/gDA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@aws/lambda-invoke-store": "^0.1.1", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.922.0.tgz", + "integrity": "sha512-ygg8lME1oFAbsH42ed2wtGqfHLoT5irgx6VC4X98j79fV1qXEwwwbqMsAiMQ/HJehpjqAFRVsHox3MHLN48Z5A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/core": "^3.17.2", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/signature-v4": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-stream": "^4.5.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.922.0.tgz", + "integrity": "sha512-eHvSJZTSRJO+/tjjGD6ocnPc8q9o3m26+qbwQTu/4V6yOJQ1q+xkDZNqwJQphL+CodYaQ7uljp8g1Ji/AN3D9w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.922.0.tgz", + "integrity": "sha512-N4Qx/9KP3oVQBJOrSghhz8iZFtUC2NNeSZt88hpPhbqAEAtuX8aD8OzVcpnAtrwWqy82Yd2YTxlkqMGkgqnBsQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@aws-sdk/util-endpoints": "3.922.0", + "@smithy/core": "^3.17.2", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.922.0.tgz", + "integrity": "sha512-uYvKCF1TGh/MuJ4TMqmUM0Csuao02HawcseG4LUDyxdUsd/EFuxalWq1Cx4fKZQ2K8F504efZBjctMAMNY+l7A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.922.0", + "@aws-sdk/middleware-host-header": "3.922.0", + "@aws-sdk/middleware-logger": "3.922.0", + "@aws-sdk/middleware-recursion-detection": "3.922.0", + "@aws-sdk/middleware-user-agent": "3.922.0", + "@aws-sdk/region-config-resolver": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@aws-sdk/util-endpoints": "3.922.0", + "@aws-sdk/util-user-agent-browser": "3.922.0", + "@aws-sdk/util-user-agent-node": "3.922.0", + "@smithy/config-resolver": "^4.4.1", + "@smithy/core": "^3.17.2", + "@smithy/fetch-http-handler": "^5.3.5", + "@smithy/hash-node": "^4.2.4", + "@smithy/invalid-dependency": "^4.2.4", + "@smithy/middleware-content-length": "^4.2.4", + "@smithy/middleware-endpoint": "^4.3.6", + "@smithy/middleware-retry": "^4.4.6", + "@smithy/middleware-serde": "^4.2.4", + "@smithy/middleware-stack": "^4.2.4", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/node-http-handler": "^4.4.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/url-parser": "^4.2.4", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.5", + "@smithy/util-defaults-mode-node": "^4.2.7", + "@smithy/util-endpoints": "^3.2.4", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-retry": "^4.2.4", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.922.0.tgz", + "integrity": "sha512-44Y/rNNwhngR2KHp6gkx//TOr56/hx6s4l+XLjOqH7EBCHL7XhnrT1y92L+DLiroVr1tCSmO8eHQwBv0Y2+mvw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/config-resolver": "^4.4.1", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/s3-request-presigner": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.922.0.tgz", + "integrity": "sha512-x/WZXOMAN10X/hbjHnaXjtU34RmV3/eJMiHoJsohquSgz8+pfRN1DeK65oa/XPoKCMPfV31RfHSzCduligHfsQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/signature-v4-multi-region": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@aws-sdk/util-format-url": "3.922.0", + "@smithy/middleware-endpoint": "^4.3.6", + "@smithy/protocol-http": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.922.0.tgz", + "integrity": "sha512-mmsgEEL5pE+A7gFYiJMDBCLVciaXq4EFI5iAP7bPpnHvOplnNOYxVy2IreKMllGvrfjVyLnwxzZYlo5zZ65FWg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/protocol-http": "^5.3.4", + "@smithy/signature-v4": "^5.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.922.0.tgz", + "integrity": "sha512-/inmPnjZE0ZBE16zaCowAvouSx05FJ7p6BQYuzlJ8vxEU0sS0Hf8fvhuiRnN9V9eDUPIBY+/5EjbMWygXL4wlQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/nested-clients": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.922.0.tgz", + "integrity": "sha512-eLA6XjVobAUAMivvM7DBL79mnHyrm+32TkXNWZua5mnxF+6kQCfblKKJvxMZLGosO53/Ex46ogim8IY5Nbqv2w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", + "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.922.0.tgz", + "integrity": "sha512-4ZdQCSuNMY8HMlR1YN4MRDdXuKd+uQTeKIr5/pIM+g3TjInZoj8imvXudjcrFGA63UF3t92YVTkBq88mg58RXQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/types": "^4.8.1", + "@smithy/url-parser": "^4.2.4", + "@smithy/util-endpoints": "^3.2.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-format-url": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.922.0.tgz", + "integrity": "sha512-UYLWPvZEd6TYilNkrQrIeXh2bXZsY3ighYErSEjD24f3JQhg0XdXoR/QHIE8licHu2qFrTRM6yi9LH1GY6X0cg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/querystring-builder": "^4.2.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", + "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.922.0.tgz", + "integrity": "sha512-qOJAERZ3Plj1st7M4Q5henl5FRpE30uLm6L9edZqZXGR6c7ry9jzexWamWVpQ4H4xVAVmiO9dIEBAfbq4mduOA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/types": "^4.8.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.922.0.tgz", + "integrity": "sha512-NrPe/Rsr5kcGunkog0eBV+bY0inkRELsD2SacC4lQZvZiXf8VJ2Y7j+Yq1tB+h+FPLsdt3v9wItIvDf/laAm0Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.921.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.921.0.tgz", + "integrity": "sha512-LVHg0jgjyicKKvpNIEMXIMr1EBViESxcPkqfOlT+X1FkmUMTNZEEVF18tOJg4m4hV5vxtkWcqtr4IEeWa1C41Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.1.1.tgz", + "integrity": "sha512-RcLam17LdlbSOSp9VxmUu1eI6Mwxp+OwhD2QhiSNmNCzoDb0EeUXTD2n/WbcnrAYMGlmf05th6QYq23VqvJqpA==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@borewit/text-codec": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz", + "integrity": "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@cacheable/memory": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.6.tgz", + "integrity": "sha512-7e8SScMocHxcAb8YhtkbMhGG+EKLRIficb1F5sjvhSYsWTZGxvg4KIDp8kgxnV2PUJ3ddPe6J9QESjKvBWRDkg==", + "license": "MIT", + "dependencies": { + "@cacheable/utils": "^2.3.2", + "@keyv/bigmap": "^1.3.0", + "hookified": "^1.13.0", + "keyv": "^5.5.4" + } + }, + "node_modules/@cacheable/utils": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.3.2.tgz", + "integrity": "sha512-8kGE2P+HjfY8FglaOiW+y8qxcaQAfAhVML+i66XJR3YX5FtyDqn6Txctr3K2FrbxLKixRRYYBWMbuGciOhYNDg==", + "license": "MIT", + "dependencies": { + "hashery": "^1.2.0", + "keyv": "^5.5.4" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@emnapi/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.6.0.tgz", + "integrity": "sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.6.0.tgz", + "integrity": "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.1.tgz", + "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", + "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@fastify/accept-negotiator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz", + "integrity": "sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/ajv-compiler": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz", + "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0" + } + }, + "node_modules/@fastify/ajv-compiler/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/@fastify/ajv-compiler/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/@fastify/busboy": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-1.2.1.tgz", + "integrity": "sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==", + "license": "MIT", + "dependencies": { + "text-decoding": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@fastify/cookie": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@fastify/cookie/-/cookie-11.0.2.tgz", + "integrity": "sha512-GWdwdGlgJxyvNv+QcKiGNevSspMQXncjMZ1J8IvuDQk0jvkzgWWZFNC2En3s+nHndZBGV8IbLwOI/sxCZw/mzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "cookie": "^1.0.0", + "fastify-plugin": "^5.0.0" + } + }, + "node_modules/@fastify/cookie/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@fastify/cors": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-11.1.0.tgz", + "integrity": "sha512-sUw8ed8wP2SouWZTIbA7V2OQtMNpLj2W6qJOYhNdcmINTu6gsxVYXjQiM9mdi8UUDlcoDDJ/W2syPo1WB2QjYA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fastify-plugin": "^5.0.0", + "toad-cache": "^3.7.0" + } + }, + "node_modules/@fastify/deepmerge": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-3.1.0.tgz", + "integrity": "sha512-lCVONBQINyNhM6LLezB6+2afusgEYR4G8xenMsfe+AT+iZ7Ca6upM5Ha8UkZuYSnuMw3GWl/BiPXnLMi/gSxuQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/error": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz", + "integrity": "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/fast-json-stringify-compiler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz", + "integrity": "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fast-json-stringify": "^6.0.0" + } + }, + "node_modules/@fastify/formbody": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-8.0.2.tgz", + "integrity": "sha512-84v5J2KrkXzjgBpYnaNRPqwgMsmY7ZDjuj0YVuMR3NXCJRCgKEZy/taSP1wUYGn0onfxJpLyRGDLa+NMaDJtnA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fast-querystring": "^1.1.2", + "fastify-plugin": "^5.0.0" + } + }, + "node_modules/@fastify/forwarded": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.1.tgz", + "integrity": "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/merge-json-schemas": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz", + "integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@fastify/middie": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@fastify/middie/-/middie-9.0.3.tgz", + "integrity": "sha512-7OYovKXp9UKYeVMcjcFLMcSpoMkmcZmfnG+eAvtdiatN35W7c+r9y1dRfpA+pfFVNuHGGqI3W+vDTmjvcfLcMA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/error": "^4.0.0", + "fastify-plugin": "^5.0.0", + "path-to-regexp": "^8.1.0", + "reusify": "^1.0.4" + } + }, + "node_modules/@fastify/multipart": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@fastify/multipart/-/multipart-9.3.0.tgz", + "integrity": "sha512-NpeKipTOjjL1dA7SSlRMrOWWtrE8/0yKOmeudkdQoEaz4sVDJw5MVdZIahsWhvpc3YTN7f04f9ep/Y65RKoOWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^3.0.0", + "@fastify/deepmerge": "^3.0.0", + "@fastify/error": "^4.0.0", + "fastify-plugin": "^5.0.0", + "secure-json-parse": "^4.0.0" + } + }, + "node_modules/@fastify/multipart/node_modules/@fastify/busboy": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-3.2.0.tgz", + "integrity": "sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==", + "license": "MIT" + }, + "node_modules/@fastify/proxy-addr": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.1.0.tgz", + "integrity": "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/forwarded": "^3.0.0", + "ipaddr.js": "^2.1.0" + } + }, + "node_modules/@fastify/proxy-addr/node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@fastify/send": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz", + "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@lukeed/ms": "^2.0.2", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "^2.0.0", + "mime": "^3" + } + }, + "node_modules/@fastify/send/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@fastify/static": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-8.3.0.tgz", + "integrity": "sha512-yKxviR5PH1OKNnisIzZKmgZSus0r2OZb8qCSbqmw34aolT4g3UlzYfeBRym+HJ1J471CR8e2ldNub4PubD1coA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@fastify/accept-negotiator": "^2.0.0", + "@fastify/send": "^4.0.0", + "content-disposition": "^0.5.4", + "fastify-plugin": "^5.0.0", + "fastq": "^1.17.1", + "glob": "^11.0.0" + } + }, + "node_modules/@fastify/static/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.3.tgz", + "integrity": "sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/app-types": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.3.tgz", + "integrity": "sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.4.tgz", + "integrity": "sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/component": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.7.0.tgz", + "integrity": "sha512-wR9En2A+WESUHexjmRHkqtaVH94WLNKt6rmeqZhSLBybg4Wyf0Umk04SZsS6sBq4102ZsDBFwoqMqJYj2IoDSg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/util": "1.13.0", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@firebase/database": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.1.0.tgz", + "integrity": "sha512-gM6MJFae3pTyNLoc9VcJNuaUDej0ctdjn3cVtILo3D5lpp0dmUHHLFN/pUKe7ImyeB1KAvRlEYxvIHNF04Filg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.3", + "@firebase/auth-interop-types": "0.2.4", + "@firebase/component": "0.7.0", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.13.0", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@firebase/database-compat": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.1.0.tgz", + "integrity": "sha512-8nYc43RqxScsePVd1qe1xxvWNf0OBnbwHxmXJ7MHSuuTVYFO3eLyLW3PiCKJ9fHnmIz4p4LbieXwz+qtr9PZDg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.7.0", + "@firebase/database": "1.1.0", + "@firebase/database-types": "1.0.16", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.13.0", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.16.tgz", + "integrity": "sha512-xkQLQfU5De7+SPhEGAXFBnDryUWhhlFXelEg2YeZOQMCdoe7dL64DDAd77SQsR+6uoXIZY5MB4y/inCs4GTfcw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-types": "0.9.3", + "@firebase/util": "1.13.0" + } + }, + "node_modules/@firebase/logger": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.5.0.tgz", + "integrity": "sha512-cGskaAvkrnh42b3BA3doDWeBmuHFO/Mx5A83rbRDYakPjO9bJtRL3dX7javzc2Rr/JHZf4HlterTW2lUkfeN4g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@firebase/util": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.13.0.tgz", + "integrity": "sha512-0AZUyYUfpMNcztR5l09izHwXkZpghLgCUaAGjtMwXnCg3bj4ml5VgiwqOMOxJ+Nw4qN/zJAaOQBcJ7KGkWStqQ==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@google-cloud/firestore": { + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.11.6.tgz", + "integrity": "sha512-EW/O8ktzwLfyWBOsNuhRoMi8lrC3clHM5LVFhGvO1HCsLozCOOXRAlHrYBoE6HL42Sc8yYMuCb2XqcnJ4OOEpw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@opentelemetry/api": "^1.3.0", + "fast-deep-equal": "^3.1.1", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^4.3.3", + "protobufjs": "^7.2.6" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/storage": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.18.0.tgz", + "integrity": "sha512-r3ZwDMiz4nwW6R922Z1pwpePxyRwE5GdevYX63hRmAQUkUQJcBH/79EnQPDv5cOv1mFBgevdNWQfi3tie3dHrQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "<4.1.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "duplexify": "^4.1.3", + "fast-xml-parser": "^4.4.1", + "gaxios": "^6.0.2", + "google-auth-library": "^9.6.3", + "html-entities": "^2.5.2", + "mime": "^3.0.0", + "p-limit": "^3.0.1", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/storage/node_modules/fast-xml-parser": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "strnum": "^1.1.1" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@google-cloud/storage/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@google-cloud/storage/node_modules/strnum": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/@google-cloud/storage/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@graphql-tools/merge": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.1.1.tgz", + "integrity": "sha512-BJ5/7Y7GOhTuvzzO5tSBFL4NGr7PVqTJY3KeIDlVTT8YLcTXtBR+hlrC3uyEym7Ragn+zyWdHeJ9ev+nRX1X2w==", + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^10.9.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/schema": { + "version": "10.0.25", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.25.tgz", + "integrity": "sha512-/PqE8US8kdQ7lB9M5+jlW8AyVjRGCKU7TSktuW3WNKSKmDO0MK1wakvb5gGdyT49MjAIb4a3LWxIpwo5VygZuw==", + "license": "MIT", + "dependencies": { + "@graphql-tools/merge": "^9.1.1", + "@graphql-tools/utils": "^10.9.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/utils": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.9.1.tgz", + "integrity": "sha512-B1wwkXk9UvU7LCBkPs8513WxOQ2H8Fo5p8HR1+Id9WmYE5+bd51vqN+MbrqvWczHCH2gwkREgHJN88tE0n1FCw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "dset": "^3.1.4", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.2.tgz", + "integrity": "sha512-QzVUtEFyu05UNx2xr0fCQmStUO17uVQhGNowtxs00IgTZT6/W2PBLfUkj30s0FKJ29VtTa3ArVNIhNP6akQhqA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@grpc/proto-loader": "^0.8.0", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.0.tgz", + "integrity": "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.5.3", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/grpc-js/node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", + "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/proto-loader/node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.1.tgz", + "integrity": "sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.0.tgz", + "integrity": "sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.1", + "@inquirer/core": "^10.3.0", + "@inquirer/figures": "^1.0.14", + "@inquirer/type": "^3.0.9", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.19", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.19.tgz", + "integrity": "sha512-wQNz9cfcxrtEnUyG5PndC8g3gZ7lGDBzmWiXZkX8ot3vfZ+/BLjR8EvyGX4YzQLeVqtAlY/YScZpW7CW8qMoDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.0", + "@inquirer/type": "^3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.0.tgz", + "integrity": "sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.1", + "@inquirer/figures": "^1.0.14", + "@inquirer/type": "^3.0.9", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.21", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.21.tgz", + "integrity": "sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.0", + "@inquirer/external-editor": "^1.0.2", + "@inquirer/type": "^3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.21", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.21.tgz", + "integrity": "sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.0", + "@inquirer/type": "^3.0.9", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.2.tgz", + "integrity": "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.0", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.14.tgz", + "integrity": "sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.5.tgz", + "integrity": "sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.0", + "@inquirer/type": "^3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.21.tgz", + "integrity": "sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.0", + "@inquirer/type": "^3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.21", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.21.tgz", + "integrity": "sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.1", + "@inquirer/core": "^10.3.0", + "@inquirer/type": "^3.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.0.tgz", + "integrity": "sha512-JHwGbQ6wjf1dxxnalDYpZwZxUEosT+6CPGD9Zh4sm9WXdtUp9XODCQD3NjSTmu+0OAyxWXNOqf0spjIymJa2Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.2.0", + "@inquirer/confirm": "^5.1.14", + "@inquirer/editor": "^4.2.15", + "@inquirer/expand": "^4.0.17", + "@inquirer/input": "^4.2.1", + "@inquirer/number": "^3.0.17", + "@inquirer/password": "^4.0.17", + "@inquirer/rawlist": "^4.1.5", + "@inquirer/search": "^3.1.0", + "@inquirer/select": "^4.3.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.9.tgz", + "integrity": "sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.0", + "@inquirer/type": "^3.0.9", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.0.tgz", + "integrity": "sha512-a5SzB/qrXafDX1Z4AZW3CsVoiNxcIYCzYP7r9RzrfMpaLpB+yWi5U8BWagZyLmwR0pKbbL5umnGRd0RzGVI8bQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.0", + "@inquirer/figures": "^1.0.14", + "@inquirer/type": "^3.0.9", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.0.tgz", + "integrity": "sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.1", + "@inquirer/core": "^10.3.0", + "@inquirer/figures": "^1.0.14", + "@inquirer/type": "^3.0.9", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.9.tgz", + "integrity": "sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@ioredis/commands": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.4.0.tgz", + "integrity": "sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==", + "license": "MIT" + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jercle/yargonaut": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@jercle/yargonaut/-/yargonaut-1.1.5.tgz", + "integrity": "sha512-zBp2myVvBHp1UaJsNTyS6q4UDKT7eRiqTS4oNTS6VQMd6mpxYOdbeK4pY279cDCdakGy6hG0J3ejoXZVsPwHqw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "chalk": "^4.1.2", + "figlet": "^1.5.2", + "parent-require": "^1.0.0" + } + }, + "node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", + "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.2.0", + "jest-config": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-resolve-dependencies": "30.2.0", + "jest-runner": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "jest-watcher": "30.2.0", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "30.2.0", + "jest-snapshot": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", + "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/types": "30.2.0", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", + "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/@jest/reporters/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/snapshot-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", + "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", + "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "license": "MIT", + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@keyv/bigmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.0.tgz", + "integrity": "sha512-KT01GjzV6AQD5+IYrcpoYLkCu1Jod3nau1Z7EsEuViO3TZGRacSbO9MfHmbJ1WaOXFtWLxPVj169cn2WNKPkIg==", + "license": "MIT", + "dependencies": { + "hashery": "^1.2.0", + "hookified": "^1.13.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.5.4" + } + }, + "node_modules/@keyv/redis": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@keyv/redis/-/redis-5.1.3.tgz", + "integrity": "sha512-ClCCeAFMFzPH487ridqozfqb80Jdo8Uy0u2rMU18w8gFVkBhPIOz1ruEzr1hHpV8boK2PC3c9urQxXpTYHIlNQ==", + "license": "MIT", + "dependencies": { + "@redis/client": "^5.8.3", + "cluster-key-slot": "^1.1.2", + "hookified": "^1.12.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.5.3" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "license": "MIT" + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/@microsoft/tsdoc": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz", + "integrity": "sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==", + "license": "MIT" + }, + "node_modules/@mikro-orm/cli": { + "version": "6.5.8", + "resolved": "https://registry.npmjs.org/@mikro-orm/cli/-/cli-6.5.8.tgz", + "integrity": "sha512-QM3Pvnu833XbnB8eUlnH2sTq5FEkeMbGqXwOWREY6A8Od/PPRtVmBsKsGS3pX88gz7e03pZnwRW7NNy38V9zdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jercle/yargonaut": "1.1.5", + "@mikro-orm/core": "6.5.8", + "@mikro-orm/knex": "6.5.8", + "fs-extra": "11.3.2", + "tsconfig-paths": "4.2.0", + "yargs": "17.7.2" + }, + "bin": { + "mikro-orm": "cli", + "mikro-orm-esm": "esm" + }, + "engines": { + "node": ">= 18.12.0" + } + }, + "node_modules/@mikro-orm/cli/node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@mikro-orm/core": { + "version": "6.5.8", + "resolved": "https://registry.npmjs.org/@mikro-orm/core/-/core-6.5.8.tgz", + "integrity": "sha512-0jym5Pd7AwjpzsgPvs5c1WhrqqsfD2K32UcDmsN0CVU0uXCgKKEfXWnAHsesvUBghg0pKzFhTonI2G6I1GYYUA==", + "license": "MIT", + "peer": true, + "dependencies": { + "dataloader": "2.2.3", + "dotenv": "17.2.3", + "esprima": "4.0.1", + "fs-extra": "11.3.2", + "globby": "11.1.0", + "mikro-orm": "6.5.8", + "reflect-metadata": "0.2.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/b4nan" + } + }, + "node_modules/@mikro-orm/core/node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@mikro-orm/knex": { + "version": "6.5.8", + "resolved": "https://registry.npmjs.org/@mikro-orm/knex/-/knex-6.5.8.tgz", + "integrity": "sha512-/+/jc5zlOgdRlq/SC5RHGdIgrJw7TsGSICumYq6+dauYq2ChMHw3rrN1mW7bKkS/A2oB8eabyNyUj2WKOC3PKA==", + "license": "MIT", + "dependencies": { + "fs-extra": "11.3.2", + "knex": "3.1.0", + "sqlstring": "2.3.3" + }, + "engines": { + "node": ">= 18.12.0" + }, + "peerDependencies": { + "@mikro-orm/core": "^6.0.0", + "better-sqlite3": "*", + "libsql": "*", + "mariadb": "*" + }, + "peerDependenciesMeta": { + "better-sqlite3": { + "optional": true + }, + "libsql": { + "optional": true + }, + "mariadb": { + "optional": true + } + } + }, + "node_modules/@mikro-orm/knex/node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@mikro-orm/migrations": { + "version": "6.5.8", + "resolved": "https://registry.npmjs.org/@mikro-orm/migrations/-/migrations-6.5.8.tgz", + "integrity": "sha512-KQu+dovQ0KMooGzoBb8FP8n32AvrdN5NB4pGFmT6AxNchSnRxeLDRSN2aHDHHMwu+Duy0HgXnMgQ540VZ0ioqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mikro-orm/knex": "6.5.8", + "fs-extra": "11.3.2", + "umzug": "3.8.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "peerDependencies": { + "@mikro-orm/core": "^6.0.0" + } + }, + "node_modules/@mikro-orm/migrations/node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@mikro-orm/nestjs": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@mikro-orm/nestjs/-/nestjs-6.1.1.tgz", + "integrity": "sha512-aluD3eTeuCvIePDk5UBanHIhu1zAJQXqWAg47MZdHJmFkNuXn62DCXbD2c4X5TCpKW/m0zjba22ilyZ/AFG9qg==", + "license": "MIT", + "engines": { + "node": ">= 18.12.0" + }, + "peerDependencies": { + "@mikro-orm/core": "^6.0.0 || ^6.0.0-dev.0 || ^7.0.0-dev.0", + "@nestjs/common": "^10.0.0 || ^11.0.5", + "@nestjs/core": "^10.0.0 || ^11.0.5" + } + }, + "node_modules/@mikro-orm/postgresql": { + "version": "6.5.8", + "resolved": "https://registry.npmjs.org/@mikro-orm/postgresql/-/postgresql-6.5.8.tgz", + "integrity": "sha512-NeQqI8J/QyzqgLPvdOd26TSkefYjLUfFeLUEQ2DeT/yKJd/SF0re1OfYZrqsKve8VIz8MHu6HiVBvz3iZvhfDw==", + "license": "MIT", + "dependencies": { + "@mikro-orm/knex": "6.5.8", + "pg": "8.16.3", + "postgres-array": "3.0.4", + "postgres-date": "2.1.0", + "postgres-interval": "4.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "peerDependencies": { + "@mikro-orm/core": "^6.0.0" + } + }, + "node_modules/@mikro-orm/seeder": { + "version": "6.5.8", + "resolved": "https://registry.npmjs.org/@mikro-orm/seeder/-/seeder-6.5.8.tgz", + "integrity": "sha512-EVfXNJ+Q7I1jKLlYwWDdQ/67DxhuBSfS2U/XKKo/+uEaxGBl5vDe8kV3RNRwx8I9x6DHsQpt1NzJL+JS3fSt3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-extra": "11.3.2", + "globby": "11.1.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "peerDependencies": { + "@mikro-orm/core": "^6.0.0" + } + }, + "node_modules/@mikro-orm/seeder/node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@nest-lab/fastify-multer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@nest-lab/fastify-multer/-/fastify-multer-1.3.0.tgz", + "integrity": "sha512-/4LocG7pBhwwbqN33YiPbv+93NdxlL/z/B2EL+hpulIr+qn2eLs/CxMg8jHCmtGCodA7NFHFERqIh75Fc2fryQ==", + "license": "MIT", + "dependencies": { + "fastify-multer": "2.0.3" + }, + "peerDependencies": { + "@nestjs/common": "^9.0.0 || ^10.0.0 || ^11.0.0", + "@nestjs/platform-fastify": "^9.0.0 || ^10.0.0 || ^11.0.0", + "rxjs": "^7.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/common": { + "optional": false + }, + "@nestjs/platform-fastify": { + "optional": false + }, + "rxjs": { + "optional": false + } + } + }, + "node_modules/@nestjs/axios": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-4.0.1.tgz", + "integrity": "sha512-68pFJgu+/AZbWkGu65Z3r55bTsCPlgyKaV4BSG8yUAD72q1PPuyVRgUwFv6BxdnibTUHlyxm06FmYWNC+bjN7A==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "axios": "^1.3.1", + "rxjs": "^7.0.0" + } + }, + "node_modules/@nestjs/bull-shared": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-11.0.4.tgz", + "integrity": "sha512-VBJcDHSAzxQnpcDfA0kt9MTGUD1XZzfByV70su0W0eDCQ9aqIEBlzWRW21tv9FG9dIut22ysgDidshdjlnczLw==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0" + } + }, + "node_modules/@nestjs/bullmq": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@nestjs/bullmq/-/bullmq-11.0.4.tgz", + "integrity": "sha512-wBzK9raAVG0/6NTMdvLGM4/FQ1lsB35/pYS8L6a0SDgkTiLpd7mAjQ8R692oMx5s7IjvgntaZOuTUrKYLNfIkA==", + "license": "MIT", + "dependencies": { + "@nestjs/bull-shared": "^11.0.4", + "tslib": "2.8.1" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0", + "bullmq": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/@nestjs/cache-manager": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-3.0.1.tgz", + "integrity": "sha512-4UxTnR0fsmKL5YDalU2eLFVnL+OBebWUpX+hEduKGncrVKH4PPNoiRn1kXyOCjmzb0UvWgqubpssNouc8e0MCw==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^9.0.0 || ^10.0.0 || ^11.0.0", + "@nestjs/core": "^9.0.0 || ^10.0.0 || ^11.0.0", + "cache-manager": ">=6", + "keyv": ">=5", + "rxjs": "^7.8.1" + } + }, + "node_modules/@nestjs/cli": { + "version": "11.0.10", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.10.tgz", + "integrity": "sha512-4waDT0yGWANg0pKz4E47+nUrqIJv/UqrZ5wLPkCqc7oMGRMWKAaw1NDZ9rKsaqhqvxb2LfI5+uXOWr4yi94DOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.15", + "@angular-devkit/schematics": "19.2.15", + "@angular-devkit/schematics-cli": "19.2.15", + "@inquirer/prompts": "7.8.0", + "@nestjs/schematics": "^11.0.1", + "ansis": "4.1.0", + "chokidar": "4.0.3", + "cli-table3": "0.6.5", + "commander": "4.1.1", + "fork-ts-checker-webpack-plugin": "9.1.0", + "glob": "11.0.3", + "node-emoji": "1.11.0", + "ora": "5.4.1", + "tree-kill": "1.2.2", + "tsconfig-paths": "4.2.0", + "tsconfig-paths-webpack-plugin": "4.2.0", + "typescript": "5.8.3", + "webpack": "5.100.2", + "webpack-node-externals": "3.0.0" + }, + "bin": { + "nest": "bin/nest.js" + }, + "engines": { + "node": ">= 20.11" + }, + "peerDependencies": { + "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", + "@swc/core": "^1.3.62" + }, + "peerDependenciesMeta": { + "@swc/cli": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/@nestjs/cli/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==", + "dev": true, + "license": "MIT", + "peer": true, + "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/@nestjs/cli/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@nestjs/cli/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/@nestjs/cli/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nestjs/cli/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@nestjs/cli/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nestjs/cli/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@nestjs/cli/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@nestjs/cli/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@nestjs/cli/node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@nestjs/cli/node_modules/webpack": { + "version": "5.100.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.100.2.tgz", + "integrity": "sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.2", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@nestjs/common": { + "version": "11.1.7", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.7.tgz", + "integrity": "sha512-lwlObwGgIlpXSXYOTpfzdCepUyWomz6bv9qzGzzvpgspUxkj0Uz0fUJcvD44V8Ps7QhKW3lZBoYbXrH25UZrbA==", + "license": "MIT", + "peer": true, + "dependencies": { + "file-type": "21.0.0", + "iterare": "1.2.1", + "load-esm": "1.0.3", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.2.tgz", + "integrity": "sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA==", + "license": "MIT", + "dependencies": { + "dotenv": "16.4.7", + "dotenv-expand": "12.0.1", + "lodash": "4.17.21" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "rxjs": "^7.1.0" + } + }, + "node_modules/@nestjs/config/node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@nestjs/core": { + "version": "11.1.7", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.7.tgz", + "integrity": "sha512-TyXFOwjhHv/goSgJ8i20K78jwTM0iSpk9GBcC2h3mf4MxNy+znI8m7nWjfoACjTkb89cTwDQetfTHtSfGLLaiA==", + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "engines": { + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/event-emitter": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-3.0.1.tgz", + "integrity": "sha512-0Ln/x+7xkU6AJFOcQI9tIhUMXVF7D5itiaQGOyJbXtlAfAIt8gzDdJm+Im7cFzKoWkiW5nCXCPh6GSvdQd/3Dw==", + "license": "MIT", + "dependencies": { + "eventemitter2": "6.4.9" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0" + } + }, + "node_modules/@nestjs/jwt": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.1.tgz", + "integrity": "sha512-HXSsc7SAnCnjA98TsZqrE7trGtHDnYXWp4Ffy6LwSmck1QvbGYdMzBquXofX5l6tIRpeY4Qidl2Ti2CVG77Pdw==", + "license": "MIT", + "dependencies": { + "@types/jsonwebtoken": "9.0.10", + "jsonwebtoken": "9.0.2" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0" + } + }, + "node_modules/@nestjs/mapped-types": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.1.0.tgz", + "integrity": "sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "class-transformer": "^0.4.0 || ^0.5.0", + "class-validator": "^0.13.0 || ^0.14.0", + "reflect-metadata": "^0.1.12 || ^0.2.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/platform-express": { + "version": "11.1.7", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.7.tgz", + "integrity": "sha512-5T+GLdvTiGPKB4/P4PM9ftKUKNHJy8ThEFhZA3vQnXVL7Vf0rDr07TfVTySVu+XTh85m1lpFVuyFM6u6wLNsRA==", + "license": "MIT", + "peer": true, + "dependencies": { + "cors": "2.8.5", + "express": "5.1.0", + "multer": "2.0.2", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" + } + }, + "node_modules/@nestjs/platform-fastify": { + "version": "11.1.8", + "resolved": "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-11.1.8.tgz", + "integrity": "sha512-4XiiTiTkF9UbVDAuHDyVIzgr43L2sI3vLs9A52ov2lrOJcqyKwTYL/NiCQd4dtUQm1L6M0jOrJhzpYXobX5uMw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@fastify/cors": "11.1.0", + "@fastify/formbody": "8.0.2", + "@fastify/middie": "9.0.3", + "fast-querystring": "1.1.2", + "fastify": "5.6.1", + "light-my-request": "6.6.0", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@fastify/static": "^8.0.0", + "@fastify/view": "^10.0.0 || ^11.0.0", + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" + }, + "peerDependenciesMeta": { + "@fastify/static": { + "optional": true + }, + "@fastify/view": { + "optional": true + } + } + }, + "node_modules/@nestjs/platform-socket.io": { + "version": "11.1.9", + "resolved": "https://registry.npmjs.org/@nestjs/platform-socket.io/-/platform-socket.io-11.1.9.tgz", + "integrity": "sha512-OaAW+voXo5BXbFKd9Ot3SL05tEucRMhZRdw5wdWZf/RpIl9hB6G6OHr8DDxNbUGvuQWzNnZHCDHx3EQJzjcIyA==", + "license": "MIT", + "peer": true, + "dependencies": { + "socket.io": "4.8.1", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "rxjs": "^7.1.0" + } + }, + "node_modules/@nestjs/schedule": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.0.1.tgz", + "integrity": "sha512-v3yO6cSPAoBSSyH67HWnXHzuhPhSNZhRmLY38JvCt2sqY8sPMOODpcU1D79iUMFf7k16DaMEbL4Mgx61ZhiC8Q==", + "license": "MIT", + "dependencies": { + "cron": "4.3.3" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0" + } + }, + "node_modules/@nestjs/schematics": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.9.tgz", + "integrity": "sha512-0NfPbPlEaGwIT8/TCThxLzrlz3yzDNkfRNpbL7FiplKq3w4qXpJg0JYwqgMEJnLQZm3L/L/5XjoyfJHUO3qX9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.17", + "@angular-devkit/schematics": "19.2.17", + "comment-json": "4.4.1", + "jsonc-parser": "3.3.1", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.8.2" + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.17.tgz", + "integrity": "sha512-Ah008x2RJkd0F+NLKqIpA34/vUGwjlprRCkvddjDopAWRzYn6xCkz1Tqwuhn0nR1Dy47wTLKYD999TYl5ONOAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.17.tgz", + "integrity": "sha512-ADfbaBsrG8mBF6Mfs+crKA/2ykB8AJI50Cv9tKmZfwcUcyAdmTr+vVvhsBCfvUAEokigSsgqgpYxfkJVxhJYeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.17", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nestjs/schematics/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==", + "dev": true, + "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/@nestjs/schematics/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nestjs/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@nestjs/swagger": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-11.2.1.tgz", + "integrity": "sha512-1MS7xf0pzc1mofG53xrrtrurnziafPUHkqzRm4YUVPA/egeiMaSerQBD/feiAeQ2BnX0WiLsTX4HQFO0icvOjQ==", + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "0.15.1", + "@nestjs/mapped-types": "2.1.0", + "js-yaml": "4.1.0", + "lodash": "4.17.21", + "path-to-regexp": "8.3.0", + "swagger-ui-dist": "5.29.4" + }, + "peerDependencies": { + "@fastify/static": "^8.0.0", + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12 || ^0.2.0" + }, + "peerDependenciesMeta": { + "@fastify/static": { + "optional": true + }, + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/testing": { + "version": "11.1.7", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.7.tgz", + "integrity": "sha512-QbtrgSlc3QVo6RHNxTTlyhaiobLLy8kvhOlgWHsoXRknybuRs7vZg4k5mo3ye6pITGeT3CrWIRpZjUsh5Wps5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, + "node_modules/@nestjs/throttler": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@nestjs/throttler/-/throttler-6.4.0.tgz", + "integrity": "sha512-osL67i0PUuwU5nqSuJjtUJZMkxAnYB4VldgYUMGzvYRJDCqGRFMWbsbzm/CkUtPLRL30I8T74Xgt/OQxnYokiA==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", + "@nestjs/core": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0" + } + }, + "node_modules/@nestjs/websockets": { + "version": "11.1.9", + "resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-11.1.9.tgz", + "integrity": "sha512-kkkdeTVcc3X7ZzvVqUVpOAJoh49kTRUjWNUXo5jmG+27OvZoHfs/vuSiqxidrrbIgydSqN15HUsf1wZwQUrxCQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "iterare": "1.2.1", + "object-hash": "3.0.0", + "tslib": "2.8.1" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/platform-socket.io": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/platform-socket.io": { + "optional": true + } + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "node_modules/@pinojs/redact": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "license": "MIT" + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@redis/client": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-5.8.3.tgz", + "integrity": "sha512-MZVUE+l7LmMIYlIjubPosruJ9ltSLGFmJqsXApTqPLyHLjsJUSAbAJb/A3N34fEqean4ddiDkdWzNu4ZKPvRUg==", + "license": "MIT", + "dependencies": { + "cluster-key-slot": "1.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@rushstack/node-core-library": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.13.0.tgz", + "integrity": "sha512-IGVhy+JgUacAdCGXKUrRhwHMTzqhWwZUI+qEPcdzsb80heOw0QPbhhoVsoiMF7Klp8eYsp7hzpScMXmOa3Uhfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "~8.13.0", + "ajv-draft-04": "~1.0.0", + "ajv-formats": "~3.0.1", + "fs-extra": "~11.3.0", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/fs-extra": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@rushstack/node-core-library/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/node-core-library/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/@rushstack/terminal": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.15.2.tgz", + "integrity": "sha512-7Hmc0ysK5077R/IkLS9hYu0QuNafm+TbZbtYVzCMbeOdMjaRboLKrhryjwZSRJGJzu+TV1ON7qZHeqf58XfLpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/node-core-library": "5.13.0", + "supports-color": "~8.1.1" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/terminal/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "4.23.7", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.7.tgz", + "integrity": "sha512-Gr9cB7DGe6uz5vq2wdr89WbVDKz0UeuFEn5H2CfWDe7JvjFFaiV15gi6mqDBTbHhHCWS7w8mF1h3BnIfUndqdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/terminal": "0.15.2", + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "string-argv": "~0.3.1" + } + }, + "node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@scarf/scarf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz", + "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==", + "hasInstallScript": true, + "license": "Apache-2.0" + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.4.tgz", + "integrity": "sha512-Z4DUr/AkgyFf1bOThW2HwzREagee0sB5ycl+hDiSZOfRLW8ZgrOjDi6g8mHH19yyU5E2A/64W3z6SMIf5XiUSQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", + "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.1.tgz", + "integrity": "sha512-BciDJ5hkyYEGBBKMbjGB1A/Zq8bYZ41Zo9BMnGdKF6QD1fY4zIkYx6zui/0CHaVGnv6h0iy8y4rnPX9CPCAPyQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.4", + "@smithy/types": "^4.8.1", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.4", + "@smithy/util-middleware": "^4.2.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.17.2.tgz", + "integrity": "sha512-n3g4Nl1Te+qGPDbNFAYf+smkRVB+JhFsGy9uJXXZQEufoP4u0r+WLh6KvTDolCswaagysDc/afS1yvb2jnj1gQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-stream": "^4.5.5", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.4.tgz", + "integrity": "sha512-YVNMjhdz2pVto5bRdux7GMs0x1m0Afz3OcQy/4Yf9DH4fWOtroGH7uLvs7ZmDyoBJzLdegtIPpXrpJOZWvUXdw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.4", + "@smithy/property-provider": "^4.2.4", + "@smithy/types": "^4.8.1", + "@smithy/url-parser": "^4.2.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.4.tgz", + "integrity": "sha512-aV8blR9RBDKrOlZVgjOdmOibTC2sBXNiT7WA558b4MPdsLTV6sbyc1WIE9QiIuYMJjYtnPLciefoqSW8Gi+MZQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.8.1", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.4.tgz", + "integrity": "sha512-d5T7ZS3J/r8P/PDjgmCcutmNxnSRvPH1U6iHeXjzI50sMr78GLmFcrczLw33Ap92oEKqa4CLrkAPeSSOqvGdUA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.4.tgz", + "integrity": "sha512-lxfDT0UuSc1HqltOGsTEAlZ6H29gpfDSdEPTapD5G63RbnYToZ+ezjzdonCCH90j5tRRCw3aLXVbiZaBW3VRVg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.4.tgz", + "integrity": "sha512-TPhiGByWnYyzcpU/K3pO5V7QgtXYpE0NaJPEZBCa1Y5jlw5SjqzMSbFiLb+ZkJhqoQc0ImGyVINqnq1ze0ZRcQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.4.tgz", + "integrity": "sha512-GNI/IXaY/XBB1SkGBFmbW033uWA0tj085eCxYih0eccUe/PFR7+UBQv9HNDk2fD9TJu7UVsCWsH99TkpEPSOzQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.2.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.5.tgz", + "integrity": "sha512-mg83SM3FLI8Sa2ooTJbsh5MFfyMTyNRwxqpKHmE0ICRIa66Aodv80DMsTQI02xBLVJ0hckwqTRr5IGAbbWuFLQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.4", + "@smithy/querystring-builder": "^4.2.4", + "@smithy/types": "^4.8.1", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.5.tgz", + "integrity": "sha512-kCdgjD2J50qAqycYx0imbkA9tPtyQr1i5GwbK/EOUkpBmJGSkJe4mRJm+0F65TUSvvui1HZ5FFGFCND7l8/3WQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.1", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.4.tgz", + "integrity": "sha512-kKU0gVhx/ppVMntvUOZE7WRMFW86HuaxLwvqileBEjL7PoILI8/djoILw3gPQloGVE6O0oOzqafxeNi2KbnUJw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.4.tgz", + "integrity": "sha512-amuh2IJiyRfO5MV0X/YFlZMD6banjvjAwKdeJiYGUbId608x+oSNwv3vlyW2Gt6AGAgl3EYAuyYLGRX/xU8npQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.4.tgz", + "integrity": "sha512-z6aDLGiHzsMhbS2MjetlIWopWz//K+mCoPXjW6aLr0mypF+Y7qdEh5TyJ20Onf9FbWHiWl4eC+rITdizpnXqOw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.4.tgz", + "integrity": "sha512-h7kzNWZuMe5bPnZwKxhVbY1gan5+TZ2c9JcVTHCygB14buVGOZxLl+oGfpY2p2Xm48SFqEWdghpvbBdmaz3ncQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.4.tgz", + "integrity": "sha512-hJRZuFS9UsElX4DJSJfoX4M1qXRH+VFiLMUnhsWvtOOUWRNvvOfDaUSdlNbjwv1IkpVjj/Rd/O59Jl3nhAcxow==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.6.tgz", + "integrity": "sha512-PXehXofGMFpDqr933rxD8RGOcZ0QBAWtuzTgYRAHAL2BnKawHDEdf/TnGpcmfPJGwonhginaaeJIKluEojiF/w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.17.2", + "@smithy/middleware-serde": "^4.2.4", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "@smithy/url-parser": "^4.2.4", + "@smithy/util-middleware": "^4.2.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.6.tgz", + "integrity": "sha512-OhLx131znrEDxZPAvH/OYufR9d1nB2CQADyYFN4C3V/NQS7Mg4V6uvxHC/Dr96ZQW8IlHJTJ+vAhKt6oxWRndA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/service-error-classification": "^4.2.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-retry": "^4.2.4", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.4.tgz", + "integrity": "sha512-jUr3x2CDhV15TOX2/Uoz4gfgeqLrRoTQbYAuhLS7lcVKNev7FeYSJ1ebEfjk+l9kbb7k7LfzIR/irgxys5ZTOg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.4.tgz", + "integrity": "sha512-Gy3TKCOnm9JwpFooldwAboazw+EFYlC+Bb+1QBsSi5xI0W5lX81j/P5+CXvD/9ZjtYKRgxq+kkqd/KOHflzvgA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.4.tgz", + "integrity": "sha512-3X3w7qzmo4XNNdPKNS4nbJcGSwiEMsNsRSunMA92S4DJLLIrH5g1AyuOA2XKM9PAPi8mIWfqC+fnfKNsI4KvHw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.4.tgz", + "integrity": "sha512-VXHGfzCXLZeKnFp6QXjAdy+U8JF9etfpUXD1FAbzY1GzsFJiDQRQIt2CnMUvUdz3/YaHNqT3RphVWMUpXTIODA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/querystring-builder": "^4.2.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.4.tgz", + "integrity": "sha512-g2DHo08IhxV5GdY3Cpt/jr0mkTlAD39EJKN27Jb5N8Fb5qt8KG39wVKTXiTRCmHHou7lbXR8nKVU14/aRUf86w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.4.tgz", + "integrity": "sha512-3sfFd2MAzVt0Q/klOmjFi3oIkxczHs0avbwrfn1aBqtc23WqQSmjvk77MBw9WkEQcwbOYIX5/2z4ULj8DuxSsw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.4.tgz", + "integrity": "sha512-KQ1gFXXC+WsbPFnk7pzskzOpn4s+KheWgO3dzkIEmnb6NskAIGp/dGdbKisTPJdtov28qNDohQrgDUKzXZBLig==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.4.tgz", + "integrity": "sha512-aHb5cqXZocdzEkZ/CvhVjdw5l4r1aU/9iMEyoKzH4eXMowT6M0YjBpp7W/+XjkBnY8Xh0kVd55GKjnPKlCwinQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.4.tgz", + "integrity": "sha512-fdWuhEx4+jHLGeew9/IvqVU/fxT/ot70tpRGuOLxE3HzZOyKeTQfYeV1oaBXpzi93WOk668hjMuuagJ2/Qs7ng==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.3.4.tgz", + "integrity": "sha512-y5ozxeQ9omVjbnJo9dtTsdXj9BEvGx2X8xvRgKnV+/7wLBuYJQL6dOa/qMY6omyHi7yjt1OA97jZLoVRYi8lxA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.4.tgz", + "integrity": "sha512-ScDCpasxH7w1HXHYbtk3jcivjvdA1VICyAdgvVqKhKKwxi+MTwZEqFw0minE+oZ7F07oF25xh4FGJxgqgShz0A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.2.tgz", + "integrity": "sha512-gZU4uAFcdrSi3io8U99Qs/FvVdRxPvIMToi+MFfsy/DN9UqtknJ1ais+2M9yR8e0ASQpNmFYEKeIKVcMjQg3rg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.17.2", + "@smithy/middleware-endpoint": "^4.3.6", + "@smithy/middleware-stack": "^4.2.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "@smithy/util-stream": "^4.5.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.8.1.tgz", + "integrity": "sha512-N0Zn0OT1zc+NA+UVfkYqQzviRh5ucWwO7mBV3TmHHprMnfcJNfhlPicDkBHi0ewbh+y3evR6cNAW0Raxvb01NA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.4.tgz", + "integrity": "sha512-w/N/Iw0/PTwJ36PDqU9PzAwVElo4qXxCC0eCTlUtIz/Z5V/2j/cViMHi0hPukSBHp4DVwvUlUhLgCzqSJ6plrg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.5.tgz", + "integrity": "sha512-GwaGjv/QLuL/QHQaqhf/maM7+MnRFQQs7Bsl6FlaeK6lm6U7mV5AAnVabw68cIoMl5FQFyKK62u7RWRzWL25OQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.7.tgz", + "integrity": "sha512-6hinjVqec0WYGsqN7h9hL/ywfULmJJNXGXnNZW7jrIn/cFuC/aVlVaiDfBIJEvKcOrmN8/EgsW69eY0gXABeHw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.1", + "@smithy/credential-provider-imds": "^4.2.4", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/property-provider": "^4.2.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.4.tgz", + "integrity": "sha512-f+nBDhgYRCmUEDKEQb6q0aCcOTXRDqH5wWaFHJxt4anB4pKHlgGoYP3xtioKXH64e37ANUkzWf6p4Mnv1M5/Vg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.4.tgz", + "integrity": "sha512-fKGQAPAn8sgV0plRikRVo6g6aR0KyKvgzNrPuM74RZKy/wWVzx3BMk+ZWEueyN3L5v5EDg+P582mKU+sH5OAsg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.4.tgz", + "integrity": "sha512-yQncJmj4dtv/isTXxRb4AamZHy4QFr4ew8GxS6XLWt7sCIxkPxPzINWd7WLISEFPsIan14zrKgvyAF+/yzfwoA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.5.tgz", + "integrity": "sha512-7M5aVFjT+HPilPOKbOmQfCIPchZe4DSBc1wf1+NvHvSoFTiFtauZzT+onZvCj70xhXd0AEmYnZYmdJIuwxOo4w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.5", + "@smithy/node-http-handler": "^4.4.4", + "@smithy/types": "^4.8.1", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.4.tgz", + "integrity": "sha512-roKXtXIC6fopFvVOju8VYHtguc/jAcMlK8IlDOHsrQn0ayMkHynjm/D2DCMRf7MJFXzjHhlzg2edr3QPEakchQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "license": "MIT" + }, + "node_modules/@tokenizer/inflate": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz", + "integrity": "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fflate": "^0.8.2", + "token-types": "^6.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", + "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz", + "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", + "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==", + "license": "MIT", + "dependencies": { + "@types/ms": "*", + "@types/node": "*" + } + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "license": "MIT" + }, + "node_modules/@types/luxon": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz", + "integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==", + "license": "MIT" + }, + "node_modules/@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.12.tgz", + "integrity": "sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog==", + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/request": { + "version": "2.48.13", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.13.tgz", + "integrity": "sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.5" + } + }, + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", + "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", + "license": "MIT", + "optional": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@types/request/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", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@types/request/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", + "optional": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@types/sanitize-html": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-2.16.0.tgz", + "integrity": "sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "htmlparser2": "^8.0.0" + } + }, + "node_modules/@types/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.0.tgz", + "integrity": "sha512-zBF6vZJn1IaMpg3xUF25VK3gd3l8zwE0ZLRX7dsQyQi+jp4E8mMDJNGDYnYse+bQhYwWERTxVwHpi3dMOq7RKQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.9.tgz", + "integrity": "sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/socket.io": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/socket.io/-/socket.io-3.0.1.tgz", + "integrity": "sha512-XSma2FhVD78ymvoxYV4xGXrIH/0EKQ93rR+YR0Y+Kw1xbPzLDCip/UWSejZ08FpxYeYNci/PZPQS9anrvJRqMA==", + "license": "MIT", + "dependencies": { + "socket.io": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/superagent": { + "version": "8.1.9", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", + "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/supertest": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.3.tgz", + "integrity": "sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/methods": "^1.1.4", + "@types/superagent": "^8.1.0" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/validator": { + "version": "13.15.4", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.4.tgz", + "integrity": "sha512-LSFfpSnJJY9wbC0LQxgvfb+ynbHftFo0tMsFOl/J4wexLnYMmDSPaj2ZyDv3TkfL1UePxPrxOWJfbiRS8mQv7A==", + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.2.tgz", + "integrity": "sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.46.2", + "@typescript-eslint/type-utils": "8.46.2", + "@typescript-eslint/utils": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.46.2", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.2.tgz", + "integrity": "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.46.2", + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.2.tgz", + "integrity": "sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.46.2", + "@typescript-eslint/types": "^8.46.2", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.2.tgz", + "integrity": "sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.2.tgz", + "integrity": "sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.2.tgz", + "integrity": "sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2", + "@typescript-eslint/utils": "8.46.2", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.2.tgz", + "integrity": "sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.2.tgz", + "integrity": "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.46.2", + "@typescript-eslint/tsconfig-utils": "8.46.2", + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.2.tgz", + "integrity": "sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.46.2", + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz", + "integrity": "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@whatwg-node/promise-helpers": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz", + "integrity": "sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.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", + "optional": true, + "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/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/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/ajv-formats/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/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/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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/ansis": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.1.0.tgz", + "integrity": "sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "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==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "license": "MIT", + "dependencies": { + "retry": "0.13.1" + } + }, + "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/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/avvio": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", + "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", + "license": "MIT", + "dependencies": { + "@fastify/error": "^4.0.0", + "fastq": "^1.17.1" + } + }, + "node_modules/axios": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.1.tgz", + "integrity": "sha512-hU4EGxxt+j7TQijx1oYdAjw4xuIp1wRQSsbMFwSthCWeBQur1eF+qJ5iQ5sN3Tw8YRzQNKb8jszgBdMDVqwJcw==", + "license": "MIT", + "peer": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", + "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "30.2.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", + "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", + "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + } + }, + "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==", + "dev": true, + "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/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "license": "MIT", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.19.tgz", + "integrity": "sha512-zoKGUdu6vb2jd3YOq0nnhEDQVbPcHhco3UImJrv5dSkvxTc2pl2WjOPsjZXDwPDSl5eghIMuY3R6J9NDKF3KcQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bowser": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", + "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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/browserslist": { + "version": "4.26.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", + "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.8.9", + "caniuse-lite": "^1.0.30001746", + "electron-to-chromium": "^1.5.227", + "node-releases": "^2.0.21", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "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.1.13" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bullmq": { + "version": "5.65.1", + "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.65.1.tgz", + "integrity": "sha512-QgDAzX1G9L5IRy4Orva5CfQTXZT+5K+OfO/kbPrAqN+pmL9LJekCzxijXehlm/u2eXfWPfWvIdJJIqiuz3WJSg==", + "license": "MIT", + "peer": true, + "dependencies": { + "cron-parser": "^4.9.0", + "ioredis": "^5.8.2", + "msgpackr": "^1.11.2", + "node-abort-controller": "^3.1.1", + "semver": "^7.5.4", + "tslib": "^2.0.0", + "uuid": "^11.1.0" + } + }, + "node_modules/bullmq/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cache-manager": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-7.2.4.tgz", + "integrity": "sha512-skmhkqXjPCBmrb70ctEx4zwFk7vb0RdFXlVGYWnFZ8pKvkzdFrFFKSJ1IaKduGfkryHOJvb7q2PkGmonmL+UGw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@cacheable/utils": "^2.1.0", + "keyv": "^5.5.3" + } + }, + "node_modules/cacheable": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.1.tgz", + "integrity": "sha512-yr+FSHWn1ZUou5LkULX/S+jhfgfnLbuKQjE40tyEd4fxGZVMbBL5ifno0J0OauykS8UiCSgHi+DV/YD+rjFxFg==", + "license": "MIT", + "dependencies": { + "@cacheable/memory": "^2.0.6", + "@cacheable/utils": "^2.3.2", + "hookified": "^1.14.0", + "keyv": "^5.5.5", + "qified": "^0.5.3" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001751", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", + "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz", + "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz", + "integrity": "sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==", + "dev": true, + "license": "MIT" + }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "license": "MIT", + "peer": true + }, + "node_modules/class-validator": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.2.tgz", + "integrity": "sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/validator": "^13.11.8", + "libphonenumber-js": "^1.11.1", + "validator": "^13.9.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "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.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "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/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/comment-json": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.4.1.tgz", + "integrity": "sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "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/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cron": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/cron/-/cron-4.3.3.tgz", + "integrity": "sha512-B/CJj5yL3sjtlun6RtYHvoSB26EmQ2NUmhq9ZiJSyKIM4K/fqfh9aelDFlIayD2YMeFZqWLi9hHV+c+pq2Djkw==", + "license": "MIT", + "dependencies": { + "@types/luxon": "~3.7.0", + "luxon": "~3.7.0" + }, + "engines": { + "node": ">=18.x" + } + }, + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", + "license": "MIT", + "dependencies": { + "luxon": "^3.2.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/cross-inspect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.1.tgz", + "integrity": "sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/dataloader": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.3.tgz", + "integrity": "sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==", + "license": "MIT" + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", + "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "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/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", + "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz", + "integrity": "sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==", + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "license": "MIT", + "optional": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.238", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.238.tgz", + "integrity": "sha512-khBdc+w/Gv+cS8e/Pbnaw/FXcBUeKrRVik9IxfXtgREOWyJhR4tj43n3amkVogJ/yeQUqzkrZcFhtIxIdqmmcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "optional": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", + "license": "MIT", + "dependencies": { + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/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/engine.io/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/engine.io/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "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-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "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/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", + "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.1", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.38.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/farmhash-modern": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/farmhash-modern/-/farmhash-modern-1.1.0.tgz", + "integrity": "sha512-6ypT4XfgqJk/F3Yuv4SX26I3doUjt0GTG4a+JgWxXQpxXzTBq8fPUeGHfcYMMDPHJHm3yPOSjaeBwBGAHWXCdA==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "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-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/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/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stringify": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.1.1.tgz", + "integrity": "sha512-DbgptncYEXZqDUOEl4krff4mUiVrTZZVI7BBrQR/T3BqMj/eM1flTC1Uk2uUoLcWCxjT95xKulV/Lc6hhOZsBQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/merge-json-schemas": "^0.2.0", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0", + "json-schema-ref-resolver": "^3.0.0", + "rfdc": "^1.2.0" + } + }, + "node_modules/fast-json-stringify/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/fast-json-stringify/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/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "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-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": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastify": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.6.1.tgz", + "integrity": "sha512-WjjlOciBF0K8pDUPZoGPhqhKrQJ02I8DKaDIfO51EL0kbSMwQFl85cRwhOvmSDWoukNOdTo27gLN549pLCcH7Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@fastify/ajv-compiler": "^4.0.0", + "@fastify/error": "^4.0.0", + "@fastify/fast-json-stringify-compiler": "^5.0.0", + "@fastify/proxy-addr": "^5.0.0", + "abstract-logging": "^2.0.1", + "avvio": "^9.0.0", + "fast-json-stringify": "^6.0.0", + "find-my-way": "^9.0.0", + "light-my-request": "^6.0.0", + "pino": "^9.0.0", + "process-warning": "^5.0.0", + "rfdc": "^1.3.1", + "secure-json-parse": "^4.0.0", + "semver": "^7.6.0", + "toad-cache": "^3.7.0" + } + }, + "node_modules/fastify-multer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fastify-multer/-/fastify-multer-2.0.3.tgz", + "integrity": "sha512-QnFqrRgxmUwWHTgX9uyQSu0C/hmVCfcxopqjApZ4uaZD5W9MJ+nHUlW4+9q7Yd3BRxDIuHvgiM5mjrh6XG8cAA==", + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^1.0.0", + "append-field": "^1.0.0", + "concat-stream": "^2.0.0", + "fastify-plugin": "^2.0.1", + "mkdirp": "^1.0.4", + "on-finished": "^2.3.0", + "type-is": "~1.6.18", + "xtend": "^4.0.2" + }, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/fastify-multer/node_modules/fastify-plugin": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-2.3.4.tgz", + "integrity": "sha512-I+Oaj6p9oiRozbam30sh39BiuiqBda7yK2nmSPVwDCfIBlKnT8YB3MY+pRQc2Fcd07bf6KPGklHJaQ2Qu81TYQ==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.2" + } + }, + "node_modules/fastify-multer/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/fastify-multer/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/fastify-multer/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/fastify-multer/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fastify-multer/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/fastify-plugin": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz", + "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "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/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" + }, + "node_modules/figlet": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.9.3.tgz", + "integrity": "sha512-majPgOpVtrZN1iyNGbsUP6bOtZ6eaJgg5HHh0vFvm5DJhh8dc+FJpOC4GABvMZ/A7XHAJUuJujhgUY/2jPWgMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^14.0.0" + }, + "bin": { + "figlet": "bin/index.js" + }, + "engines": { + "node": ">= 17.0.0" + } + }, + "node_modules/figlet/node_modules/commander": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.1.tgz", + "integrity": "sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-type": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.0.0.tgz", + "integrity": "sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.2.7", + "strtok3": "^10.2.2", + "token-types": "^6.0.0", + "uint8array-extras": "^1.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "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/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-my-way": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.3.0.tgz", + "integrity": "sha512-eRoFWQw+Yv2tuYlK2pjFS2jGXSxSppAs3hSQjfxVKxM5amECzIgYYc1FEI8ZmhSh/Ig+FrKEz43NLRKJjYCZVg==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^5.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/firebase-admin": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-13.6.0.tgz", + "integrity": "sha512-GdPA/t0+Cq8p1JnjFRBmxRxAGvF/kl2yfdhALl38PrRp325YxyQ5aNaHui0XmaKcKiGRFIJ/EgBNWFoDP0onjw==", + "license": "Apache-2.0", + "dependencies": { + "@fastify/busboy": "^3.0.0", + "@firebase/database-compat": "^2.0.0", + "@firebase/database-types": "^1.0.6", + "@types/node": "^22.8.7", + "farmhash-modern": "^1.1.0", + "fast-deep-equal": "^3.1.1", + "google-auth-library": "^9.14.2", + "jsonwebtoken": "^9.0.0", + "jwks-rsa": "^3.1.0", + "node-forge": "^1.3.1", + "uuid": "^11.0.2" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@google-cloud/firestore": "^7.11.0", + "@google-cloud/storage": "^7.14.0" + } + }, + "node_modules/firebase-admin/node_modules/@fastify/busboy": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-3.2.0.tgz", + "integrity": "sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==", + "license": "MIT" + }, + "node_modules/firebase-admin/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flat-cache/node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^4.0.1", + "cosmiconfig": "^8.2.0", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data/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/form-data/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/formidable": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@paralleldrive/cuid2": "^2.2.2", + "dezalgo": "^1.0.4", + "once": "^1.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "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/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "dev": true, + "license": "Unlicense" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "license": "MIT", + "optional": true + }, + "node_modules/gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gaxios/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/gcp-metadata": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", + "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", + "license": "Apache-2.0", + "dependencies": { + "gaxios": "^6.1.1", + "google-logging-utils": "^0.0.2", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "devOptional": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "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-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "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/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getopts": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "license": "ISC", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/google-auth-library": { + "version": "9.15.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", + "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==", + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/google-auth-library/node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/google-auth-library/node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/google-gax": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.6.1.tgz", + "integrity": "sha512-V6eky/xz2mcKfAd1Ioxyd6nmA61gao3n01C+YeuIwu3vzM9EDR6wcVzMSIbLMDXWeoi9SHYctXuKYC5uJUT3eQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@grpc/grpc-js": "^1.10.9", + "@grpc/proto-loader": "^0.7.13", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "google-auth-library": "^9.3.0", + "node-fetch": "^2.7.0", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^2.0.2", + "protobufjs": "^7.3.2", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/google-gax/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/google-logging-utils": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz", + "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "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/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/graphql": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", + "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "license": "MIT", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/gtoken/node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/gtoken/node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/hashery": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.3.0.tgz", + "integrity": "sha512-fWltioiy5zsSAs9ouEnvhsVJeAXRybGCNNv0lvzpzNOSDbULXRy7ivFWwCCv4I5Am6kSo75hmbsCduOoc2/K4w==", + "license": "MIT", + "dependencies": { + "hookified": "^1.13.0" + }, + "engines": { + "node": ">=20" + } + }, + "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/hookified": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.14.0.tgz", + "integrity": "sha512-pi1ynXIMFx/uIIwpWJ/5CEtOHLGtnUB0WhGeeYT+fKcQ+WCQbm3/rrkAXnpfph++PgepNqPdTC2WTj8A6k6zoQ==", + "license": "MIT" + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.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/http-errors/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/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "license": "MIT" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "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/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "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.", + "dev": true, + "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/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ioredis": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.8.2.tgz", + "integrity": "sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q==", + "license": "MIT", + "dependencies": { + "@ioredis/commands": "1.4.0", + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.4", + "denque": "^2.1.0", + "lodash.defaults": "^4.2.0", + "lodash.isarguments": "^3.1.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ioredis" + } + }, + "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-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "license": "ISC", + "engines": { + "node": ">=6" + } + }, + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", + "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jest/core": "30.2.0", + "@jest/types": "30.2.0", + "import-local": "^3.2.0", + "jest-cli": "30.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", + "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.1.1", + "jest-util": "30.2.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-circus": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", + "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "p-limit": "^3.1.0", + "pretty-format": "30.2.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-cli": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", + "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", + "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.2.0", + "@jest/types": "30.2.0", + "babel-jest": "30.2.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-circus": "30.2.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-runner": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "micromatch": "^4.0.8", + "parse-json": "^5.2.0", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-config/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-config/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-config/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", + "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "jest-util": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", + "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" + } + }, + "node_modules/jest-leak-detector": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", + "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", + "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", + "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", + "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/environment": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-leak-detector": "30.2.0", + "jest-message-util": "30.2.0", + "jest-resolve": "30.2.0", + "jest-runtime": "30.2.0", + "jest-util": "30.2.0", + "jest-watcher": "30.2.0", + "jest-worker": "30.2.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", + "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/globals": "30.2.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-runtime/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-validate": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", + "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.2.0", + "string-length": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jose": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-ref-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz", + "integrity": "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", + "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwks-rsa": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.2.0.tgz", + "integrity": "sha512-PwchfHcQK/5PSydeKCs1ylNym0w/SSv8a62DgHJ//7x2ZclCoinlsjAfDxAAbpoTPybOum/Jgy+vkvMmKz89Ww==", + "license": "MIT", + "dependencies": { + "@types/express": "^4.17.20", + "@types/jsonwebtoken": "^9.0.4", + "debug": "^4.3.4", + "jose": "^4.15.4", + "limiter": "^1.1.5", + "lru-memoizer": "^2.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jwks-rsa/node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/jwks-rsa/node_modules/@types/express-serve-static-core": { + "version": "4.19.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", + "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.5.tgz", + "integrity": "sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/knex": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/knex/-/knex-3.1.0.tgz", + "integrity": "sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw==", + "license": "MIT", + "dependencies": { + "colorette": "2.0.19", + "commander": "^10.0.0", + "debug": "4.3.4", + "escalade": "^3.1.1", + "esm": "^3.2.25", + "get-package-type": "^0.1.0", + "getopts": "2.3.0", + "interpret": "^2.2.0", + "lodash": "^4.17.21", + "pg-connection-string": "2.6.2", + "rechoir": "^0.8.0", + "resolve-from": "^5.0.0", + "tarn": "^3.0.2", + "tildify": "2.0.0" + }, + "bin": { + "knex": "bin/cli.js" + }, + "engines": { + "node": ">=16" + }, + "peerDependenciesMeta": { + "better-sqlite3": { + "optional": true + }, + "mysql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/knex/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/knex/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/knex/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/knex/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/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libphonenumber-js": { + "version": "1.12.25", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.25.tgz", + "integrity": "sha512-u90tUu/SEF8b+RaDKCoW7ZNFDakyBtFlX1ex3J+VH+ElWes/UaitJLt/w4jGu8uAE41lltV/s+kMVtywcMEg7g==", + "license": "MIT" + }, + "node_modules/light-my-request": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", + "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "dependencies": { + "cookie": "^1.0.1", + "process-warning": "^4.0.0", + "set-cookie-parser": "^2.6.0" + } + }, + "node_modules/light-my-request/node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/light-my-request/node_modules/process-warning": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/load-esm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", + "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + }, + { + "type": "buymeacoffee", + "url": "https://buymeacoffee.com/borewit" + } + ], + "license": "MIT", + "engines": { + "node": ">=13.2.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT", + "optional": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loglevel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "license": "Apache-2.0" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-memoizer": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.3.0.tgz", + "integrity": "sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==", + "license": "MIT", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "6.0.0" + } + }, + "node_modules/lru-memoizer/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-memoizer/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "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": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/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/mikro-orm": { + "version": "6.5.8", + "resolved": "https://registry.npmjs.org/mikro-orm/-/mikro-orm-6.5.8.tgz", + "integrity": "sha512-N3iZIOX/1OHP5c9LSJ6P8MN+Ri+Ab7Clo9U/vKg/7paAdTPgBioMcWzRjimoWMPj8COZYEn9x/xPnlna3FHVEg==", + "license": "MIT", + "engines": { + "node": ">= 18.12.0" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/msgpackr": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz", + "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==", + "license": "MIT", + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } + }, + "node_modules/multer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz", + "integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.6.0", + "concat-stream": "^2.0.0", + "mkdirp": "^0.5.6", + "object-assign": "^4.1.1", + "type-is": "^1.6.18", + "xtend": "^4.0.2" + }, + "engines": { + "node": ">= 10.16.0" + } + }, + "node_modules/multer/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/multer/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/multer/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/multer/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/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "license": "MIT" + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.26", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.26.tgz", + "integrity": "sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-require": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz", + "integrity": "sha512-2MXDNZC4aXdkkap+rBBMv0lUsfJqvX5/2FiYYnfCnorZt3Pk06/IOR5KeaoghgS2w07MLWgjbsnyaq6PdHn2LQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pg": { + "version": "8.16.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", + "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.9.1", + "pg-pool": "^3.10.1", + "pg-protocol": "^1.10.3", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.2.7" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz", + "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", + "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz", + "integrity": "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", + "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pg-types/node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pg-types/node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pg-types/node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pg/node_modules/pg-connection-string": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz", + "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==", + "license": "MIT" + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pino": { + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.14.0.tgz", + "integrity": "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==", + "license": "MIT", + "dependencies": { + "@pinojs/redact": "^0.4.0", + "atomic-sleep": "^1.0.0", + "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-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/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pony-cause": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.11.tgz", + "integrity": "sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==", + "dev": true, + "license": "0BSD", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postgres-array": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.4.tgz", + "integrity": "sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.1.0.tgz", + "integrity": "sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/postgres-interval": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-4.0.2.tgz", + "integrity": "sha512-EMsphSQ1YkQqKZL2cuG0zHkmjCCzQqQ71l2GXITqRwjhRleCdv00bDk/ktaSi0LnlaPzAc3535KTrjXsTdtx7A==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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/proto3-json-serializer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", + "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "protobufjs": "^7.2.5" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/protobufjs": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", + "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/protobufjs/node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0", + "optional": true + }, + "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/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qified": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.5.3.tgz", + "integrity": "sha512-kXuQdQTB6oN3KhI6V4acnBSZx8D2I4xzZvn9+wFLLFCoBNQY/sFnCW6c43OL7pOQ2HvGV4lnWIXNmgfp7cTWhQ==", + "license": "MIT", + "dependencies": { + "hookified": "^1.13.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/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/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz", + "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.7.0", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "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": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "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/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "license": "MIT", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.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": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "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/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "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": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "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": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sanitize-html": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.0.tgz", + "integrity": "sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==", + "license": "MIT", + "dependencies": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^8.0.0", + "is-plain-object": "^5.0.0", + "parse-srcset": "^1.0.2", + "postcss": "^8.3.11" + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/secure-json-parse": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", + "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.6.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "license": "MIT", + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/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/socket.io/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/socket.io/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "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/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==", + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "license": "MIT", + "optional": true, + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "license": "MIT", + "optional": true + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "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/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/strtok3": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", + "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", + "license": "MIT", + "optional": true + }, + "node_modules/superagent": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz", + "integrity": "sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==", + "dev": true, + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.1", + "cookiejar": "^2.1.4", + "debug": "^4.3.7", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.4", + "formidable": "^3.5.4", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.2" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/supertest": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.4.tgz", + "integrity": "sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "methods": "^1.1.2", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swagger-ui-dist": { + "version": "5.29.4", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.29.4.tgz", + "integrity": "sha512-gJFDz/gyLOCQtWwAgqs6Rk78z9ONnqTnlW11gimG9nLap8drKa3AJBKpzIQMIjl5PD2Ix+Tn+mc/tfoT2tgsng==", + "license": "Apache-2.0", + "dependencies": { + "@scarf/scarf": "=1.4.0" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tarn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", + "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/teeny-request/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/teeny-request/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/teeny-request/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/terser": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", + "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/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==", + "dev": true, + "license": "MIT", + "peer": true, + "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/terser-webpack-plugin/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/text-decoding": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-decoding/-/text-decoding-1.0.0.tgz", + "integrity": "sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA==", + "license": "MIT" + }, + "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/tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/token-types": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz", + "integrity": "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==", + "license": "MIT", + "dependencies": { + "@borewit/text-codec": "^0.1.0", + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-jest": { + "version": "29.4.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz", + "integrity": "sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "^0.2.6", + "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.8", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.7.3", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jest-util": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ts-loader": { + "version": "9.5.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", + "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tapable": "^2.2.1", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.2.tgz", + "integrity": "sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.46.2", + "@typescript-eslint/parser": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2", + "@typescript-eslint/utils": "8.46.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "license": "MIT", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uint8array-extras": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ulid": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ulid/-/ulid-3.0.1.tgz", + "integrity": "sha512-dPJyqPzx8preQhqq24bBG1YNkvigm87K8kVEHCD+ruZg24t6IFEFv00xMWfxcC4djmFtiTLdFuADn4+DOz6R7Q==", + "license": "MIT", + "bin": { + "ulid": "dist/cli.js" + } + }, + "node_modules/umzug": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-3.8.2.tgz", + "integrity": "sha512-BEWEF8OJjTYVC56GjELeHl/1XjFejrD7aHzn+HldRJTx+pL1siBrKHZC8n4K/xL3bEzVA9o++qD1tK2CpZu4KA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/ts-command-line": "^4.12.2", + "emittery": "^0.13.0", + "fast-glob": "^3.3.2", + "pony-cause": "^2.1.4", + "type-fest": "^4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/umzug/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "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/uuid": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validator": { + "version": "13.15.20", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.20.tgz", + "integrity": "sha512-KxPOq3V2LmfQPP4eqf3Mq/zrT0Dqp2Vmx2Bn285LwVahLc+CsxOM0crBHczm8ijlcjZ0Q5Xd6LW3z3odTPnlrw==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "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==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.103.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.103.0.tgz", + "integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.26.3", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.3", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.4", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/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==", + "dev": true, + "license": "MIT", + "peer": true, + "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/webpack/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webpack/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "devOptional": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "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==", + "devOptional": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..598d19c --- /dev/null +++ b/package.json @@ -0,0 +1,124 @@ +{ + "name": "base-api", + "version": "0.0.1", + "description": "", + "author": "", + "private": true, + "license": "UNLICENSED", + "scripts": { + "db:create": "npx mikro-orm schema:create --run --config ./src/config/mikro-orm.config.dev.ts", + "db:update": "npx mikro-orm schema:update --run --config ./src/config/mikro-orm.config.dev.ts ", + "db:drop": "npx mikro-orm schema:drop --run --config ./src/config/mikro-orm.config.dev.ts", + "db:seed": "npx mikro-orm seeder:run --config ./src/config/mikro-orm.config.dev.ts", + "db:reset": "npm run db:drop && npm run db:create && npm run db:seed", + "build": "nest build", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "start": "nest start dist/main", + "start:dev": "nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node --max-old-space-size=2048 dist/main", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test:e2e": "jest --config ./test/jest-e2e.json", + "migration:create": "npx mikro-orm migration:create --config ./src/config/mikro-orm.config.dev.ts", + "migration:up": "npx mikro-orm migration:up --config ./src/config/mikro-orm.config.dev.ts", + "migration:down": "npx mikro-orm migration:down --config ./src/config/mikro-orm.config.dev.ts", + "migration:list": "npx mikro-orm migration:list --config ./src/config/mikro-orm.config.dev.ts", + "migration:pending": "npx mikro-orm migration:pending --config ./src/config/mikro-orm.config.dev.ts" + }, + "dependencies": { + "@apollo/server": "^5.1.0", + "@as-integrations/fastify": "^3.1.0", + "@aws-sdk/client-s3": "^3.922.0", + "@aws-sdk/s3-request-presigner": "^3.922.0", + "@fastify/cookie": "^11.0.2", + "@fastify/multipart": "^9.3.0", + "@fastify/static": "^8.3.0", + "@keyv/redis": "^5.1.3", + "@mikro-orm/core": "^6.5.8", + "@mikro-orm/nestjs": "^6.1.1", + "@mikro-orm/postgresql": "^6.5.8", + "@nest-lab/fastify-multer": "^1.3.0", + "@nestjs/axios": "^4.0.1", + "@nestjs/bullmq": "^11.0.4", + "@nestjs/cache-manager": "^3.0.1", + "@nestjs/common": "^11.0.1", + "@nestjs/config": "^4.0.2", + "@nestjs/core": "^11.0.1", + "@nestjs/event-emitter": "^3.0.1", + "@nestjs/jwt": "^11.0.1", + "@nestjs/mapped-types": "*", + "@nestjs/platform-express": "^11.0.1", + "@nestjs/platform-fastify": "^11.1.8", + "@nestjs/platform-socket.io": "^11.1.9", + "@nestjs/schedule": "^6.0.1", + "@nestjs/swagger": "^11.2.1", + "@nestjs/throttler": "^6.4.0", + "@types/socket.io": "^3.0.1", + "axios": "^1.13.1", + "bullmq": "^5.65.1", + "cache-manager": "^7.2.4", + "cacheable": "^2.3.1", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.2", + "dayjs": "^1.11.19", + "fastify": "^5.6.1", + "firebase-admin": "^13.6.0", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1", + "sanitize-html": "^2.17.0", + "slugify": "^1.6.6", + "socket.io": "^4.8.1", + "ulid": "^3.0.1", + "uuid": "^13.0.0" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.18.0", + "@mikro-orm/cli": "^6.5.8", + "@mikro-orm/migrations": "^6.5.8", + "@mikro-orm/seeder": "^6.5.8", + "@nestjs/cli": "^11.0.0", + "@nestjs/schematics": "^11.0.0", + "@nestjs/testing": "^11.0.1", + "@types/express": "^5.0.0", + "@types/jest": "^30.0.0", + "@types/node": "^22.10.7", + "@types/sanitize-html": "^2.16.0", + "@types/supertest": "^6.0.2", + "@types/uuid": "^10.0.0", + "eslint": "^9.18.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.2", + "globals": "^16.0.0", + "jest": "^30.0.0", + "prettier": "^3.4.2", + "source-map-support": "^0.5.21", + "supertest": "^7.0.0", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", + "typescript": "^5.7.3", + "typescript-eslint": "^8.20.0" + }, + "jest": { + "moduleFileExtensions": [ + "js", + "json", + "ts" + ], + "rootDir": "src", + "testRegex": ".*\\.spec\\.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + }, + "collectCoverageFrom": [ + "**/*.(t|j)s" + ], + "coverageDirectory": "../coverage", + "testEnvironment": "node" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..3661e0d --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,14002 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@aws-sdk/client-s3': + specifier: ^3.850.0 + version: 3.850.0 + '@aws-sdk/s3-request-presigner': + specifier: ^3.850.0 + version: 3.850.0 + '@fastify/static': + specifier: ^8.2.0 + version: 8.2.0 + '@keyv/redis': + specifier: ^4.5.0 + version: 4.5.0(keyv@5.3.4) + '@mikro-orm/cli': + specifier: ^6.4.16 + version: 6.4.16(pg@8.16.0) + '@mikro-orm/core': + specifier: ^6.4.16 + version: 6.4.16 + '@mikro-orm/nestjs': + specifier: ^6.1.1 + version: 6.1.1(@mikro-orm/core@6.4.16)(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3) + '@mikro-orm/postgresql': + specifier: ^6.4.16 + version: 6.4.16(@mikro-orm/core@6.4.16) + '@mikro-orm/seeder': + specifier: ^6.4.16 + version: 6.4.16(@mikro-orm/core@6.4.16) + '@nest-lab/fastify-multer': + specifier: ^1.3.0 + version: 1.3.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-fastify@11.1.3(@fastify/static@8.2.0)(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3))(rxjs@7.8.2) + '@nest-lab/throttler-storage-redis': + specifier: ^1.1.0 + version: 1.1.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(@nestjs/throttler@6.4.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(reflect-metadata@0.2.2))(ioredis@5.6.1)(reflect-metadata@0.2.2) + '@nestjs-modules/mailer': + specifier: ^2.0.2 + version: 2.0.2(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(nodemailer@7.0.4) + '@nestjs/axios': + specifier: ^4.0.0 + version: 4.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.10.0)(rxjs@7.8.2) + '@nestjs/bullmq': + specifier: ^11.0.2 + version: 11.0.2(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(bullmq@5.56.1) + '@nestjs/cache-manager': + specifier: ^3.0.1 + version: 3.0.1(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(cache-manager@7.0.0)(keyv@5.3.4)(rxjs@7.8.2) + '@nestjs/cli': + specifier: ^11.0.7 + version: 11.0.7(@swc/cli@0.6.0(@swc/core@1.12.9)(chokidar@4.0.3))(@swc/core@1.12.9)(@types/node@22.16.0) + '@nestjs/common': + specifier: ^11.1.3 + version: 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/config': + specifier: ^4.0.2 + version: 4.0.2(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2) + '@nestjs/core': + specifier: ^11.1.3 + version: 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/jwt': + specifier: ^11.0.0 + version: 11.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)) + '@nestjs/passport': + specifier: ^11.0.5 + version: 11.0.5(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(passport@0.7.0) + '@nestjs/platform-fastify': + specifier: ^11.1.3 + version: 11.1.3(@fastify/static@8.2.0)(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3) + '@nestjs/platform-socket.io': + specifier: ^11.1.3 + version: 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(rxjs@7.8.2) + '@nestjs/swagger': + specifier: ^11.2.0 + version: 11.2.0(@fastify/static@8.2.0)(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2) + '@nestjs/throttler': + specifier: ^6.4.0 + version: 6.4.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(reflect-metadata@0.2.2) + '@nestjs/websockets': + specifier: ^11.1.3 + version: 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(@nestjs/platform-socket.io@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + axios: + specifier: ^1.10.0 + version: 1.10.0 + bcrypt: + specifier: ^5.1.1 + version: 5.1.1 + bullmq: + specifier: ^5.56.1 + version: 5.56.1 + class-transformer: + specifier: ^0.5.1 + version: 0.5.1 + class-validator: + specifier: ^0.14.2 + version: 0.14.2 + dayjs: + specifier: ^1.11.13 + version: 1.11.13 + decimal.js: + specifier: ^10.5.0 + version: 10.5.0 + dotenv: + specifier: ^16.6.1 + version: 16.6.1 + fastify: + specifier: ^5.4.0 + version: 5.4.0 + nodemailer: + specifier: ^7.0.4 + version: 7.0.4 + openai: + specifier: ^5.10.2 + version: 5.10.2 + parse-json: + specifier: ^8.3.0 + version: 8.3.0 + passport-jwt: + specifier: ^4.0.1 + version: 4.0.1 + reflect-metadata: + specifier: ^0.2.2 + version: 0.2.2 + rxjs: + specifier: ^7.8.2 + version: 7.8.2 + slugify: + specifier: ^1.6.6 + version: 1.6.6 + socket.io: + specifier: ^4.8.1 + version: 4.8.1 + uuid: + specifier: ^11.1.0 + version: 11.1.0 + web-push: + specifier: ^3.6.7 + version: 3.6.7 + devDependencies: + '@commitlint/cli': + specifier: ^19.8.1 + version: 19.8.1(@types/node@22.16.0)(typescript@5.8.3) + '@commitlint/config-conventional': + specifier: ^19.8.1 + version: 19.8.1 + '@eslint/eslintrc': + specifier: ^3.3.1 + version: 3.3.1 + '@eslint/js': + specifier: ^9.30.1 + version: 9.30.1 + '@nestjs/schematics': + specifier: ^11.0.5 + version: 11.0.5(chokidar@4.0.3)(typescript@5.8.3) + '@nestjs/testing': + specifier: ^11.1.3 + version: 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3) + '@swc/cli': + specifier: ^0.6.0 + version: 0.6.0(@swc/core@1.12.9)(chokidar@4.0.3) + '@swc/core': + specifier: ^1.12.9 + version: 1.12.9 + '@types/bcrypt': + specifier: ^5.0.2 + version: 5.0.2 + '@types/jest': + specifier: ^29.5.14 + version: 29.5.14 + '@types/node': + specifier: ^22.16.0 + version: 22.16.0 + '@types/nodemailer': + specifier: ^6.4.17 + version: 6.4.17 + '@types/passport-jwt': + specifier: ^4.0.1 + version: 4.0.1 + '@types/supertest': + specifier: ^6.0.3 + version: 6.0.3 + '@typescript-eslint/eslint-plugin': + specifier: ^8.35.1 + version: 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': + specifier: ^8.35.1 + version: 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + eslint: + specifier: ^9.30.1 + version: 9.30.1(jiti@2.4.2) + eslint-config-prettier: + specifier: ^10.1.5 + version: 10.1.5(eslint@9.30.1(jiti@2.4.2)) + eslint-import-resolver-typescript: + specifier: ^3.10.1 + version: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.30.1(jiti@2.4.2)) + eslint-plugin-import: + specifier: ^2.32.0 + version: 2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)) + eslint-plugin-prettier: + specifier: ^5.5.1 + version: 5.5.1(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))(prettier@3.6.2) + globals: + specifier: ^16.3.0 + version: 16.3.0 + husky: + specifier: ^9.1.7 + version: 9.1.7 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) + lint-staged: + specifier: ^15.5.2 + version: 15.5.2 + prettier: + specifier: ^3.6.2 + version: 3.6.2 + source-map-support: + specifier: ^0.5.21 + version: 0.5.21 + supertest: + specifier: ^7.1.1 + version: 7.1.1 + ts-jest: + specifier: ^29.4.0 + version: 29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)))(typescript@5.8.3) + ts-loader: + specifier: ^9.5.2 + version: 9.5.2(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.9)) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3) + tsconfig-paths: + specifier: ^4.2.0 + version: 4.2.0 + typescript: + specifier: ^5.8.3 + version: 5.8.3 + typescript-eslint: + specifier: ^8.35.1 + version: 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@angular-devkit/core@19.2.6': + resolution: {integrity: sha512-WFgiYhrDMq83UNaGRAneIM7CYYdBozD+yYA9BjoU8AgBLKtrvn6S8ZcjKAk5heoHtY/u8pEb0mwDTz9gxFmJZQ==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^4.0.0 + peerDependenciesMeta: + chokidar: + optional: true + + '@angular-devkit/core@19.2.8': + resolution: {integrity: sha512-kcxUHKf5Hi98r4gAvMP3ntJV8wuQ3/i6wuU9RcMP0UKUt2Rer5Ryis3MPqT92jvVVwg6lhrLIhXsFuWJMiYjXQ==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^4.0.0 + peerDependenciesMeta: + chokidar: + optional: true + + '@angular-devkit/schematics-cli@19.2.8': + resolution: {integrity: sha512-RFnlyu4Ld8I4xvu/eqrhjbQ6kQTr27w79omMiTbQcQZvP3E6oUyZdBjobyih4Np+1VVQrbdEeNz76daP2iUDig==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + hasBin: true + + '@angular-devkit/schematics@19.2.6': + resolution: {integrity: sha512-YTAxNnT++5eflx19OUHmOWu597/TbTel+QARiZCv1xQw99+X8DCKKOUXtqBRd53CAHlREDI33Rn/JLY3NYgMLQ==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + + '@angular-devkit/schematics@19.2.8': + resolution: {integrity: sha512-QsmFuYdAyeCyg9WF/AJBhFXDUfCwmDFTEbsv5t5KPSP6slhk0GoLNZApniiFytU2siRlSxVNpve2uATyYuAYkQ==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-s3@3.850.0': + resolution: {integrity: sha512-tX5bUfqiLOh6jtAlaiAuOUKFYh8KDG9k9zFLUdgGplC5TP47AYTreUEg+deCTHo4DD3YCvrLuyZ8tIDgKu7neQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.848.0': + resolution: {integrity: sha512-mD+gOwoeZQvbecVLGoCmY6pS7kg02BHesbtIxUj+PeBqYoZV5uLvjUOmuGfw1SfoSobKvS11urxC9S7zxU/Maw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/core@3.846.0': + resolution: {integrity: sha512-7CX0pM906r4WSS68fCTNMTtBCSkTtf3Wggssmx13gD40gcWEZXsU00KzPp1bYheNRyPlAq3rE22xt4wLPXbuxA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-env@3.846.0': + resolution: {integrity: sha512-QuCQZET9enja7AWVISY+mpFrEIeHzvkx/JEEbHYzHhUkxcnC2Kq2c0bB7hDihGD0AZd3Xsm653hk1O97qu69zg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-http@3.846.0': + resolution: {integrity: sha512-Jh1iKUuepdmtreMYozV2ePsPcOF5W9p3U4tWhi3v6nDvz0GsBjzjAROW+BW8XMz9vAD3I9R+8VC3/aq63p5nlw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-ini@3.848.0': + resolution: {integrity: sha512-r6KWOG+En2xujuMhgZu7dzOZV3/M5U/5+PXrG8dLQ3rdPRB3vgp5tc56KMqLwm/EXKRzAOSuw/UE4HfNOAB8Hw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.848.0': + resolution: {integrity: sha512-AblNesOqdzrfyASBCo1xW3uweiSro4Kft9/htdxLeCVU1KVOnFWA5P937MNahViRmIQm2sPBCqL8ZG0u9lnh5g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.846.0': + resolution: {integrity: sha512-mEpwDYarJSH+CIXnnHN0QOe0MXI+HuPStD6gsv3z/7Q6ESl8KRWon3weFZCDnqpiJMUVavlDR0PPlAFg2MQoPg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.848.0': + resolution: {integrity: sha512-pozlDXOwJZL0e7w+dqXLgzVDB7oCx4WvtY0sk6l4i07uFliWF/exupb6pIehFWvTUcOvn5aFTTqcQaEzAD5Wsg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.848.0': + resolution: {integrity: sha512-D1fRpwPxtVDhcSc/D71exa2gYweV+ocp4D3brF0PgFd//JR3XahZ9W24rVnTQwYEcK9auiBZB89Ltv+WbWN8qw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-bucket-endpoint@3.840.0': + resolution: {integrity: sha512-+gkQNtPwcSMmlwBHFd4saVVS11In6ID1HczNzpM3MXKXRBfSlbZJbCt6wN//AZ8HMklZEik4tcEOG0qa9UY8SQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-expect-continue@3.840.0': + resolution: {integrity: sha512-iJg2r6FKsKKvdiU4oCOuCf7Ro/YE0Q2BT/QyEZN3/Rt8Nr4SAZiQOlcBXOCpGvuIKOEAhvDOUnW3aDHL01PdVw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.846.0': + resolution: {integrity: sha512-CdkeVfkwt3+bDLhmOwBxvkUf6oY9iUhvosaUnqkoPsOqIiUEN54yTGOnO8A0wLz6mMsZ6aBlfFrQhFnxt3c+yw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-host-header@3.840.0': + resolution: {integrity: sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-location-constraint@3.840.0': + resolution: {integrity: sha512-KVLD0u0YMF3aQkVF8bdyHAGWSUY6N1Du89htTLgqCcIhSxxAJ9qifrosVZ9jkAzqRW99hcufyt2LylcVU2yoKQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-logger@3.840.0': + resolution: {integrity: sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.840.0': + resolution: {integrity: sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.846.0': + resolution: {integrity: sha512-jP9x+2Q87J5l8FOP+jlAd7vGLn0cC6G9QGmf386e5OslBPqxXKcl3RjqGLIOKKos2mVItY3ApP5xdXQx7jGTVA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-ssec@3.840.0': + resolution: {integrity: sha512-CBZP9t1QbjDFGOrtnUEHL1oAvmnCUUm7p0aPNbIdSzNtH42TNKjPRN3TuEIJDGjkrqpL3MXyDSmNayDcw/XW7Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-user-agent@3.848.0': + resolution: {integrity: sha512-rjMuqSWJEf169/ByxvBqfdei1iaduAnfolTshsZxwcmLIUtbYrFUmts0HrLQqsAG8feGPpDLHA272oPl+NTCCA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/nested-clients@3.848.0': + resolution: {integrity: sha512-joLsyyo9u61jnZuyYzo1z7kmS7VgWRAkzSGESVzQHfOA1H2PYeUFek6vLT4+c9xMGrX/Z6B0tkRdzfdOPiatLg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.840.0': + resolution: {integrity: sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/s3-request-presigner@3.850.0': + resolution: {integrity: sha512-eFvMUCJXoVTkAxkqHKn125mLMGtNa76+oD3wV97ScXUZuL5liaj+kAN9nSqRiQ5vaCz5gsOeB9t/ba/cTGATjg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.846.0': + resolution: {integrity: sha512-ZMfIMxUljqZzPJGOcraC6erwq/z1puNMU35cO1a/WdhB+LdYknMn1lr7SJuH754QwNzzIlZbEgg4hoHw50+DpQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.848.0': + resolution: {integrity: sha512-oNPyM4+Di2Umu0JJRFSxDcKQ35+Chl/rAwD47/bS0cDPI8yrao83mLXLeDqpRPHyQW4sXlP763FZcuAibC0+mg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/types@3.840.0': + resolution: {integrity: sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-arn-parser@3.804.0': + resolution: {integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-endpoints@3.848.0': + resolution: {integrity: sha512-fY/NuFFCq/78liHvRyFKr+aqq1aA/uuVSANjzr5Ym8c+9Z3HRPE9OrExAHoMrZ6zC8tHerQwlsXYYH5XZ7H+ww==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-format-url@3.840.0': + resolution: {integrity: sha512-VB1PWyI1TQPiPvg4w7tgUGGQER1xxXPNUqfh3baxUSFi1Oh8wHrDnFywkxLm3NMmgDmnLnSZ5Q326qAoyqKLSg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-locate-window@3.804.0': + resolution: {integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-user-agent-browser@3.840.0': + resolution: {integrity: sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==} + + '@aws-sdk/util-user-agent-node@3.848.0': + resolution: {integrity: sha512-Zz1ft9NiLqbzNj/M0jVNxaoxI2F4tGXN0ZbZIj+KJ+PbJo+w5+Jo6d0UDAtbj3AEd79pjcCaP4OA9NTVzItUdw==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.821.0': + resolution: {integrity: sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==} + engines: {node: '>=18.0.0'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.0': + resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.0': + resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.0': + resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.27.3': + resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.6': + resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.0': + resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.27.6': + resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.0': + resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.0': + resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@commitlint/cli@19.8.1': + resolution: {integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@19.8.1': + resolution: {integrity: sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@19.8.1': + resolution: {integrity: sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==} + engines: {node: '>=v18'} + + '@commitlint/ensure@19.8.1': + resolution: {integrity: sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@19.8.1': + resolution: {integrity: sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==} + engines: {node: '>=v18'} + + '@commitlint/format@19.8.1': + resolution: {integrity: sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@19.8.1': + resolution: {integrity: sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==} + engines: {node: '>=v18'} + + '@commitlint/lint@19.8.1': + resolution: {integrity: sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==} + engines: {node: '>=v18'} + + '@commitlint/load@19.8.1': + resolution: {integrity: sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==} + engines: {node: '>=v18'} + + '@commitlint/message@19.8.1': + resolution: {integrity: sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==} + engines: {node: '>=v18'} + + '@commitlint/parse@19.8.1': + resolution: {integrity: sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==} + engines: {node: '>=v18'} + + '@commitlint/read@19.8.1': + resolution: {integrity: sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@19.8.1': + resolution: {integrity: sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==} + engines: {node: '>=v18'} + + '@commitlint/rules@19.8.1': + resolution: {integrity: sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@19.8.1': + resolution: {integrity: sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==} + engines: {node: '>=v18'} + + '@commitlint/top-level@19.8.1': + resolution: {integrity: sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==} + engines: {node: '>=v18'} + + '@commitlint/types@19.8.1': + resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==} + engines: {node: '>=v18'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@css-inline/css-inline-android-arm-eabi@0.14.1': + resolution: {integrity: sha512-LNUR8TY4ldfYi0mi/d4UNuHJ+3o8yLQH9r2Nt6i4qeg1i7xswfL3n/LDLRXvGjBYqeEYNlhlBQzbPwMX1qrU6A==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@css-inline/css-inline-android-arm64@0.14.1': + resolution: {integrity: sha512-tH5us0NYGoTNBHOUHVV7j9KfJ4DtFOeTLA3cM0XNoMtArNu2pmaaBMFJPqECzavfXkLc7x5Z22UPZYjoyHfvCA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@css-inline/css-inline-darwin-arm64@0.14.1': + resolution: {integrity: sha512-QE5W1YRIfRayFrtrcK/wqEaxNaqLULPI0gZB4ArbFRd3d56IycvgBasDTHPre5qL2cXCO3VyPx+80XyHOaVkag==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@css-inline/css-inline-darwin-x64@0.14.1': + resolution: {integrity: sha512-mAvv2sN8awNFsbvBzlFkZPbCNZ6GCWY5/YcIz7V5dPYw+bHHRbjnlkNTEZq5BsDxErVrMIGvz05PGgzuNvZvdQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@css-inline/css-inline-linux-arm-gnueabihf@0.14.1': + resolution: {integrity: sha512-AWC44xL0X7BgKvrWEqfSqkT2tJA5kwSGrAGT+m0gt11wnTYySvQ6YpX0fTY9i3ppYGu4bEdXFjyK2uY1DTQMHA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@css-inline/css-inline-linux-arm64-gnu@0.14.1': + resolution: {integrity: sha512-drj0ciiJgdP3xKXvNAt4W+FH4KKMs8vB5iKLJ3HcH07sNZj58Sx++2GxFRS1el3p+GFp9OoYA6dgouJsGEqt0Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@css-inline/css-inline-linux-arm64-musl@0.14.1': + resolution: {integrity: sha512-FzknI+st8eA8YQSdEJU9ykcM0LZjjigBuynVF5/p7hiMm9OMP8aNhWbhZ8LKJpKbZrQsxSGS4g9Vnr6n6FiSdQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@css-inline/css-inline-linux-x64-gnu@0.14.1': + resolution: {integrity: sha512-yubbEye+daDY/4vXnyASAxH88s256pPati1DfVoZpU1V0+KP0BZ1dByZOU1ktExurbPH3gZOWisAnBE9xon0Uw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@css-inline/css-inline-linux-x64-musl@0.14.1': + resolution: {integrity: sha512-6CRAZzoy1dMLPC/tns2rTt1ZwPo0nL/jYBEIAsYTCWhfAnNnpoLKVh5Nm+fSU3OOwTTqU87UkGrFJhObD/wobQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@css-inline/css-inline-win32-x64-msvc@0.14.1': + resolution: {integrity: sha512-nzotGiaiuiQW78EzsiwsHZXbxEt6DiMUFcDJ6dhiliomXxnlaPyBfZb6/FMBgRJOf6sknDt/5695OttNmbMYzg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@css-inline/css-inline@0.14.1': + resolution: {integrity: sha512-u4eku+hnPqqHIGq/ZUQcaP0TrCbYeLIYBaK7qClNRGZbnh8RC4gVxLEIo8Pceo1nOK9E5G4Lxzlw5KnXcvflfA==} + engines: {node: '>= 10'} + + '@emnapi/core@1.4.3': + resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} + + '@emnapi/runtime@1.4.3': + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + + '@emnapi/wasi-threads@1.0.2': + resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.0': + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.3.0': + resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.14.0': + resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.15.1': + resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.30.1': + resolution: {integrity: sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.3.3': + resolution: {integrity: sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@fastify/accept-negotiator@2.0.1': + resolution: {integrity: sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==} + + '@fastify/ajv-compiler@4.0.2': + resolution: {integrity: sha512-Rkiu/8wIjpsf46Rr+Fitd3HRP+VsxUFDDeag0hs9L0ksfnwx2g7SPQQTFL0E8Qv+rfXzQOxBJnjUB9ITUDjfWQ==} + + '@fastify/busboy@1.2.1': + resolution: {integrity: sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==} + engines: {node: '>=14'} + + '@fastify/cors@11.0.1': + resolution: {integrity: sha512-dmZaE7M1f4SM8ZZuk5RhSsDJ+ezTgI7v3HHRj8Ow9CneczsPLZV6+2j2uwdaSLn8zhTv6QV0F4ZRcqdalGx1pQ==} + + '@fastify/error@4.2.0': + resolution: {integrity: sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==} + + '@fastify/fast-json-stringify-compiler@5.0.3': + resolution: {integrity: sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==} + + '@fastify/formbody@8.0.2': + resolution: {integrity: sha512-84v5J2KrkXzjgBpYnaNRPqwgMsmY7ZDjuj0YVuMR3NXCJRCgKEZy/taSP1wUYGn0onfxJpLyRGDLa+NMaDJtnA==} + + '@fastify/forwarded@3.0.0': + resolution: {integrity: sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==} + + '@fastify/merge-json-schemas@0.2.1': + resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==} + + '@fastify/middie@9.0.3': + resolution: {integrity: sha512-7OYovKXp9UKYeVMcjcFLMcSpoMkmcZmfnG+eAvtdiatN35W7c+r9y1dRfpA+pfFVNuHGGqI3W+vDTmjvcfLcMA==} + + '@fastify/proxy-addr@5.0.0': + resolution: {integrity: sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==} + + '@fastify/send@4.1.0': + resolution: {integrity: sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==} + + '@fastify/static@8.2.0': + resolution: {integrity: sha512-PejC/DtT7p1yo3p+W7LiUtLMsV8fEvxAK15sozHy9t8kwo5r0uLYmhV/inURmGz1SkHZFz/8CNtHLPyhKcx4SQ==} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@inquirer/checkbox@4.1.9': + resolution: {integrity: sha512-DBJBkzI5Wx4jFaYm221LHvAhpKYkhVS0k9plqHwaHhofGNxvYB7J3Bz8w+bFJ05zaMb0sZNHo4KdmENQFlNTuQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.13': + resolution: {integrity: sha512-EkCtvp67ICIVVzjsquUiVSd+V5HRGOGQfsqA4E4vMWhYnB7InUL0pa0TIWt1i+OfP16Gkds8CdIu6yGZwOM1Yw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.1.14': + resolution: {integrity: sha512-Ma+ZpOJPewtIYl6HZHZckeX1STvDnHTCB2GVINNUlSEn2Am6LddWwfPkIGY0IUFVjUUrr/93XlBwTK6mfLjf0A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/editor@4.2.14': + resolution: {integrity: sha512-yd2qtLl4QIIax9DTMZ1ZN2pFrrj+yL3kgIWxm34SS6uwCr0sIhsNyudUjAo5q3TqI03xx4SEBkUJqZuAInp9uA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/expand@4.0.16': + resolution: {integrity: sha512-oiDqafWzMtofeJyyGkb1CTPaxUkjIcSxePHHQCfif8t3HV9pHcw1Kgdw3/uGpDvaFfeTluwQtWiqzPVjAqS3zA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.12': + resolution: {integrity: sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==} + engines: {node: '>=18'} + + '@inquirer/input@4.2.0': + resolution: {integrity: sha512-opqpHPB1NjAmDISi3uvZOTrjEEU5CWVu/HBkDby8t93+6UxYX0Z7Ps0Ltjm5sZiEbWenjubwUkivAEYQmy9xHw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/number@3.0.16': + resolution: {integrity: sha512-kMrXAaKGavBEoBYUCgualbwA9jWUx2TjMA46ek+pEKy38+LFpL9QHlTd8PO2kWPUgI/KB+qi02o4y2rwXbzr3Q==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/password@4.0.16': + resolution: {integrity: sha512-g8BVNBj5Zeb5/Y3cSN+hDUL7CsIFDIuVxb9EPty3lkxBaYpjL5BNRKSYOF9yOLe+JOcKFd+TSVeADQ4iSY7rbg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.3.2': + resolution: {integrity: sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.4.1': + resolution: {integrity: sha512-UlmM5FVOZF0gpoe1PT/jN4vk8JmpIWBlMvTL8M+hlvPmzN89K6z03+IFmyeu/oFCenwdwHDr2gky7nIGSEVvlA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/rawlist@4.1.4': + resolution: {integrity: sha512-5GGvxVpXXMmfZNtvWw4IsHpR7RzqAR624xtkPd1NxxlV5M+pShMqzL4oRddRkg8rVEOK9fKdJp1jjVML2Lr7TQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@3.0.16': + resolution: {integrity: sha512-POCmXo+j97kTGU6aeRjsPyuCpQQfKcMXdeTMw708ZMtWrj5aykZvlUxH4Qgz3+Y1L/cAVZsSpA+UgZCu2GMOMg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@4.2.4': + resolution: {integrity: sha512-unTppUcTjmnbl/q+h8XeQDhAqIOmwWYWNyiiP2e3orXrg6tOaa5DHXja9PChCSbChOsktyKgOieRZFnajzxoBg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@3.0.7': + resolution: {integrity: sha512-PfunHQcjwnju84L+ycmcMKB/pTPIngjUJvfnRhKY6FKPuYXlM4aQCb/nIdTFR6BEhMjFvngzvng/vBAJMZpLSA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@ioredis/commands@1.2.0': + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jercle/yargonaut@1.1.5': + resolution: {integrity: sha512-zBp2myVvBHp1UaJsNTyS6q4UDKT7eRiqTS4oNTS6VQMd6mpxYOdbeK4pY279cDCdakGy6hG0J3ejoXZVsPwHqw==} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.12': + resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.10': + resolution: {integrity: sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==} + + '@jridgewell/sourcemap-codec@1.5.4': + resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + + '@jridgewell/trace-mapping@0.3.29': + resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@keyv/redis@4.5.0': + resolution: {integrity: sha512-0uoeT8Ik0R22mqxB19Cf3nDuxCH8dppEMxL98o4LvI/rgVeWS/2iVWyjmZR6yNo6jSchVraXG2Y44iJwj++2IQ==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.3.4 + + '@keyv/serialize@1.0.3': + resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==} + + '@lukeed/csprng@1.1.0': + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} + engines: {node: '>=8'} + + '@lukeed/ms@2.0.2': + resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==} + engines: {node: '>=8'} + + '@mapbox/node-pre-gyp@1.0.11': + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + + '@microsoft/tsdoc@0.15.1': + resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} + + '@mikro-orm/cli@6.4.16': + resolution: {integrity: sha512-O1uP+5j/xMYR8aPTamzQKYJnL1GCootGLR5UVH1bQJS9/ukFuAKDsu6VpJkJxE9j0TLxAhTmo56iZFUIS04sFQ==} + engines: {node: '>= 18.12.0'} + hasBin: true + + '@mikro-orm/core@6.4.16': + resolution: {integrity: sha512-BW/My1VlI0R25Eojdh0UiET8J+mEruThksGVfllEnjJQ0uwGs3mm/TbMclv0g+d7Qp4+mpzDQU4+lIo8okHYsw==} + engines: {node: '>= 18.12.0'} + + '@mikro-orm/knex@6.4.16': + resolution: {integrity: sha512-2xQodj3uh8maPGsLR7PZMmECtdyLutGxzzrGrrhSX2b+7v9k4MeMazTi4/627hJvivdUpuofypW5zMpw3TU1vQ==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@mikro-orm/core': ^6.0.0 + better-sqlite3: '*' + libsql: '*' + mariadb: '*' + peerDependenciesMeta: + better-sqlite3: + optional: true + libsql: + optional: true + mariadb: + optional: true + + '@mikro-orm/nestjs@6.1.1': + resolution: {integrity: sha512-aluD3eTeuCvIePDk5UBanHIhu1zAJQXqWAg47MZdHJmFkNuXn62DCXbD2c4X5TCpKW/m0zjba22ilyZ/AFG9qg==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@mikro-orm/core': ^6.0.0 || ^6.0.0-dev.0 || ^7.0.0-dev.0 + '@nestjs/common': ^10.0.0 || ^11.0.5 + '@nestjs/core': ^10.0.0 || ^11.0.5 + + '@mikro-orm/postgresql@6.4.16': + resolution: {integrity: sha512-i14CvyLrtMhQJMk/X3xTT2Mgc8j0VtSWPqhKBN+euiPxbee4u5k39TlJAly72k3luknFBCzpKCh3ZNSGDZ+j4Q==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@mikro-orm/core': ^6.0.0 + + '@mikro-orm/seeder@6.4.16': + resolution: {integrity: sha512-5wE8gvZZYhD7N9eGsgGfK+/oe74mCgixZaE4ClSo7xUSL6fJTpzctAU6sr4NTHo3QclNTxtiI5syJD2VByWQhg==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@mikro-orm/core': ^6.0.0 + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + cpu: [arm64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + cpu: [x64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + cpu: [arm64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + + '@napi-rs/nice-android-arm-eabi@1.0.4': + resolution: {integrity: sha512-OZFMYUkih4g6HCKTjqJHhMUlgvPiDuSLZPbPBWHLjKmFTv74COzRlq/gwHtmEVaR39mJQ6ZyttDl2HNMUbLVoA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@napi-rs/nice-android-arm64@1.0.4': + resolution: {integrity: sha512-k8u7cjeA64vQWXZcRrPbmwjH8K09CBnNaPnI9L1D5N6iMPL3XYQzLcN6WwQonfcqCDv5OCY3IqX89goPTV4KMw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/nice-darwin-arm64@1.0.4': + resolution: {integrity: sha512-GsLdQvUcuVzoyzmtjsThnpaVEizAqH5yPHgnsBmq3JdVoVZHELFo7PuJEdfOH1DOHi2mPwB9sCJEstAYf3XCJA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/nice-darwin-x64@1.0.4': + resolution: {integrity: sha512-1y3gyT3e5zUY5SxRl3QDtJiWVsbkmhtUHIYwdWWIQ3Ia+byd/IHIEpqAxOGW1nhhnIKfTCuxBadHQb+yZASVoA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/nice-freebsd-x64@1.0.4': + resolution: {integrity: sha512-06oXzESPRdXUuzS8n2hGwhM2HACnDfl3bfUaSqLGImM8TA33pzDXgGL0e3If8CcFWT98aHows5Lk7xnqYNGFeA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@napi-rs/nice-linux-arm-gnueabihf@1.0.4': + resolution: {integrity: sha512-CgklZ6g8WL4+EgVVkxkEvvsi2DSLf9QIloxWO0fvQyQBp6VguUSX3eHLeRpqwW8cRm2Hv/Q1+PduNk7VK37VZw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@napi-rs/nice-linux-arm64-gnu@1.0.4': + resolution: {integrity: sha512-wdAJ7lgjhAlsANUCv0zi6msRwq+D4KDgU+GCCHssSxWmAERZa2KZXO0H2xdmoJ/0i03i6YfK/sWaZgUAyuW2oQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/nice-linux-arm64-musl@1.0.4': + resolution: {integrity: sha512-4b1KYG+sriufhFrpUS9uNOEYYJqSfcbnwGx6uGX7JjrH8tELG90cOpCawz5THNIwlS3DhLgnCOcn0+4p6z26QA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/nice-linux-ppc64-gnu@1.0.4': + resolution: {integrity: sha512-iaf3vMRgr23oe1PUaKpxaH3DS0IMN0+N9iEiWVwYPm/U15vZFYdqVegGfN2PzrZLUl5lc8ZxbmEKDfuqslhAMA==} + engines: {node: '>= 10'} + cpu: [ppc64] + os: [linux] + + '@napi-rs/nice-linux-riscv64-gnu@1.0.4': + resolution: {integrity: sha512-UXoREY6Yw6rHrGuTwQgBxpfjK34t6mTjibE9/cXbefL9AuUCJ9gEgwNKZiONuR5QGswChqo9cnthjdKkYyAdDg==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + + '@napi-rs/nice-linux-s390x-gnu@1.0.4': + resolution: {integrity: sha512-eFbgYCRPmsqbYPAlLYU5hYTNbogmIDUvknilehHsFhCH1+0/kN87lP+XaLT0Yeq4V/rpwChSd9vlz4muzFArtw==} + engines: {node: '>= 10'} + cpu: [s390x] + os: [linux] + + '@napi-rs/nice-linux-x64-gnu@1.0.4': + resolution: {integrity: sha512-4T3E6uTCwWT6IPnwuPcWVz3oHxvEp/qbrCxZhsgzwTUBEwu78EGNXGdHfKJQt3soth89MLqZJw+Zzvnhrsg1mQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/nice-linux-x64-musl@1.0.4': + resolution: {integrity: sha512-NtbBkAeyBPLvCBkWtwkKXkNSn677eaT0cX3tygq+2qVv71TmHgX4gkX6o9BXjlPzdgPGwrUudavCYPT9tzkEqQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/nice-win32-arm64-msvc@1.0.4': + resolution: {integrity: sha512-vubOe3i+YtSJGEk/++73y+TIxbuVHi+W8ZzrRm2eETCjCRwNlgbfToQZ85dSA+4iBB/NJRGNp+O4hfdbbttZWA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/nice-win32-ia32-msvc@1.0.4': + resolution: {integrity: sha512-BMOVrUDZeg1RNRKVlh4eyLv5djAAVLiSddfpuuQ47EFjBcklg0NUeKMFKNrKQR4UnSn4HAiACLD7YK7koskwmg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@napi-rs/nice-win32-x64-msvc@1.0.4': + resolution: {integrity: sha512-kCNk6HcRZquhw/whwh4rHsdPyOSCQCgnVDVik+Y9cuSVTDy3frpiCJTScJqPPS872h4JgZKkr/+CwcwttNEo9Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/nice@1.0.4': + resolution: {integrity: sha512-Sqih1YARrmMoHlXGgI9JrrgkzxcaaEso0AH+Y7j8NHonUs+xe4iDsgC3IBIDNdzEewbNpccNN6hip+b5vmyRLw==} + engines: {node: '>= 10'} + + '@napi-rs/wasm-runtime@0.2.11': + resolution: {integrity: sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==} + + '@nest-lab/fastify-multer@1.3.0': + resolution: {integrity: sha512-/4LocG7pBhwwbqN33YiPbv+93NdxlL/z/B2EL+hpulIr+qn2eLs/CxMg8jHCmtGCodA7NFHFERqIh75Fc2fryQ==} + peerDependencies: + '@nestjs/common': ^9.0.0 || ^10.0.0 || ^11.0.0 + '@nestjs/platform-fastify': ^9.0.0 || ^10.0.0 || ^11.0.0 + rxjs: ^7.0.0 + + '@nest-lab/throttler-storage-redis@1.1.0': + resolution: {integrity: sha512-7DW8MuqoB+ubu8cWby9Vw56eAFqsHFfowEflHbmmAF2sNByRdzcR4ddcyoYLwL3zG53nLmvzUa4EXoHKB4RoaQ==} + peerDependencies: + '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 + '@nestjs/core': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 + '@nestjs/throttler': '>=6.0.0' + ioredis: '>=5.0.0' + reflect-metadata: ^0.2.1 + + '@nestjs-modules/mailer@2.0.2': + resolution: {integrity: sha512-+z4mADQasg0H1ZaGu4zZTuKv2pu+XdErqx99PLFPzCDNTN/q9U59WPgkxVaHnsvKHNopLj5Xap7G4ZpptduoYw==} + peerDependencies: + '@nestjs/common': '>=7.0.9' + '@nestjs/core': '>=7.0.9' + nodemailer: '>=6.4.6' + + '@nestjs/axios@4.0.0': + resolution: {integrity: sha512-1cB+Jyltu/uUPNQrpUimRHEQHrnQrpLzVj6dU3dgn6iDDDdahr10TgHFGTmw5VuJ9GzKZsCLDL78VSwJAs/9JQ==} + peerDependencies: + '@nestjs/common': ^10.0.0 || ^11.0.0 + axios: ^1.3.1 + rxjs: ^7.0.0 + + '@nestjs/bull-shared@11.0.2': + resolution: {integrity: sha512-dFlttJvBqIFD6M8JVFbkrR4Feb39OTAJPJpFVILU50NOJCM4qziRw3dSNG84Q3v+7/M6xUGMFdZRRGvBBKxoSA==} + peerDependencies: + '@nestjs/common': ^10.0.0 || ^11.0.0 + '@nestjs/core': ^10.0.0 || ^11.0.0 + + '@nestjs/bullmq@11.0.2': + resolution: {integrity: sha512-Lq6lGpKkETsm0RDcUktlzsthFoE3A5QTMp2FwPi1eztKqKD6/90KS1TcnC9CJFzjpUaYnQzIMrlNs55e+/wsHA==} + peerDependencies: + '@nestjs/common': ^10.0.0 || ^11.0.0 + '@nestjs/core': ^10.0.0 || ^11.0.0 + bullmq: ^3.0.0 || ^4.0.0 || ^5.0.0 + + '@nestjs/cache-manager@3.0.1': + resolution: {integrity: sha512-4UxTnR0fsmKL5YDalU2eLFVnL+OBebWUpX+hEduKGncrVKH4PPNoiRn1kXyOCjmzb0UvWgqubpssNouc8e0MCw==} + peerDependencies: + '@nestjs/common': ^9.0.0 || ^10.0.0 || ^11.0.0 + '@nestjs/core': ^9.0.0 || ^10.0.0 || ^11.0.0 + cache-manager: '>=6' + keyv: '>=5' + rxjs: ^7.8.1 + + '@nestjs/cli@11.0.7': + resolution: {integrity: sha512-svrP8j1R0/lQVJ8ZI3BlDtuZxmkvVJokUJSB04sr6uibunk2wHeVDDVLZvYBUorCdGU/RHJl1IufhqUBM91vAQ==} + engines: {node: '>= 20.11'} + hasBin: true + peerDependencies: + '@swc/cli': ^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 + '@swc/core': ^1.3.62 + peerDependenciesMeta: + '@swc/cli': + optional: true + '@swc/core': + optional: true + + '@nestjs/common@11.1.3': + resolution: {integrity: sha512-ogEK+GriWodIwCw6buQ1rpcH4Kx+G7YQ9EwuPySI3rS05pSdtQ++UhucjusSI9apNidv+QURBztJkRecwwJQXg==} + peerDependencies: + class-transformer: '>=0.4.1' + class-validator: '>=0.13.2' + reflect-metadata: ^0.1.12 || ^0.2.0 + rxjs: ^7.1.0 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + + '@nestjs/config@4.0.2': + resolution: {integrity: sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA==} + peerDependencies: + '@nestjs/common': ^10.0.0 || ^11.0.0 + rxjs: ^7.1.0 + + '@nestjs/core@11.1.3': + resolution: {integrity: sha512-5lTni0TCh8x7bXETRD57pQFnKnEg1T6M+VLE7wAmyQRIecKQU+2inRGZD+A4v2DC1I04eA0WffP0GKLxjOKlzw==} + engines: {node: '>= 20'} + peerDependencies: + '@nestjs/common': ^11.0.0 + '@nestjs/microservices': ^11.0.0 + '@nestjs/platform-express': ^11.0.0 + '@nestjs/websockets': ^11.0.0 + reflect-metadata: ^0.1.12 || ^0.2.0 + rxjs: ^7.1.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + '@nestjs/websockets': + optional: true + + '@nestjs/jwt@11.0.0': + resolution: {integrity: sha512-v7YRsW3Xi8HNTsO+jeHSEEqelX37TVWgwt+BcxtkG/OfXJEOs6GZdbdza200d6KqId1pJQZ6UPj1F0M6E+mxaA==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 + + '@nestjs/mapped-types@2.1.0': + resolution: {integrity: sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==} + peerDependencies: + '@nestjs/common': ^10.0.0 || ^11.0.0 + class-transformer: ^0.4.0 || ^0.5.0 + class-validator: ^0.13.0 || ^0.14.0 + reflect-metadata: ^0.1.12 || ^0.2.0 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + + '@nestjs/passport@11.0.5': + resolution: {integrity: sha512-ulQX6mbjlws92PIM15Naes4F4p2JoxGnIJuUsdXQPT+Oo2sqQmENEZXM7eYuimocfHnKlcfZOuyzbA33LwUlOQ==} + peerDependencies: + '@nestjs/common': ^10.0.0 || ^11.0.0 + passport: ^0.5.0 || ^0.6.0 || ^0.7.0 + + '@nestjs/platform-fastify@11.1.3': + resolution: {integrity: sha512-SMIjGV6eAxQv6+/2OumIdNivVLebql6THWjXv8Uh4dR1CI6ipp3gMbpoiYbHP7AGXv8pzuGmpakli86VP9P8NQ==} + peerDependencies: + '@fastify/static': ^8.0.0 + '@fastify/view': ^10.0.0 || ^11.0.0 + '@nestjs/common': ^11.0.0 + '@nestjs/core': ^11.0.0 + peerDependenciesMeta: + '@fastify/static': + optional: true + '@fastify/view': + optional: true + + '@nestjs/platform-socket.io@11.1.3': + resolution: {integrity: sha512-jQ+ccprmh3kKolBp+bb97zoaS3vKaiyeNqyctGqV4CSG8P6mXSaaUObWxAsw6Jdgn5YQAVEBWJ6FhvF4s6QZbg==} + peerDependencies: + '@nestjs/common': ^11.0.0 + '@nestjs/websockets': ^11.0.0 + rxjs: ^7.1.0 + + '@nestjs/schematics@11.0.5': + resolution: {integrity: sha512-T50SCNyqCZ/fDssaOD7meBKLZ87ebRLaJqZTJPvJKjlib1VYhMOCwXYsr7bjMPmuPgiQHOwvppz77xN/m6GM7A==} + peerDependencies: + typescript: '>=4.8.2' + + '@nestjs/swagger@11.2.0': + resolution: {integrity: sha512-5wolt8GmpNcrQv34tIPUtPoV1EeFbCetm40Ij3+M0FNNnf2RJ3FyWfuQvI8SBlcJyfaounYVTKzKHreFXsUyOg==} + peerDependencies: + '@fastify/static': ^8.0.0 + '@nestjs/common': ^11.0.1 + '@nestjs/core': ^11.0.1 + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 || ^0.2.0 + peerDependenciesMeta: + '@fastify/static': + optional: true + class-transformer: + optional: true + class-validator: + optional: true + + '@nestjs/testing@11.1.3': + resolution: {integrity: sha512-CeXG6/eEqgFIkPkmU00y18Dd3DLOIDFhPItzJK1SWckKo6IhcnfoRJzGx75bmuvUMjb51j6An96S/+MJ2ty9jA==} + peerDependencies: + '@nestjs/common': ^11.0.0 + '@nestjs/core': ^11.0.0 + '@nestjs/microservices': ^11.0.0 + '@nestjs/platform-express': ^11.0.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + + '@nestjs/throttler@6.4.0': + resolution: {integrity: sha512-osL67i0PUuwU5nqSuJjtUJZMkxAnYB4VldgYUMGzvYRJDCqGRFMWbsbzm/CkUtPLRL30I8T74Xgt/OQxnYokiA==} + peerDependencies: + '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 + '@nestjs/core': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 + reflect-metadata: ^0.1.13 || ^0.2.0 + + '@nestjs/websockets@11.1.3': + resolution: {integrity: sha512-IjhWKfRf0D247JxYIEs8USblJJbcxUsKJpzbCPaZ7TrVy4LrpG3IRQDlSTOw599TRIYP5ixyH9C0+v5DyaI9uA==} + peerDependencies: + '@nestjs/common': ^11.0.0 + '@nestjs/core': ^11.0.0 + '@nestjs/platform-socket.io': ^11.0.0 + reflect-metadata: ^0.1.12 || ^0.2.0 + rxjs: ^7.1.0 + peerDependenciesMeta: + '@nestjs/platform-socket.io': + optional: true + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@nuxt/opencollective@0.4.1': + resolution: {integrity: sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==} + engines: {node: ^14.18.0 || >=16.10.0, npm: '>=5.10.0'} + hasBin: true + + '@one-ini/wasm@0.1.1': + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + + '@paralleldrive/cuid2@2.2.2': + resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.2.7': + resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@redis/client@1.6.1': + resolution: {integrity: sha512-/KCsg3xSlR+nCK8/8ZYSknYxvXHwubJrU82F3Lm1Fp6789VQ0/3RJKfsmRXjqfaTA++23CvC3hqmqe/2GEt6Kw==} + engines: {node: '>=14'} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@scarf/scarf@1.4.0': + resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@selderee/plugin-htmlparser2@0.11.0': + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@smithy/abort-controller@4.0.4': + resolution: {integrity: sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==} + engines: {node: '>=18.0.0'} + + '@smithy/chunked-blob-reader-native@4.0.0': + resolution: {integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==} + engines: {node: '>=18.0.0'} + + '@smithy/chunked-blob-reader@5.0.0': + resolution: {integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.1.4': + resolution: {integrity: sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.7.2': + resolution: {integrity: sha512-JoLw59sT5Bm8SAjFCYZyuCGxK8y3vovmoVbZWLDPTH5XpPEIwpFd9m90jjVMwoypDuB/SdVgje5Y4T7w50lJaw==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.0.6': + resolution: {integrity: sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-codec@4.0.4': + resolution: {integrity: sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.0.4': + resolution: {integrity: sha512-3fb/9SYaYqbpy/z/H3yIi0bYKyAa89y6xPmIqwr2vQiUT2St+avRt8UKwsWt9fEdEasc5d/V+QjrviRaX1JRFA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.1.2': + resolution: {integrity: sha512-JGtambizrWP50xHgbzZI04IWU7LdI0nh/wGbqH3sJesYToMi2j/DcoElqyOcqEIG/D4tNyxgRuaqBXWE3zOFhQ==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@4.0.4': + resolution: {integrity: sha512-RD6UwNZ5zISpOWPuhVgRz60GkSIp0dy1fuZmj4RYmqLVRtejFqQ16WmfYDdoSoAjlp1LX+FnZo+/hkdmyyGZ1w==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-universal@4.0.4': + resolution: {integrity: sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.1.0': + resolution: {integrity: sha512-mADw7MS0bYe2OGKkHYMaqarOXuDwRbO6ArD91XhHcl2ynjGCFF+hvqf0LyQcYxkA1zaWjefSkU7Ne9mqgApSgQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-blob-browser@4.0.4': + resolution: {integrity: sha512-WszRiACJiQV3QG6XMV44i5YWlkrlsM5Yxgz4jvsksuu7LDXA6wAtypfPajtNTadzpJy3KyJPoWehYpmZGKUFIQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.0.4': + resolution: {integrity: sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-stream-node@4.0.4': + resolution: {integrity: sha512-wHo0d8GXyVmpmMh/qOR0R7Y46/G1y6OR8U+bSTB4ppEzRxd1xVAQ9xOE9hOc0bSjhz0ujCPAbfNLkLrpa6cevg==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.0.4': + resolution: {integrity: sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.0.0': + resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} + engines: {node: '>=18.0.0'} + + '@smithy/md5-js@4.0.4': + resolution: {integrity: sha512-uGLBVqcOwrLvGh/v/jw423yWHq/ofUGK1W31M2TNspLQbUV1Va0F5kTxtirkoHawODAZcjXTSGi7JwbnPcDPJg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.0.4': + resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@4.1.17': + resolution: {integrity: sha512-S3hSGLKmHG1m35p/MObQCBCdRsrpbPU8B129BVzRqRfDvQqPMQ14iO4LyRw+7LNizYc605COYAcjqgawqi+6jA==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.1.18': + resolution: {integrity: sha512-bYLZ4DkoxSsPxpdmeapvAKy7rM5+25gR7PGxq2iMiecmbrRGBHj9s75N74Ylg+aBiw9i5jIowC/cLU2NR0qH8w==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@4.0.8': + resolution: {integrity: sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@4.0.4': + resolution: {integrity: sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.1.3': + resolution: {integrity: sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.1.0': + resolution: {integrity: sha512-vqfSiHz2v8b3TTTrdXi03vNz1KLYYS3bhHCDv36FYDqxT7jvTll1mMnCrkD+gOvgwybuunh/2VmvOMqwBegxEg==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@4.0.4': + resolution: {integrity: sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.1.2': + resolution: {integrity: sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@4.0.4': + resolution: {integrity: sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@4.0.4': + resolution: {integrity: sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@4.0.6': + resolution: {integrity: sha512-RRoTDL//7xi4tn5FrN2NzH17jbgmnKidUqd4KvquT0954/i6CXXkh1884jBiunq24g9cGtPBEXlU40W6EpNOOg==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.0.4': + resolution: {integrity: sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.1.2': + resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.4.9': + resolution: {integrity: sha512-mbMg8mIUAWwMmb74LoYiArP04zWElPzDoA1jVOp3or0cjlDMgoS6WTC3QXK0Vxoc9I4zdrX0tq6qsOmaIoTWEQ==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.3.1': + resolution: {integrity: sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.0.4': + resolution: {integrity: sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.0.0': + resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.0.0': + resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.0.0': + resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.0.0': + resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@4.0.0': + resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.0.25': + resolution: {integrity: sha512-pxEWsxIsOPLfKNXvpgFHBGFC3pKYKUFhrud1kyooO9CJai6aaKDHfT10Mi5iiipPXN/JhKAu3qX9o75+X85OdQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.0.25': + resolution: {integrity: sha512-+w4n4hKFayeCyELZLfsSQG5mCC3TwSkmRHv4+el5CzFU8ToQpYGhpV7mrRzqlwKkntlPilT1HJy1TVeEvEjWOQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.0.6': + resolution: {integrity: sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@4.0.0': + resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.0.4': + resolution: {integrity: sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.0.6': + resolution: {integrity: sha512-+YekoF2CaSMv6zKrA6iI/N9yva3Gzn4L6n35Luydweu5MMPYpiGZlWqehPHDHyNbnyaYlz/WJyYAZnC+loBDZg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.2.3': + resolution: {integrity: sha512-cQn412DWHHFNKrQfbHY8vSFI3nTROY1aIKji9N0tpp8gUABRilr7wdf8fqBbSlXresobM+tQFNk6I+0LXK/YZg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@4.0.0': + resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.0.0': + resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} + engines: {node: '>=18.0.0'} + + '@smithy/util-waiter@4.0.6': + resolution: {integrity: sha512-slcr1wdRbX7NFphXZOxtxRNA7hXAAtJAXJDE/wdoMAos27SIquVCKiSqfB6/28YzQ8FCsB5NKkhdM5gMADbqxg==} + engines: {node: '>=18.0.0'} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@swc/cli@0.6.0': + resolution: {integrity: sha512-Q5FsI3Cw0fGMXhmsg7c08i4EmXCrcl+WnAxb6LYOLHw4JFFC3yzmx9LaXZ7QMbA+JZXbigU2TirI7RAfO0Qlnw==} + engines: {node: '>= 16.14.0'} + hasBin: true + peerDependencies: + '@swc/core': ^1.2.66 + chokidar: ^4.0.1 + peerDependenciesMeta: + chokidar: + optional: true + + '@swc/core-darwin-arm64@1.12.9': + resolution: {integrity: sha512-GACFEp4nD6V+TZNR2JwbMZRHB+Yyvp14FrcmB6UCUYmhuNWjkxi+CLnEvdbuiKyQYv0zA+TRpCHZ+whEs6gwfA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.12.9': + resolution: {integrity: sha512-hv2kls7Ilkm2EpeJz+I9MCil7pGS3z55ZAgZfxklEuYsxpICycxeH+RNRv4EraggN44ms+FWCjtZFu0LGg2V3g==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.12.9': + resolution: {integrity: sha512-od9tDPiG+wMU9wKtd6y3nYJdNqgDOyLdgRRcrj1/hrbHoUPOM8wZQZdwQYGarw63iLXGgsw7t5HAF9Yc51ilFA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.12.9': + resolution: {integrity: sha512-6qx1ka9LHcLzxIgn2Mros+CZLkHK2TawlXzi/h7DJeNnzi8F1Hw0Yzjp8WimxNCg6s2n+o3jnmin1oXB7gg8rw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.12.9': + resolution: {integrity: sha512-yghFZWKPVVGbUdqiD7ft23G0JX6YFGDJPz9YbLLAwGuKZ9th3/jlWoQDAw1Naci31LQhVC+oIji6ozihSuwB2A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.12.9': + resolution: {integrity: sha512-SFUxyhWLZRNL8QmgGNqdi2Q43PNyFVkRZ2zIif30SOGFSxnxcf2JNeSeBgKIGVgaLSuk6xFVVCtJ3KIeaStgRg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.12.9': + resolution: {integrity: sha512-9FB0wM+6idCGTI20YsBNBg9xSWtkDBymnpaTCsZM3qDc0l4uOpJMqbfWhQvp17x7r/ulZfb2QY8RDvQmCL6AcQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.12.9': + resolution: {integrity: sha512-zHOusMVbOH9ik5RtRrMiGzLpKwxrPXgXkBm3SbUCa65HAdjV33NZ0/R9Rv1uPESALtEl2tzMYLUxYA5ECFDFhA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.12.9': + resolution: {integrity: sha512-aWZf0PqE0ot7tCuhAjRkDFf41AzzSQO0x2xRfTbnhpROp57BRJ/N5eee1VULO/UA2PIJRG7GKQky5bSGBYlFug==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.12.9': + resolution: {integrity: sha512-C25fYftXOras3P3anSUeXXIpxmEkdAcsIL9yrr0j1xepTZ/yKwpnQ6g3coj8UXdeJy4GTVlR6+Ow/QiBgZQNOg==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.12.9': + resolution: {integrity: sha512-O+LfT2JlVMsIMWG9x+rdxg8GzpzeGtCZQfXV7cKc1PjIKUkLFf1QJ7okuseA4f/9vncu37dQ2ZcRrPKy0Ndd5g==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.23': + resolution: {integrity: sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==} + + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + + '@tokenizer/inflate@0.2.7': + resolution: {integrity: sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==} + engines: {node: '>=18'} + + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/bcrypt@5.0.2': + resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==} + + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/conventional-commits-parser@5.0.1': + resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} + + '@types/cookiejar@2.1.5': + resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} + + '@types/cors@2.8.19': + resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} + + '@types/ejs@3.1.5': + resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/express-serve-static-core@5.0.6': + resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} + + '@types/express@5.0.3': + resolution: {integrity: sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/jsonwebtoken@9.0.10': + resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==} + + '@types/jsonwebtoken@9.0.7': + resolution: {integrity: sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==} + + '@types/methods@1.1.4': + resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/mjml-core@4.15.2': + resolution: {integrity: sha512-Q7SxFXgoX979HP57DEVsRI50TV8x1V4lfCA4Up9AvfINDM5oD/X9ARgfoyX1qS987JCnDLv85JjkqAjt3hZSiQ==} + + '@types/mjml@4.7.4': + resolution: {integrity: sha512-vyi1vzWgMzFMwZY7GSZYX0GU0dmtC8vLHwpgk+NWmwbwRSrlieVyJ9sn5elodwUfklJM7yGl0zQeet1brKTWaQ==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@22.16.0': + resolution: {integrity: sha512-B2egV9wALML1JCpv3VQoQ+yesQKAmNMBIAY7OteVrikcOcAkWm+dGL6qpeCktPjAv6N1JLnhbNiqS35UpFyBsQ==} + + '@types/nodemailer@6.4.17': + resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==} + + '@types/passport-jwt@4.0.1': + resolution: {integrity: sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ==} + + '@types/passport-strategy@0.2.38': + resolution: {integrity: sha512-GC6eMqqojOooq993Tmnmp7AUTbbQSgilyvpCYQjT+H6JfG/g6RGc7nXEniZlp0zyKJ0WUdOiZWLBZft9Yug1uA==} + + '@types/passport@1.0.17': + resolution: {integrity: sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg==} + + '@types/pug@2.0.10': + resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/send@0.17.5': + resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + + '@types/serve-static@1.15.8': + resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/superagent@8.1.9': + resolution: {integrity: sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==} + + '@types/supertest@6.0.3': + resolution: {integrity: sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + + '@types/validator@13.15.2': + resolution: {integrity: sha512-y7pa/oEJJ4iGYBxOpfAKn5b9+xuihvzDVnC/OSvlVnGxVg0pOqmjiMafiJ1KVNQEaPZf9HsEp5icEwGg8uIe5Q==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@typescript-eslint/eslint-plugin@8.35.1': + resolution: {integrity: sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.35.1 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.35.1': + resolution: {integrity: sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/project-service@8.35.1': + resolution: {integrity: sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.35.1': + resolution: {integrity: sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.35.1': + resolution: {integrity: sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/type-utils@8.35.1': + resolution: {integrity: sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.35.1': + resolution: {integrity: sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.35.1': + resolution: {integrity: sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.35.1': + resolution: {integrity: sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.35.1': + resolution: {integrity: sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@unrs/resolver-binding-android-arm-eabi@1.10.1': + resolution: {integrity: sha512-zohDKXT1Ok0yhbVGff4YAg9HUs5ietG5GpvJBPFSApZnGe7uf2cd26DRhKZbn0Be6xHUZrSzP+RAgMmzyc71EA==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.10.1': + resolution: {integrity: sha512-tAN6k5UrTd4nicpA7s2PbjR/jagpDzAmvXFjbpTazUe5FRsFxVcBlS1F5Lzp5jtWU6bdiqRhSvd4X8rdpCffeA==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.10.1': + resolution: {integrity: sha512-+FCsag8WkauI4dQ50XumCXdfvDCZEpMUnvZDsKMxfOisnEklpDFXc6ThY0WqybBYZbiwR5tWcFaZmI0G6b4vrg==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.10.1': + resolution: {integrity: sha512-qYKGGm5wk71ONcXTMZ0+J11qQeOAPz3nw6VtqrBUUELRyXFyvK8cHhHsLBFR4GHnilc2pgY1HTB2TvdW9wO26Q==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.10.1': + resolution: {integrity: sha512-hOHMAhbvIQ63gkpgeNsXcWPSyvXH7ZEyeg254hY0Lp/hX8NdW+FsUWq73g9946Pc/BrcVI/I3C1cmZ4RCX9bNw==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.10.1': + resolution: {integrity: sha512-6ds7+zzHJgTDmpe0gmFcOTvSUhG5oZukkt+cCsSb3k4Uiz2yEQB4iCRITX2hBwSW+p8gAieAfecITjgqCkswXw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.10.1': + resolution: {integrity: sha512-P7A0G2/jW00diNJyFeq4W9/nxovD62Ay8CMP4UK9OymC7qO7rG1a8Upad68/bdfpIOn7KSp7Aj/6lEW3yyznAA==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.10.1': + resolution: {integrity: sha512-Cg6xzdkrpltcTPO4At+A79zkC7gPDQIgosJmVV8M104ImB6KZi1MrNXgDYIAfkhUYjPzjNooEDFRAwwPadS7ZA==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.10.1': + resolution: {integrity: sha512-aNeg99bVkXa4lt+oZbjNRPC8ZpjJTKxijg/wILrJdzNyAymO2UC/HUK1UfDjt6T7U5p/mK24T3CYOi3/+YEQSA==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.10.1': + resolution: {integrity: sha512-ylz5ojeXrkPrtnzVhpCO+YegG63/aKhkoTlY8PfMfBfLaUG8v6m6iqrL7sBUKdVBgOB4kSTUPt9efQdA/Y3Z/w==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.10.1': + resolution: {integrity: sha512-xcWyhmJfXXOxK7lvE4+rLwBq+on83svlc0AIypfe6x4sMJR+S4oD7n9OynaQShfj2SufPw2KJAotnsNb+4nN2g==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.10.1': + resolution: {integrity: sha512-mW9JZAdOCyorgi1eLJr4gX7xS67WNG9XNPYj5P8VuttK72XNsmdw9yhOO4tDANMgiLXFiSFaiL1gEpoNtRPw/A==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.10.1': + resolution: {integrity: sha512-NZGKhBy6xkJ0k09cWNZz4DnhBcGlhDd3W+j7EYoNvf5TSwj2K6kbmfqTWITEgkvjsMUjm1wsrc4IJaH6VtjyHQ==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.10.1': + resolution: {integrity: sha512-VsjgckJ0gNMw7p0d8In6uPYr+s0p16yrT2rvG4v2jUpEMYkpnfnCiALa9SWshbvlGjKQ98Q2x19agm3iFk8w8Q==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.10.1': + resolution: {integrity: sha512-idMnajMeejnaFi0Mx9UTLSYFDAOTfAEP7VjXNgxKApso3Eu2Njs0p2V95nNIyFi4oQVGFmIuCkoznAXtF/Zbmw==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.10.1': + resolution: {integrity: sha512-7jyhjIRNFjzlr8x5pth6Oi9hv3a7ubcVYm2GBFinkBQKcFhw4nIs5BtauSNtDW1dPIGrxF0ciynCZqzxMrYMsg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.10.1': + resolution: {integrity: sha512-TY79+N+Gkoo7E99K+zmsKNeiuNJYlclZJtKqsHSls8We2iGhgxtletVsiBYie93MSTDRDMI8pkBZJlIJSZPrdA==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.10.1': + resolution: {integrity: sha512-BAJN5PEPlEV+1m8+PCtFoKm3LQ1P57B4Z+0+efU0NzmCaGk7pUaOxuPgl+m3eufVeeNBKiPDltG0sSB9qEfCxw==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.10.1': + resolution: {integrity: sha512-2v3erKKmmCyIVvvhI2nF15qEbdBpISTq44m9pyd5gfIJB1PN94oePTLWEd82XUbIbvKhv76xTSeUQSCOGesLeg==} + cpu: [x64] + os: [win32] + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xhmikosr/archive-type@7.0.0': + resolution: {integrity: sha512-sIm84ZneCOJuiy3PpWR5bxkx3HaNt1pqaN+vncUBZIlPZCq8ASZH+hBVdu5H8znR7qYC6sKwx+ie2Q7qztJTxA==} + engines: {node: ^14.14.0 || >=16.0.0} + + '@xhmikosr/bin-check@7.0.3': + resolution: {integrity: sha512-4UnCLCs8DB+itHJVkqFp9Zjg+w/205/J2j2wNBsCEAm/BuBmtua2hhUOdAMQE47b1c7P9Xmddj0p+X1XVsfHsA==} + engines: {node: '>=18'} + + '@xhmikosr/bin-wrapper@13.0.5': + resolution: {integrity: sha512-DT2SAuHDeOw0G5bs7wZbQTbf4hd8pJ14tO0i4cWhRkIJfgRdKmMfkDilpaJ8uZyPA0NVRwasCNAmMJcWA67osw==} + engines: {node: '>=18'} + + '@xhmikosr/decompress-tar@8.0.1': + resolution: {integrity: sha512-dpEgs0cQKJ2xpIaGSO0hrzz3Kt8TQHYdizHsgDtLorWajuHJqxzot9Hbi0huRxJuAGG2qiHSQkwyvHHQtlE+fg==} + engines: {node: '>=18'} + + '@xhmikosr/decompress-tarbz2@8.0.2': + resolution: {integrity: sha512-p5A2r/AVynTQSsF34Pig6olt9CvRj6J5ikIhzUd3b57pUXyFDGtmBstcw+xXza0QFUh93zJsmY3zGeNDlR2AQQ==} + engines: {node: '>=18'} + + '@xhmikosr/decompress-targz@8.0.1': + resolution: {integrity: sha512-mvy5AIDIZjQ2IagMI/wvauEiSNHhu/g65qpdM4EVoYHUJBAmkQWqcPJa8Xzi1aKVTmOA5xLJeDk7dqSjlHq8Mg==} + engines: {node: '>=18'} + + '@xhmikosr/decompress-unzip@7.0.0': + resolution: {integrity: sha512-GQMpzIpWTsNr6UZbISawsGI0hJ4KA/mz5nFq+cEoPs12UybAqZWKbyIaZZyLbJebKl5FkLpsGBkrplJdjvUoSQ==} + engines: {node: '>=18'} + + '@xhmikosr/decompress@10.0.1': + resolution: {integrity: sha512-6uHnEEt5jv9ro0CDzqWlFgPycdE+H+kbJnwyxgZregIMLQ7unQSCNVsYG255FoqU8cP46DyggI7F7LohzEl8Ag==} + engines: {node: '>=18'} + + '@xhmikosr/downloader@15.0.1': + resolution: {integrity: sha512-fiuFHf3Dt6pkX8HQrVBsK0uXtkgkVlhrZEh8b7VgoDqFf+zrgFBPyrwCqE/3nDwn3hLeNz+BsrS7q3mu13Lp1g==} + engines: {node: '>=18'} + + '@xhmikosr/os-filter-obj@3.0.0': + resolution: {integrity: sha512-siPY6BD5dQ2SZPl3I0OZBHL27ZqZvLEosObsZRQ1NUB8qcxegwt0T9eKtV96JMFQpIz1elhkzqOg4c/Ri6Dp9A==} + engines: {node: ^14.14.0 || >=16.0.0} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + abstract-logging@2.0.1: + resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + alce@1.2.0: + resolution: {integrity: sha512-XppPf2S42nO2WhvKzlwzlfcApcXHzjlod30pKmcWjRgLOtqoe5DMuqdiYoM6AgyXksc6A6pV4v1L/WW217e57w==} + engines: {node: '>=0.8.0'} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + append-field@1.0.0: + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + arch@3.0.0: + resolution: {integrity: sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==} + + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} + + array-timsort@1.0.3: + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + asn1.js@5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + + assert-never@1.4.0: + resolution: {integrity: sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + avvio@9.1.0: + resolution: {integrity: sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==} + + axios@1.10.0: + resolution: {integrity: sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==} + + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-walk@3.0.0-canary-5: + resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} + engines: {node: '>= 10.0.0'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + bare-events@2.5.4: + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + + bcrypt@5.1.1: + resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==} + engines: {node: '>= 10.0.0'} + + bin-version-check@5.1.0: + resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==} + engines: {node: '>=12'} + + bin-version@6.0.0: + resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} + engines: {node: '>=12'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bn.js@4.12.2: + resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.25.1: + resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bullmq@5.56.1: + resolution: {integrity: sha512-HmX53sf24bbDj5NVrDLDEjy8OSDmbGMESfvFhVK8NpHsA4WlAdKxPDf7c5b9RZf5wZGHyAd2XhWSkE9dmNPYww==} + + cache-manager@7.0.0: + resolution: {integrity: sha512-5HLGorfU4g2GyLTXd+bbq8RhZPwLRlVm7hfS1EssJx4Ujq1FjyQAjHND93sI6ByQTlUlCQ0jrHZqLI0qtBFyHA==} + + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001726: + resolution: {integrity: sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + character-parser@2.2.0: + resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + class-transformer@0.5.1: + resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} + + class-validator@0.14.2: + resolution: {integrity: sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==} + + clean-css@4.2.4: + resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} + engines: {node: '>= 4.0'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + colorette@2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + comment-json@4.2.5: + resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==} + engines: {node: '>= 6'} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + constantinople@4.0.1: + resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + + cookiejar@2.1.4: + resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cosmiconfig-typescript-loader@6.1.0: + resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} + + cross-spawn@6.0.6: + resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} + engines: {node: '>=4.8'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + dataloader@2.2.3: + resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + dedent@1.6.0: + resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defaults@3.0.0: + resolution: {integrity: sha512-RsqXDEAALjfRTro+IFNKpcPCt0/Cy2FqHSIlnomiJp9YGadpQnrtbRpSgN2+np21qHcIKiva4fiOQGjS9/qR/A==} + engines: {node: '>=18'} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + display-notification@2.0.0: + resolution: {integrity: sha512-TdmtlAcdqy1NU+j7zlkDdMnCL878zriLaBmoD9quOoq1ySSSGv03l0hXK5CvIFZlIfFI/hizqdQuW+Num7xuhw==} + engines: {node: '>=4'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctypes@1.1.0: + resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@3.3.0: + resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} + engines: {node: '>= 4'} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dotenv-expand@12.0.1: + resolution: {integrity: sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==} + engines: {node: '>=12'} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + engines: {node: '>=12'} + + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.179: + resolution: {integrity: sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encoding-japanese@2.2.0: + resolution: {integrity: sha512-EuJWwlHPZ1LbADuKTClvHtwbaFn4rOD+dRAbWysqEOXRc2Uui0hJInNJrsdH0c+OhJA4nrCBdSkW4DD5YxAo6A==} + engines: {node: '>=8.10.0'} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + + engine.io@6.6.4: + resolution: {integrity: sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==} + engines: {node: '>=10.2.0'} + + enhanced-resolve@5.18.2: + resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-goat@3.0.0: + resolution: {integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==} + engines: {node: '>=10'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-applescript@1.0.0: + resolution: {integrity: sha512-4/hFwoYaC6TkpDn9A3pTC52zQPArFeXuIfhUtCGYdauTzXVP9H3BDr3oO/QzQehMpLDC7srvYgfwvImPFGfvBA==} + engines: {node: '>=0.10.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@10.1.5: + resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-prettier@5.5.1: + resolution: {integrity: sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.30.1: + resolution: {integrity: sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@1.2.5: + resolution: {integrity: sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@1.9.3: + resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} + engines: {node: '>=0.10.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@0.10.0: + resolution: {integrity: sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==} + engines: {node: '>=4'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + ext-list@2.2.2: + resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} + engines: {node: '>=0.10.0'} + + ext-name@5.0.0: + resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} + engines: {node: '>=4'} + + extend-object@1.0.0: + resolution: {integrity: sha512-0dHDIXC7y7LDmCh/lp1oYkmv73K25AMugQI07r8eFopkW6f7Ufn1q+ETMsJjnV9Am14SlElkqy3O92r6xEaxPw==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-json-stringify@6.0.1: + resolution: {integrity: sha512-s7SJE83QKBZwg54dIbD5rCtzOBVD43V1ReWXXYqBgwCwHLYAAT0RQc/FmrQglXqWPpz6omtryJQOau5jI4Nrvg==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fast-xml-parser@5.2.5: + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} + hasBin: true + + fastify-multer@2.0.3: + resolution: {integrity: sha512-QnFqrRgxmUwWHTgX9uyQSu0C/hmVCfcxopqjApZ4uaZD5W9MJ+nHUlW4+9q7Yd3BRxDIuHvgiM5mjrh6XG8cAA==} + engines: {node: '>=10.17.0'} + + fastify-plugin@2.3.4: + resolution: {integrity: sha512-I+Oaj6p9oiRozbam30sh39BiuiqBda7yK2nmSPVwDCfIBlKnT8YB3MY+pRQc2Fcd07bf6KPGklHJaQ2Qu81TYQ==} + + fastify-plugin@5.0.1: + resolution: {integrity: sha512-HCxs+YnRaWzCl+cWRYFnHmeRFyR5GVnJTAaCJQiYzQSDwK9MgJdyAsuL3nh0EWRCYMgQ5MeziymvmAhUHYHDUQ==} + + fastify@5.3.3: + resolution: {integrity: sha512-nCBiBCw9q6jPx+JJNVgO8JVnTXeUyrGcyTKPQikRkA/PanrFcOIo4R+ZnLeOLPZPGgzjomqfVarzE0kYx7qWiQ==} + + fastify@5.4.0: + resolution: {integrity: sha512-I4dVlUe+WNQAhKSyv15w+dwUh2EPiEl4X2lGYMmNSgF83WzTMAPKGdWEv5tPsCQOb+SOZwz8Vlta2vF+OeDgRw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fdir@6.4.6: + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + + figlet@1.8.1: + resolution: {integrity: sha512-kEC3Sme+YvA8Hkibv0NR1oClGcWia0VB2fC1SlMy027cwe795Xx40Xiv/nw/iFAwQLupymWh+uhAAErn/7hwPg==} + engines: {node: '>= 0.4.0'} + hasBin: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-type@19.6.0: + resolution: {integrity: sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==} + engines: {node: '>=18'} + + file-type@21.0.0: + resolution: {integrity: sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==} + engines: {node: '>=20'} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + filename-reserved-regex@3.0.0: + resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + filenamify@6.0.0: + resolution: {integrity: sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==} + engines: {node: '>=16'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-my-way@9.3.0: + resolution: {integrity: sha512-eRoFWQw+Yv2tuYlK2pjFS2jGXSxSppAs3hSQjfxVKxM5amECzIgYYc1FEI8ZmhSh/Ig+FrKEz43NLRKJjYCZVg==} + engines: {node: '>=20'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + + find-versions@5.1.0: + resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==} + engines: {node: '>=12'} + + fixpack@4.0.0: + resolution: {integrity: sha512-5SM1+H2CcuJ3gGEwTiVo/+nd/hYpNj9Ch3iMDOQ58ndY+VGQ2QdvaUTkd3otjZvYnd/8LF/HkJ5cx7PBq0orCQ==} + hasBin: true + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fork-ts-checker-webpack-plugin@9.1.0: + resolution: {integrity: sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==} + engines: {node: '>=14.21.3'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + + form-data@4.0.3: + resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==} + engines: {node: '>= 6'} + + formidable@3.5.4: + resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==} + engines: {node: '>=14.0.0'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + generic-pool@3.9.0: + resolution: {integrity: sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==} + engines: {node: '>= 4'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-port@5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + + getopts@2.3.0: + resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==} + + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.3.12: + resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@11.0.1: + resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} + engines: {node: 20 || >=22} + hasBin: true + + glob@11.0.3: + resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + engines: {node: 20 || >=22} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.3.0: + resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@13.0.0: + resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} + engines: {node: '>=16'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-own-prop@2.0.0: + resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-minifier@4.0.0: + resolution: {integrity: sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==} + engines: {node: '>=6'} + hasBin: true + + html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} + + htmlparser2@5.0.1: + resolution: {integrity: sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + + http_ece@1.2.0: + resolution: {integrity: sha512-JrF8SSLVmcvc5NducxgyOrKXe3EsyHMgBFgSaIUGmArKe+rwr0uphRkRXvwiom3I+fpIfoItveHrfudL8/rxuA==} + engines: {node: '>=16'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + index-to-position@1.1.0: + resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} + engines: {node: '>=18'} + + inflight@1.0.6: + resolution: {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. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + inspect-with-kind@1.0.5: + resolution: {integrity: sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + interpret@2.2.0: + resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} + engines: {node: '>= 0.10'} + + ioredis@5.6.1: + resolution: {integrity: sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==} + engines: {node: '>=12.22.0'} + + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-expression@4.0.0: + resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + iterare@1.2.1: + resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} + engines: {node: '>=6'} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-beautify@1.15.4: + resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==} + engines: {node: '>=14'} + hasBin: true + + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + + js-stringify@1.0.2: + resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-ref-resolver@2.0.1: + resolution: {integrity: sha512-HG0SIB9X4J8bwbxCbnd5FfPEbcXAJYTi1pBJeP/QPON+w8ovSME8iRG+ElHNxZNX2Qh6eYn1GdzJFS4cDFfx0Q==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + + jstransformer@1.0.0: + resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} + + juice@10.0.1: + resolution: {integrity: sha512-ZhJT1soxJCkOiO55/mz8yeBKTAJhRzX9WBO+16ZTqNTONnnVlUPyVBIzQ7lDRjaBdTbid+bAnyIon/GM3yp4cA==} + engines: {node: '>=10.0.0'} + hasBin: true + + jwa@1.4.2: + resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} + + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + keyv@5.3.4: + resolution: {integrity: sha512-ypEvQvInNpUe+u+w8BIcPkQvEqXquyyibWE/1NB5T2BTzIpS5cGEV1LZskDzPSTvNAaT4+5FutvzlvnkxOSKlw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + knex@3.1.0: + resolution: {integrity: sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw==} + engines: {node: '>=16'} + hasBin: true + peerDependencies: + better-sqlite3: '*' + mysql: '*' + mysql2: '*' + pg: '*' + pg-native: '*' + sqlite3: '*' + tedious: '*' + peerDependenciesMeta: + better-sqlite3: + optional: true + mysql: + optional: true + mysql2: + optional: true + pg: + optional: true + pg-native: + optional: true + sqlite3: + optional: true + tedious: + optional: true + + leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + libbase64@1.3.0: + resolution: {integrity: sha512-GgOXd0Eo6phYgh0DJtjQ2tO8dc0IVINtZJeARPeiIJqge+HdsWSuaDTe8ztQ7j/cONByDZ3zeB325AHiv5O0dg==} + + libmime@5.3.7: + resolution: {integrity: sha512-FlDb3Wtha8P01kTL3P9M+ZDNDWPKPmKHWaU/cG/lg5pfuAwdflVpZE+wm9m7pKmC5ww6s+zTxBKS1p6yl3KpSw==} + + libphonenumber-js@1.12.9: + resolution: {integrity: sha512-VWwAdNeJgN7jFOD+wN4qx83DTPMVPPAUyx9/TUkBXKLiNkuWWk6anV0439tgdtwaJDrEdqkvdN22iA6J4bUCZg==} + + libqp@2.1.1: + resolution: {integrity: sha512-0Wd+GPz1O134cP62YU2GTOPNA7Qgl09XwCqM5zpBv87ERCXdfDtyKXvV7c9U22yWJh44QZqBocFnXN11K96qow==} + + light-my-request@6.6.0: + resolution: {integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + lint-staged@15.5.2: + resolution: {integrity: sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==} + engines: {node: '>=18.12.0'} + hasBin: true + + liquidjs@10.21.1: + resolution: {integrity: sha512-NZXmCwv3RG5nire3fmIn9HsOyJX3vo+ptp0yaXUHAMzSNBhx74Hm+dAGJvscUA6lNqbLuYfXgNavRQ9UbUJhQQ==} + engines: {node: '>=14'} + hasBin: true + + listr2@8.3.3: + resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} + engines: {node: '>=18.0.0'} + + load-esm@1.0.2: + resolution: {integrity: sha512-nVAvWk/jeyrWyXEAs84mpQCYccxRqgKY4OznLuJhJCa0XsPSfdOIr2zvBZEj3IHEHbX97jjscKRRV539bW0Gpw==} + engines: {node: '>=13.2.0'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.1.0: + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + luxon@3.6.1: + resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==} + engines: {node: '>=12'} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + mailparser@3.7.4: + resolution: {integrity: sha512-Beh4yyR4jLq3CZZ32asajByrXnW8dLyKCAQD3WvtTiBnMtFWhxO+wa93F6sJNjDmfjxXs4NRNjw3XAGLqZR3Vg==} + + mailsplit@5.4.5: + resolution: {integrity: sha512-oMfhmvclR689IIaQmIcR5nODnZRRVwAKtqFT407TIvmhX2OLUBnshUTcxzQBt3+96sZVDud9NfSe1NxAkUNXEQ==} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + mensch@0.3.4: + resolution: {integrity: sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==} + + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mikro-orm@6.4.16: + resolution: {integrity: sha512-a+19cRuEPEJ3qf5Vpv4HO9TAxo/I6/rP1bZT93ln8YtNzAbCrcLC766EG6upLS6Sf7OLqdq0cXs5mUN9ESQQrg==} + engines: {node: '>= 18.12.0'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@10.0.3: + resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mjml-accordion@4.15.3: + resolution: {integrity: sha512-LPNVSj1LyUVYT9G1gWwSw3GSuDzDsQCu0tPB2uDsq4VesYNnU6v3iLCQidMiR6azmIt13OEozG700ygAUuA6Ng==} + + mjml-body@4.15.3: + resolution: {integrity: sha512-7pfUOVPtmb0wC+oUOn4xBsAw4eT5DyD6xqaxj/kssu6RrFXOXgJaVnDPAI9AzIvXJ/5as9QrqRGYAddehwWpHQ==} + + mjml-button@4.15.3: + resolution: {integrity: sha512-79qwn9AgdGjJR1vLnrcm2rq2AsAZkKC5JPwffTMG+Nja6zGYpTDZFZ56ekHWr/r1b5WxkukcPj2PdevUug8c+Q==} + + mjml-carousel@4.15.3: + resolution: {integrity: sha512-3ju6I4l7uUhPRrJfN3yK9AMsfHvrYbRkcJ1GRphFHzUj37B2J6qJOQUpzA547Y4aeh69TSb7HFVf1t12ejQxVw==} + + mjml-cli@4.15.3: + resolution: {integrity: sha512-+V2TDw3tXUVEptFvLSerz125C2ogYl8klIBRY1m5BHd4JvGVf3yhx8N3PngByCzA6PGcv/eydGQN+wy34SHf0Q==} + hasBin: true + + mjml-column@4.15.3: + resolution: {integrity: sha512-hYdEFdJGHPbZJSEysykrevEbB07yhJGSwfDZEYDSbhQQFjV2tXrEgYcFD5EneMaowjb55e3divSJxU4c5q4Qgw==} + + mjml-core@4.15.3: + resolution: {integrity: sha512-Dmwk+2cgSD9L9GmTbEUNd8QxkTZtW9P7FN/ROZW/fGZD6Hq6/4TB0zEspg2Ow9eYjZXO2ofOJ3PaQEEShKV0kQ==} + + mjml-divider@4.15.3: + resolution: {integrity: sha512-vh27LQ9FG/01y0b9ntfqm+GT5AjJnDSDY9hilss2ixIUh0FemvfGRfsGVeV5UBVPBKK7Ffhvfqc7Rciob9Spzw==} + + mjml-group@4.15.3: + resolution: {integrity: sha512-HSu/rKnGZVKFq3ciT46vi1EOy+9mkB0HewO4+P6dP/Y0UerWkN6S3UK11Cxsj0cAp0vFwkPDCdOeEzRdpFEkzA==} + + mjml-head-attributes@4.15.3: + resolution: {integrity: sha512-2ISo0r5ZKwkrvJgDou9xVPxxtXMaETe2AsAA02L89LnbB2KC0N5myNsHV0sEysTw9+CfCmgjAb0GAI5QGpxKkQ==} + + mjml-head-breakpoint@4.15.3: + resolution: {integrity: sha512-Eo56FA5C2v6ucmWQL/JBJ2z641pLOom4k0wP6CMZI2utfyiJ+e2Uuinj1KTrgDcEvW4EtU9HrfAqLK9UosLZlg==} + + mjml-head-font@4.15.3: + resolution: {integrity: sha512-CzV2aDPpiNIIgGPHNcBhgyedKY4SX3BJoTwOobSwZVIlEA6TAWB4Z9WwFUmQqZOgo1AkkiTHPZQvGcEhFFXH6g==} + + mjml-head-html-attributes@4.15.3: + resolution: {integrity: sha512-MDNDPMBOgXUZYdxhosyrA2kudiGO8aogT0/cODyi2Ed9o/1S7W+je11JUYskQbncqhWKGxNyaP4VWa+6+vUC/g==} + + mjml-head-preview@4.15.3: + resolution: {integrity: sha512-J2PxCefUVeFwsAExhrKo4lwxDevc5aKj888HBl/wN4EuWOoOg06iOGCxz4Omd8dqyFsrqvbBuPqRzQ+VycGmaA==} + + mjml-head-style@4.15.3: + resolution: {integrity: sha512-9J+JuH+mKrQU65CaJ4KZegACUgNIlYmWQYx3VOBR/tyz+8kDYX7xBhKJCjQ1I4wj2Tvga3bykd89Oc2kFZ5WOw==} + + mjml-head-title@4.15.3: + resolution: {integrity: sha512-IM59xRtsxID4DubQ0iLmoCGXguEe+9BFG4z6y2xQDrscIa4QY3KlfqgKGT69ojW+AVbXXJPEVqrAi4/eCsLItQ==} + + mjml-head@4.15.3: + resolution: {integrity: sha512-o3mRuuP/MB5fZycjD3KH/uXsnaPl7Oo8GtdbJTKtH1+O/3pz8GzGMkscTKa97l03DAG2EhGrzzLcU2A6eshwFw==} + + mjml-hero@4.15.3: + resolution: {integrity: sha512-9cLAPuc69yiuzNrMZIN58j+HMK1UWPaq2i3/Fg2ZpimfcGFKRcPGCbEVh0v+Pb6/J0+kf8yIO0leH20opu3AyQ==} + + mjml-image@4.15.3: + resolution: {integrity: sha512-g1OhSdofIytE9qaOGdTPmRIp7JsCtgO0zbsn1Fk6wQh2gEL55Z40j/VoghslWAWTgT2OHFdBKnMvWtN6U5+d2Q==} + + mjml-migrate@4.15.3: + resolution: {integrity: sha512-sr/+35RdxZroNQVegjpfRHJ5hda9XCgaS4mK2FGO+Mb1IUevKfeEPII3F/cHDpNwFeYH3kAgyqQ22ClhGLWNBA==} + hasBin: true + + mjml-navbar@4.15.3: + resolution: {integrity: sha512-VsKH/Jdlf8Yu3y7GpzQV5n7JMdpqvZvTSpF6UQXL0PWOm7k6+LX+sCZimOfpHJ+wCaaybpxokjWZ71mxOoCWoA==} + + mjml-parser-xml@4.15.3: + resolution: {integrity: sha512-Tz0UX8/JVYICLjT+U8J1f/TFxIYVYjzZHeh4/Oyta0pLpRLeZlxEd71f3u3kdnulCKMP4i37pFRDmyLXAlEuLw==} + + mjml-preset-core@4.15.3: + resolution: {integrity: sha512-1zZS8P4O0KweWUqNS655+oNnVMPQ1Rq1GaZq5S9JfwT1Vh/m516lSmiTW9oko6gGHytt5s6Yj6oOeu5Zm8FoLw==} + + mjml-raw@4.15.3: + resolution: {integrity: sha512-IGyHheOYyRchBLiAEgw3UM11kFNmBSMupu2BDdejC6ZiDhEAdG+tyERlsCwDPYtXanvFpGWULIu3XlsUPc+RZw==} + + mjml-section@4.15.3: + resolution: {integrity: sha512-JfVPRXH++Hd933gmQfG8JXXCBCR6fIzC3DwiYycvanL/aW1cEQ2EnebUfQkt5QzlYjOkJEH+JpccAsq3ln6FZQ==} + + mjml-social@4.15.3: + resolution: {integrity: sha512-7sD5FXrESOxpT9Z4Oh36bS6u/geuUrMP1aCg2sjyAwbPcF1aWa2k9OcatQfpRf6pJEhUZ18y6/WBBXmMVmSzXg==} + + mjml-spacer@4.15.3: + resolution: {integrity: sha512-3B7Qj+17EgDdAtZ3NAdMyOwLTX1jfmJuY7gjyhS2HtcZAmppW+cxqHUBwCKfvSRgTQiccmEvtNxaQK+tfyrZqA==} + + mjml-table@4.15.3: + resolution: {integrity: sha512-FLx7DcRKTdKdcOCbMyBaeudeHaHpwPveRrBm6WyQe3LXx6FfdmOh59i71/16LFQMgBOD3N4/UJkzxLzlTJzMqQ==} + + mjml-text@4.15.3: + resolution: {integrity: sha512-+C0hxCmw9kg0XzT6vhE5mFkK6y225nC8UEQcN94K0fBCjPKkM+HqZMwGX205fzdGRi+Bxa55b/VhrIVwdv+8vw==} + + mjml-validator@4.15.3: + resolution: {integrity: sha512-Xb72KdqRwjv/qM2rJpV22syyP2N3cRQ9VVDrN6u2FSzLq02buFNxmSPJ7CKhat3PrUNdVHU75KZwOf/tz4UEhA==} + + mjml-wrapper@4.15.3: + resolution: {integrity: sha512-ditsCijeHJrmBmObtJmQ18ddLxv5oPyMTdPU8Di8APOnD2zPk7Z4UAuJSl7HXB45oFiivr3MJf4koFzMUSZ6Gg==} + + mjml@4.15.3: + resolution: {integrity: sha512-bW2WpJxm6HS+S3Yu6tq1DUPFoTxU9sPviUSmnL7Ua+oVO3WA5ILFWqvujUlz+oeuM+HCwEyMiP5xvKNPENVjYA==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true + + msgpackr@1.11.4: + resolution: {integrity: sha512-uaff7RG9VIC4jacFW9xzL3jc0iM32DNHe4jYVycBcjUePT/Klnfj7pqtWJt9khvDFizmjN2TlYniYmSS2LIaZg==} + + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} + + napi-postinstall@0.3.0: + resolution: {integrity: sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-emoji@1.11.0: + resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + nodemailer@6.10.1: + resolution: {integrity: sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==} + engines: {node: '>=6.0.0'} + + nodemailer@7.0.4: + resolution: {integrity: sha512-9O00Vh89/Ld2EcVCqJ/etd7u20UhME0f/NToPfArwPEe1Don1zy4mAIz6ariRr7mJ2RDxtaDzN0WJVdVXPtZaw==} + engines: {node: '>=6.0.0'} + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@8.0.2: + resolution: {integrity: sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==} + engines: {node: '>=14.16'} + + npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + + openai@5.10.2: + resolution: {integrity: sha512-n+vi74LzHtvlKcDPn9aApgELGiu5CwhaLG40zxLTlFQdoSJCLACORIPC2uVQ3JEYAbqapM+XyRKFy2Thej7bIw==} + hasBin: true + peerDependencies: + ws: ^8.18.0 + zod: ^3.23.8 + peerDependenciesMeta: + ws: + optional: true + zod: + optional: true + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + + p-event@4.2.0: + resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} + engines: {node: '>=8'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + p-wait-for@3.2.0: + resolution: {integrity: sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==} + engines: {node: '>=8'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parent-require@1.0.0: + resolution: {integrity: sha512-2MXDNZC4aXdkkap+rBBMv0lUsfJqvX5/2FiYYnfCnorZt3Pk06/IOR5KeaoghgS2w07MLWgjbsnyaq6PdHn2LQ==} + engines: {node: '>= 0.4.0'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} + + passport-jwt@4.0.1: + resolution: {integrity: sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==} + + passport-strategy@1.0.0: + resolution: {integrity: sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==} + engines: {node: '>= 0.4.0'} + + passport@0.7.0: + resolution: {integrity: sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==} + engines: {node: '>= 0.4.0'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pause@0.0.1: + resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} + + peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + + peek-readable@5.4.2: + resolution: {integrity: sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==} + engines: {node: '>=14.16'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + pg-cloudflare@1.2.7: + resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} + + pg-connection-string@2.6.2: + resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} + + pg-connection-string@2.9.1: + resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-pool@3.10.1: + resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.10.3: + resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg@8.16.0: + resolution: {integrity: sha512-7SKfdvP8CTNXjMUzfcVTaI+TDzBEeaUnVwiVGZQD1Hh33Kpev7liQba9uLd4CfN8r9mCVsD0JIpq03+Unpz+kg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + + pino-std-serializers@7.0.0: + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + + pino@9.7.0: + resolution: {integrity: sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==} + hasBin: true + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + piscina@4.9.2: + resolution: {integrity: sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ==} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-array@3.0.4: + resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==} + engines: {node: '>=12'} + + postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-date@2.1.0: + resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} + engines: {node: '>=12'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + + postgres-interval@4.0.2: + resolution: {integrity: sha512-EMsphSQ1YkQqKZL2cuG0zHkmjCCzQqQ71l2GXITqRwjhRleCdv00bDk/ktaSi0LnlaPzAc3535KTrjXsTdtx7A==} + engines: {node: '>=12'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + preview-email@3.1.0: + resolution: {integrity: sha512-ZtV1YrwscEjlrUzYrTSs6Nwo49JM3pXLM4fFOBSC3wSni+bxaWlw9/Qgk75PZO8M7cX2EybmL2iwvaV3vkAttw==} + engines: {node: '>=14'} + + process-warning@4.0.1: + resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} + + process-warning@5.0.0: + resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} + + promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pug-attrs@3.0.0: + resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} + + pug-code-gen@3.0.3: + resolution: {integrity: sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==} + + pug-error@2.1.0: + resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==} + + pug-filters@4.0.0: + resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} + + pug-lexer@5.0.1: + resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} + + pug-linker@4.0.0: + resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} + + pug-load@3.0.0: + resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} + + pug-parser@6.0.0: + resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} + + pug-runtime@3.0.1: + resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} + + pug-strip-comments@2.0.0: + resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} + + pug-walk@2.0.0: + resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} + + pug@3.0.3: + resolution: {integrity: sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + + redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + + redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + ret@0.5.0: + resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==} + engines: {node: '>=10'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + run-applescript@3.2.0: + resolution: {integrity: sha512-Ep0RsvAjnRcBX1p5vogbaBdAGu/8j/ewpvGqnQYunnLd9SM0vWcPJewPKNnWFggf0hF0pwIgwV5XK7qQ7UZ8Qg==} + engines: {node: '>=4'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safe-regex2@5.0.0: + resolution: {integrity: sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.3.2: + resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + engines: {node: '>= 10.13.0'} + + secure-json-parse@4.0.0: + resolution: {integrity: sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==} + + seek-bzip@2.0.0: + resolution: {integrity: sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==} + hasBin: true + + selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} + + semver-regex@4.0.5: + resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} + engines: {node: '>=12'} + + semver-truncate@3.0.0: + resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==} + engines: {node: '>=12'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + slick@1.12.2: + resolution: {integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==} + + slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + + socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + socket.io@4.8.1: + resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} + engines: {node: '>=10.2.0'} + + sonic-boom@4.2.0: + resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + + sort-keys-length@1.0.1: + resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} + engines: {node: '>=0.10.0'} + + sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sqlstring@2.3.3: + resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==} + engines: {node: '>= 0.6'} + + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + streamx@2.22.1: + resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-dirs@3.0.0: + resolution: {integrity: sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==} + + strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strnum@2.1.1: + resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + + strtok3@10.3.1: + resolution: {integrity: sha512-3JWEZM6mfix/GCJBBUrkA8p2Id2pBkyTkVCJKto55w080QBKZ+8R171fGrbiSp+yMO/u6F8/yUh7K4V9K+YCnw==} + engines: {node: '>=18'} + + strtok3@9.1.1: + resolution: {integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==} + engines: {node: '>=16'} + + superagent@10.2.1: + resolution: {integrity: sha512-O+PCv11lgTNJUzy49teNAWLjBZfc+A1enOwTpLlH6/rsvKcTwcdTT8m9azGkVqM7HBl5jpyZ7KTPhHweokBcdg==} + engines: {node: '>=14.18.0'} + + supertest@7.1.1: + resolution: {integrity: sha512-aI59HBTlG9e2wTjxGJV+DygfNLgnWbGdZxiA/sgrnNNikIW8lbDvCtF6RnhZoJ82nU7qv7ZLjrvWqCEm52fAmw==} + engines: {node: '>=14.18.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + swagger-ui-dist@5.21.0: + resolution: {integrity: sha512-E0K3AB6HvQd8yQNSMR7eE5bk+323AUxjtCz/4ZNKiahOlPhPJxqn3UPIGs00cyY/dhrTDJ61L7C/a8u6zhGrZg==} + + symbol-observable@4.0.0: + resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} + engines: {node: '>=0.10'} + + synckit@0.11.8: + resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==} + engines: {node: ^14.18.0 || >=16.0.0} + + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + tarn@3.0.2: + resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} + engines: {node: '>=8.0.0'} + + terser-webpack-plugin@5.3.14: + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.43.1: + resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + + text-decoding@1.0.0: + resolution: {integrity: sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA==} + + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tildify@2.0.0: + resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} + engines: {node: '>=8'} + + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + tlds@1.259.0: + resolution: {integrity: sha512-AldGGlDP0PNgwppe2quAvuBl18UcjuNtOnDuUkqhd6ipPqrYYBt3aTxK1QTsBVknk97lS2JcafWMghjGWFtunw==} + hasBin: true + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toad-cache@3.7.0: + resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} + engines: {node: '>=12'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + token-stream@1.0.0: + resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + + token-types@6.0.3: + resolution: {integrity: sha512-IKJ6EzuPPWtKtEIEPpIdXv9j5j2LGJEYk0CKY2efgKoYKLBiZdh6iQkLVBow/CB3phyWAWCyk+bZeaimJn6uRQ==} + engines: {node: '>=14.16'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-jest@29.4.0: + resolution: {integrity: sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 || ^30.0.0 + '@jest/types': ^29.0.0 || ^30.0.0 + babel-jest: ^29.0.0 || ^30.0.0 + esbuild: '*' + jest: ^29.0.0 || ^30.0.0 + jest-util: ^29.0.0 || ^30.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + jest-util: + optional: true + + ts-loader@9.5.2: + resolution: {integrity: sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfig-paths-webpack-plugin@4.2.0: + resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} + engines: {node: '>=10.13.0'} + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript-eslint@8.35.1: + resolution: {integrity: sha512-xslJjFzhOmHYQzSB/QTeASAHbjmxOGEP6Coh93TXmUBFQoJ1VU35UHIDmG06Jd6taf3wqqC1ntBnCMeymy5Ovw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + uid@2.0.2: + resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} + engines: {node: '>=8'} + + uint8array-extras@1.4.0: + resolution: {integrity: sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==} + engines: {node: '>=18'} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unrs-resolver@1.10.1: + resolution: {integrity: sha512-EFrL7Hw4kmhZdwWO3dwwFJo6hO3FXuQ6Bg8BK/faHZ9m1YxqBS31BNSTxklIQkxK/4LlV8zTYnPsIRLBzTzjCA==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + valid-data-url@3.0.1: + resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==} + engines: {node: '>=10'} + + validator@13.15.15: + resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} + engines: {node: '>= 0.10'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + watchpack@2.4.4: + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web-push@3.6.7: + resolution: {integrity: sha512-OpiIUe8cuGjrj3mMBFWY+e4MMIkW3SVT+7vEIjvD9kejGUypv8GPDf84JdPWskK8zMRIJ6xYGm+Kxr8YkPyA0A==} + engines: {node: '>= 16'} + hasBin: true + + web-resource-inliner@6.0.1: + resolution: {integrity: sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==} + engines: {node: '>=10.0.0'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webpack-node-externals@3.0.0: + resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} + engines: {node: '>=6'} + + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + engines: {node: '>=10.13.0'} + + webpack@5.99.6: + resolution: {integrity: sha512-TJOLrJ6oeccsGWPl7ujCYuc0pIq2cNsuD6GZDma8i5o5Npvcco/z+NKvZSFsP0/x6SShVb0+X2JK/JHUjKY9dQ==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + with@7.0.2: + resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} + engines: {node: '>= 10.0.0'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.8.0: + resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@3.2.0: + resolution: {integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + + yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + + '@angular-devkit/core@19.2.6(chokidar@4.0.3)': + dependencies: + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + jsonc-parser: 3.3.1 + picomatch: 4.0.2 + rxjs: 7.8.1 + source-map: 0.7.4 + optionalDependencies: + chokidar: 4.0.3 + + '@angular-devkit/core@19.2.8(chokidar@4.0.3)': + dependencies: + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + jsonc-parser: 3.3.1 + picomatch: 4.0.2 + rxjs: 7.8.1 + source-map: 0.7.4 + optionalDependencies: + chokidar: 4.0.3 + + '@angular-devkit/schematics-cli@19.2.8(@types/node@22.16.0)(chokidar@4.0.3)': + dependencies: + '@angular-devkit/core': 19.2.8(chokidar@4.0.3) + '@angular-devkit/schematics': 19.2.8(chokidar@4.0.3) + '@inquirer/prompts': 7.3.2(@types/node@22.16.0) + ansi-colors: 4.1.3 + symbol-observable: 4.0.0 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - '@types/node' + - chokidar + + '@angular-devkit/schematics@19.2.6(chokidar@4.0.3)': + dependencies: + '@angular-devkit/core': 19.2.6(chokidar@4.0.3) + jsonc-parser: 3.3.1 + magic-string: 0.30.17 + ora: 5.4.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + + '@angular-devkit/schematics@19.2.8(chokidar@4.0.3)': + dependencies: + '@angular-devkit/core': 19.2.8(chokidar@4.0.3) + jsonc-parser: 3.3.1 + magic-string: 0.30.17 + ora: 5.4.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.840.0 + tslib: 2.8.1 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.840.0 + tslib: 2.8.1 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-locate-window': 3.804.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-locate-window': 3.804.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.840.0 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-s3@3.850.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.846.0 + '@aws-sdk/credential-provider-node': 3.848.0 + '@aws-sdk/middleware-bucket-endpoint': 3.840.0 + '@aws-sdk/middleware-expect-continue': 3.840.0 + '@aws-sdk/middleware-flexible-checksums': 3.846.0 + '@aws-sdk/middleware-host-header': 3.840.0 + '@aws-sdk/middleware-location-constraint': 3.840.0 + '@aws-sdk/middleware-logger': 3.840.0 + '@aws-sdk/middleware-recursion-detection': 3.840.0 + '@aws-sdk/middleware-sdk-s3': 3.846.0 + '@aws-sdk/middleware-ssec': 3.840.0 + '@aws-sdk/middleware-user-agent': 3.848.0 + '@aws-sdk/region-config-resolver': 3.840.0 + '@aws-sdk/signature-v4-multi-region': 3.846.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-endpoints': 3.848.0 + '@aws-sdk/util-user-agent-browser': 3.840.0 + '@aws-sdk/util-user-agent-node': 3.848.0 + '@aws-sdk/xml-builder': 3.821.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.7.2 + '@smithy/eventstream-serde-browser': 4.0.4 + '@smithy/eventstream-serde-config-resolver': 4.1.2 + '@smithy/eventstream-serde-node': 4.0.4 + '@smithy/fetch-http-handler': 5.1.0 + '@smithy/hash-blob-browser': 4.0.4 + '@smithy/hash-node': 4.0.4 + '@smithy/hash-stream-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/md5-js': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.17 + '@smithy/middleware-retry': 4.1.18 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.1.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.9 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.25 + '@smithy/util-defaults-mode-node': 4.0.25 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.6 + '@smithy/util-stream': 4.2.3 + '@smithy/util-utf8': 4.0.0 + '@smithy/util-waiter': 4.0.6 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.848.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.846.0 + '@aws-sdk/middleware-host-header': 3.840.0 + '@aws-sdk/middleware-logger': 3.840.0 + '@aws-sdk/middleware-recursion-detection': 3.840.0 + '@aws-sdk/middleware-user-agent': 3.848.0 + '@aws-sdk/region-config-resolver': 3.840.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-endpoints': 3.848.0 + '@aws-sdk/util-user-agent-browser': 3.840.0 + '@aws-sdk/util-user-agent-node': 3.848.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.7.2 + '@smithy/fetch-http-handler': 5.1.0 + '@smithy/hash-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.17 + '@smithy/middleware-retry': 4.1.18 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.1.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.9 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.25 + '@smithy/util-defaults-mode-node': 4.0.25 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.6 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.846.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@aws-sdk/xml-builder': 3.821.0 + '@smithy/core': 3.7.2 + '@smithy/node-config-provider': 4.1.3 + '@smithy/property-provider': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/signature-v4': 5.1.2 + '@smithy/smithy-client': 4.4.9 + '@smithy/types': 4.3.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-utf8': 4.0.0 + fast-xml-parser: 5.2.5 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.846.0': + dependencies: + '@aws-sdk/core': 3.846.0 + '@aws-sdk/types': 3.840.0 + '@smithy/property-provider': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.846.0': + dependencies: + '@aws-sdk/core': 3.846.0 + '@aws-sdk/types': 3.840.0 + '@smithy/fetch-http-handler': 5.1.0 + '@smithy/node-http-handler': 4.1.0 + '@smithy/property-provider': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.9 + '@smithy/types': 4.3.1 + '@smithy/util-stream': 4.2.3 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.848.0': + dependencies: + '@aws-sdk/core': 3.846.0 + '@aws-sdk/credential-provider-env': 3.846.0 + '@aws-sdk/credential-provider-http': 3.846.0 + '@aws-sdk/credential-provider-process': 3.846.0 + '@aws-sdk/credential-provider-sso': 3.848.0 + '@aws-sdk/credential-provider-web-identity': 3.848.0 + '@aws-sdk/nested-clients': 3.848.0 + '@aws-sdk/types': 3.840.0 + '@smithy/credential-provider-imds': 4.0.6 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.848.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.846.0 + '@aws-sdk/credential-provider-http': 3.846.0 + '@aws-sdk/credential-provider-ini': 3.848.0 + '@aws-sdk/credential-provider-process': 3.846.0 + '@aws-sdk/credential-provider-sso': 3.848.0 + '@aws-sdk/credential-provider-web-identity': 3.848.0 + '@aws-sdk/types': 3.840.0 + '@smithy/credential-provider-imds': 4.0.6 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.846.0': + dependencies: + '@aws-sdk/core': 3.846.0 + '@aws-sdk/types': 3.840.0 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.848.0': + dependencies: + '@aws-sdk/client-sso': 3.848.0 + '@aws-sdk/core': 3.846.0 + '@aws-sdk/token-providers': 3.848.0 + '@aws-sdk/types': 3.840.0 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.848.0': + dependencies: + '@aws-sdk/core': 3.846.0 + '@aws-sdk/nested-clients': 3.848.0 + '@aws-sdk/types': 3.840.0 + '@smithy/property-provider': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/middleware-bucket-endpoint@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-arn-parser': 3.804.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + '@smithy/util-config-provider': 4.0.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-expect-continue@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-flexible-checksums@3.846.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.846.0 + '@aws-sdk/types': 3.840.0 + '@smithy/is-array-buffer': 4.0.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-stream': 4.2.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-host-header@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-location-constraint@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-sdk-s3@3.846.0': + dependencies: + '@aws-sdk/core': 3.846.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-arn-parser': 3.804.0 + '@smithy/core': 3.7.2 + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/signature-v4': 5.1.2 + '@smithy/smithy-client': 4.4.9 + '@smithy/types': 4.3.1 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-stream': 4.2.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-ssec@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.848.0': + dependencies: + '@aws-sdk/core': 3.846.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-endpoints': 3.848.0 + '@smithy/core': 3.7.2 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.848.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.846.0 + '@aws-sdk/middleware-host-header': 3.840.0 + '@aws-sdk/middleware-logger': 3.840.0 + '@aws-sdk/middleware-recursion-detection': 3.840.0 + '@aws-sdk/middleware-user-agent': 3.848.0 + '@aws-sdk/region-config-resolver': 3.840.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-endpoints': 3.848.0 + '@aws-sdk/util-user-agent-browser': 3.840.0 + '@aws-sdk/util-user-agent-node': 3.848.0 + '@smithy/config-resolver': 4.1.4 + '@smithy/core': 3.7.2 + '@smithy/fetch-http-handler': 5.1.0 + '@smithy/hash-node': 4.0.4 + '@smithy/invalid-dependency': 4.0.4 + '@smithy/middleware-content-length': 4.0.4 + '@smithy/middleware-endpoint': 4.1.17 + '@smithy/middleware-retry': 4.1.18 + '@smithy/middleware-serde': 4.0.8 + '@smithy/middleware-stack': 4.0.4 + '@smithy/node-config-provider': 4.1.3 + '@smithy/node-http-handler': 4.1.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.9 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.25 + '@smithy/util-defaults-mode-node': 4.0.25 + '@smithy/util-endpoints': 3.0.6 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.6 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.4 + tslib: 2.8.1 + + '@aws-sdk/s3-request-presigner@3.850.0': + dependencies: + '@aws-sdk/signature-v4-multi-region': 3.846.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-format-url': 3.840.0 + '@smithy/middleware-endpoint': 4.1.17 + '@smithy/protocol-http': 5.1.2 + '@smithy/smithy-client': 4.4.9 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.846.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.846.0 + '@aws-sdk/types': 3.840.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/signature-v4': 5.1.2 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.848.0': + dependencies: + '@aws-sdk/core': 3.846.0 + '@aws-sdk/nested-clients': 3.848.0 + '@aws-sdk/types': 3.840.0 + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.840.0': + dependencies: + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/util-arn-parser@3.804.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.848.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 + '@smithy/util-endpoints': 3.0.6 + tslib: 2.8.1 + + '@aws-sdk/util-format-url@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/querystring-builder': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.804.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/types': 4.3.1 + bowser: 2.11.0 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.848.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.848.0 + '@aws-sdk/types': 3.840.0 + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.821.0': + dependencies: + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.0': {} + + '@babel/core@7.28.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/helpers': 7.27.6 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.0 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.0': + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.25.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.27.6': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.0 + + '@babel/parser@7.28.0': + dependencies: + '@babel/types': 7.28.0 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/runtime@7.27.6': + optional: true + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 + + '@babel/traverse@7.28.0': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/types': 7.28.0 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@bcoe/v8-coverage@0.2.3': {} + + '@colors/colors@1.5.0': + optional: true + + '@commitlint/cli@19.8.1(@types/node@22.16.0)(typescript@5.8.3)': + dependencies: + '@commitlint/format': 19.8.1 + '@commitlint/lint': 19.8.1 + '@commitlint/load': 19.8.1(@types/node@22.16.0)(typescript@5.8.3) + '@commitlint/read': 19.8.1 + '@commitlint/types': 19.8.1 + tinyexec: 1.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + conventional-changelog-conventionalcommits: 7.0.2 + + '@commitlint/config-validator@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + ajv: 8.17.1 + + '@commitlint/ensure@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@19.8.1': {} + + '@commitlint/format@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + chalk: 5.4.1 + + '@commitlint/is-ignored@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + semver: 7.7.2 + + '@commitlint/lint@19.8.1': + dependencies: + '@commitlint/is-ignored': 19.8.1 + '@commitlint/parse': 19.8.1 + '@commitlint/rules': 19.8.1 + '@commitlint/types': 19.8.1 + + '@commitlint/load@19.8.1(@types/node@22.16.0)(typescript@5.8.3)': + dependencies: + '@commitlint/config-validator': 19.8.1 + '@commitlint/execute-rule': 19.8.1 + '@commitlint/resolve-extends': 19.8.1 + '@commitlint/types': 19.8.1 + chalk: 5.4.1 + cosmiconfig: 9.0.0(typescript@5.8.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@22.16.0)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@19.8.1': {} + + '@commitlint/parse@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + + '@commitlint/read@19.8.1': + dependencies: + '@commitlint/top-level': 19.8.1 + '@commitlint/types': 19.8.1 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + tinyexec: 1.0.1 + + '@commitlint/resolve-extends@19.8.1': + dependencies: + '@commitlint/config-validator': 19.8.1 + '@commitlint/types': 19.8.1 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@19.8.1': + dependencies: + '@commitlint/ensure': 19.8.1 + '@commitlint/message': 19.8.1 + '@commitlint/to-lines': 19.8.1 + '@commitlint/types': 19.8.1 + + '@commitlint/to-lines@19.8.1': {} + + '@commitlint/top-level@19.8.1': + dependencies: + find-up: 7.0.0 + + '@commitlint/types@19.8.1': + dependencies: + '@types/conventional-commits-parser': 5.0.1 + chalk: 5.4.1 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@css-inline/css-inline-android-arm-eabi@0.14.1': + optional: true + + '@css-inline/css-inline-android-arm64@0.14.1': + optional: true + + '@css-inline/css-inline-darwin-arm64@0.14.1': + optional: true + + '@css-inline/css-inline-darwin-x64@0.14.1': + optional: true + + '@css-inline/css-inline-linux-arm-gnueabihf@0.14.1': + optional: true + + '@css-inline/css-inline-linux-arm64-gnu@0.14.1': + optional: true + + '@css-inline/css-inline-linux-arm64-musl@0.14.1': + optional: true + + '@css-inline/css-inline-linux-x64-gnu@0.14.1': + optional: true + + '@css-inline/css-inline-linux-x64-musl@0.14.1': + optional: true + + '@css-inline/css-inline-win32-x64-msvc@0.14.1': + optional: true + + '@css-inline/css-inline@0.14.1': + optionalDependencies: + '@css-inline/css-inline-android-arm-eabi': 0.14.1 + '@css-inline/css-inline-android-arm64': 0.14.1 + '@css-inline/css-inline-darwin-arm64': 0.14.1 + '@css-inline/css-inline-darwin-x64': 0.14.1 + '@css-inline/css-inline-linux-arm-gnueabihf': 0.14.1 + '@css-inline/css-inline-linux-arm64-gnu': 0.14.1 + '@css-inline/css-inline-linux-arm64-musl': 0.14.1 + '@css-inline/css-inline-linux-x64-gnu': 0.14.1 + '@css-inline/css-inline-linux-x64-musl': 0.14.1 + '@css-inline/css-inline-win32-x64-msvc': 0.14.1 + + '@emnapi/core@1.4.3': + dependencies: + '@emnapi/wasi-threads': 1.0.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.4.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@9.30.1(jiti@2.4.2))': + dependencies: + eslint: 9.30.1(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.21.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.3.0': {} + + '@eslint/core@0.14.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.15.1': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.30.1': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.3.3': + dependencies: + '@eslint/core': 0.15.1 + levn: 0.4.1 + + '@fastify/accept-negotiator@2.0.1': {} + + '@fastify/ajv-compiler@4.0.2': + dependencies: + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + fast-uri: 3.0.6 + + '@fastify/busboy@1.2.1': + dependencies: + text-decoding: 1.0.0 + + '@fastify/cors@11.0.1': + dependencies: + fastify-plugin: 5.0.1 + toad-cache: 3.7.0 + + '@fastify/error@4.2.0': {} + + '@fastify/fast-json-stringify-compiler@5.0.3': + dependencies: + fast-json-stringify: 6.0.1 + + '@fastify/formbody@8.0.2': + dependencies: + fast-querystring: 1.1.2 + fastify-plugin: 5.0.1 + + '@fastify/forwarded@3.0.0': {} + + '@fastify/merge-json-schemas@0.2.1': + dependencies: + dequal: 2.0.3 + + '@fastify/middie@9.0.3': + dependencies: + '@fastify/error': 4.2.0 + fastify-plugin: 5.0.1 + path-to-regexp: 8.2.0 + reusify: 1.1.0 + + '@fastify/proxy-addr@5.0.0': + dependencies: + '@fastify/forwarded': 3.0.0 + ipaddr.js: 2.2.0 + + '@fastify/send@4.1.0': + dependencies: + '@lukeed/ms': 2.0.2 + escape-html: 1.0.3 + fast-decode-uri-component: 1.0.1 + http-errors: 2.0.0 + mime: 3.0.0 + + '@fastify/static@8.2.0': + dependencies: + '@fastify/accept-negotiator': 2.0.1 + '@fastify/send': 4.1.0 + content-disposition: 0.5.4 + fastify-plugin: 5.0.1 + fastq: 1.19.1 + glob: 11.0.3 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@inquirer/checkbox@4.1.9(@types/node@22.16.0)': + dependencies: + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/figures': 1.0.12 + '@inquirer/type': 3.0.7(@types/node@22.16.0) + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/confirm@5.1.13(@types/node@22.16.0)': + dependencies: + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/core@10.1.14(@types/node@22.16.0)': + dependencies: + '@inquirer/figures': 1.0.12 + '@inquirer/type': 3.0.7(@types/node@22.16.0) + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/editor@4.2.14(@types/node@22.16.0)': + dependencies: + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) + external-editor: 3.1.0 + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/expand@4.0.16(@types/node@22.16.0)': + dependencies: + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/figures@1.0.12': {} + + '@inquirer/input@4.2.0(@types/node@22.16.0)': + dependencies: + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/number@3.0.16(@types/node@22.16.0)': + dependencies: + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/password@4.0.16(@types/node@22.16.0)': + dependencies: + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) + ansi-escapes: 4.3.2 + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/prompts@7.3.2(@types/node@22.16.0)': + dependencies: + '@inquirer/checkbox': 4.1.9(@types/node@22.16.0) + '@inquirer/confirm': 5.1.13(@types/node@22.16.0) + '@inquirer/editor': 4.2.14(@types/node@22.16.0) + '@inquirer/expand': 4.0.16(@types/node@22.16.0) + '@inquirer/input': 4.2.0(@types/node@22.16.0) + '@inquirer/number': 3.0.16(@types/node@22.16.0) + '@inquirer/password': 4.0.16(@types/node@22.16.0) + '@inquirer/rawlist': 4.1.4(@types/node@22.16.0) + '@inquirer/search': 3.0.16(@types/node@22.16.0) + '@inquirer/select': 4.2.4(@types/node@22.16.0) + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/prompts@7.4.1(@types/node@22.16.0)': + dependencies: + '@inquirer/checkbox': 4.1.9(@types/node@22.16.0) + '@inquirer/confirm': 5.1.13(@types/node@22.16.0) + '@inquirer/editor': 4.2.14(@types/node@22.16.0) + '@inquirer/expand': 4.0.16(@types/node@22.16.0) + '@inquirer/input': 4.2.0(@types/node@22.16.0) + '@inquirer/number': 3.0.16(@types/node@22.16.0) + '@inquirer/password': 4.0.16(@types/node@22.16.0) + '@inquirer/rawlist': 4.1.4(@types/node@22.16.0) + '@inquirer/search': 3.0.16(@types/node@22.16.0) + '@inquirer/select': 4.2.4(@types/node@22.16.0) + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/rawlist@4.1.4(@types/node@22.16.0)': + dependencies: + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/search@3.0.16(@types/node@22.16.0)': + dependencies: + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/figures': 1.0.12 + '@inquirer/type': 3.0.7(@types/node@22.16.0) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/select@4.2.4(@types/node@22.16.0)': + dependencies: + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/figures': 1.0.12 + '@inquirer/type': 3.0.7(@types/node@22.16.0) + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.16.0 + + '@inquirer/type@3.0.7(@types/node@22.16.0)': + optionalDependencies: + '@types/node': 22.16.0 + + '@ioredis/commands@1.2.0': {} + + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jercle/yargonaut@1.1.5': + dependencies: + chalk: 4.1.2 + figlet: 1.8.1 + parent-require: 1.0.0 + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.16.0 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.16.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.16.0 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.16.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.29 + '@types/node': 22.16.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.29 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.28.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.29 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.16.0 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.12': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/trace-mapping': 0.3.29 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.10': + dependencies: + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + + '@jridgewell/sourcemap-codec@1.5.4': {} + + '@jridgewell/trace-mapping@0.3.29': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.4 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.4 + + '@keyv/redis@4.5.0(keyv@5.3.4)': + dependencies: + '@redis/client': 1.6.1 + cluster-key-slot: 1.1.2 + keyv: 5.3.4 + + '@keyv/serialize@1.0.3': + dependencies: + buffer: 6.0.3 + + '@lukeed/csprng@1.1.0': {} + + '@lukeed/ms@2.0.2': {} + + '@mapbox/node-pre-gyp@1.0.11': + dependencies: + detect-libc: 2.0.4 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.7.2 + tar: 6.2.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@microsoft/tsdoc@0.15.1': {} + + '@mikro-orm/cli@6.4.16(pg@8.16.0)': + dependencies: + '@jercle/yargonaut': 1.1.5 + '@mikro-orm/core': 6.4.16 + '@mikro-orm/knex': 6.4.16(@mikro-orm/core@6.4.16)(pg@8.16.0) + fs-extra: 11.3.0 + tsconfig-paths: 4.2.0 + yargs: 17.7.2 + transitivePeerDependencies: + - better-sqlite3 + - libsql + - mariadb + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + + '@mikro-orm/core@6.4.16': + dependencies: + dataloader: 2.2.3 + dotenv: 16.5.0 + esprima: 4.0.1 + fs-extra: 11.3.0 + globby: 11.1.0 + mikro-orm: 6.4.16 + reflect-metadata: 0.2.2 + + '@mikro-orm/knex@6.4.16(@mikro-orm/core@6.4.16)(pg@8.16.0)': + dependencies: + '@mikro-orm/core': 6.4.16 + fs-extra: 11.3.0 + knex: 3.1.0(pg@8.16.0) + sqlstring: 2.3.3 + transitivePeerDependencies: + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + + '@mikro-orm/nestjs@6.1.1(@mikro-orm/core@6.4.16)(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)': + dependencies: + '@mikro-orm/core': 6.4.16 + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + + '@mikro-orm/postgresql@6.4.16(@mikro-orm/core@6.4.16)': + dependencies: + '@mikro-orm/core': 6.4.16 + '@mikro-orm/knex': 6.4.16(@mikro-orm/core@6.4.16)(pg@8.16.0) + pg: 8.16.0 + postgres-array: 3.0.4 + postgres-date: 2.1.0 + postgres-interval: 4.0.2 + transitivePeerDependencies: + - better-sqlite3 + - libsql + - mariadb + - mysql + - mysql2 + - pg-native + - sqlite3 + - supports-color + - tedious + + '@mikro-orm/seeder@6.4.16(@mikro-orm/core@6.4.16)': + dependencies: + '@mikro-orm/core': 6.4.16 + fs-extra: 11.3.0 + globby: 11.1.0 + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + optional: true + + '@napi-rs/nice-android-arm-eabi@1.0.4': + optional: true + + '@napi-rs/nice-android-arm64@1.0.4': + optional: true + + '@napi-rs/nice-darwin-arm64@1.0.4': + optional: true + + '@napi-rs/nice-darwin-x64@1.0.4': + optional: true + + '@napi-rs/nice-freebsd-x64@1.0.4': + optional: true + + '@napi-rs/nice-linux-arm-gnueabihf@1.0.4': + optional: true + + '@napi-rs/nice-linux-arm64-gnu@1.0.4': + optional: true + + '@napi-rs/nice-linux-arm64-musl@1.0.4': + optional: true + + '@napi-rs/nice-linux-ppc64-gnu@1.0.4': + optional: true + + '@napi-rs/nice-linux-riscv64-gnu@1.0.4': + optional: true + + '@napi-rs/nice-linux-s390x-gnu@1.0.4': + optional: true + + '@napi-rs/nice-linux-x64-gnu@1.0.4': + optional: true + + '@napi-rs/nice-linux-x64-musl@1.0.4': + optional: true + + '@napi-rs/nice-win32-arm64-msvc@1.0.4': + optional: true + + '@napi-rs/nice-win32-ia32-msvc@1.0.4': + optional: true + + '@napi-rs/nice-win32-x64-msvc@1.0.4': + optional: true + + '@napi-rs/nice@1.0.4': + optionalDependencies: + '@napi-rs/nice-android-arm-eabi': 1.0.4 + '@napi-rs/nice-android-arm64': 1.0.4 + '@napi-rs/nice-darwin-arm64': 1.0.4 + '@napi-rs/nice-darwin-x64': 1.0.4 + '@napi-rs/nice-freebsd-x64': 1.0.4 + '@napi-rs/nice-linux-arm-gnueabihf': 1.0.4 + '@napi-rs/nice-linux-arm64-gnu': 1.0.4 + '@napi-rs/nice-linux-arm64-musl': 1.0.4 + '@napi-rs/nice-linux-ppc64-gnu': 1.0.4 + '@napi-rs/nice-linux-riscv64-gnu': 1.0.4 + '@napi-rs/nice-linux-s390x-gnu': 1.0.4 + '@napi-rs/nice-linux-x64-gnu': 1.0.4 + '@napi-rs/nice-linux-x64-musl': 1.0.4 + '@napi-rs/nice-win32-arm64-msvc': 1.0.4 + '@napi-rs/nice-win32-ia32-msvc': 1.0.4 + '@napi-rs/nice-win32-x64-msvc': 1.0.4 + optional: true + + '@napi-rs/wasm-runtime@0.2.11': + dependencies: + '@emnapi/core': 1.4.3 + '@emnapi/runtime': 1.4.3 + '@tybys/wasm-util': 0.9.0 + optional: true + + '@nest-lab/fastify-multer@1.3.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-fastify@11.1.3(@fastify/static@8.2.0)(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3))(rxjs@7.8.2)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/platform-fastify': 11.1.3(@fastify/static@8.2.0)(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3) + fastify-multer: 2.0.3 + rxjs: 7.8.2 + + '@nest-lab/throttler-storage-redis@1.1.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(@nestjs/throttler@6.4.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(reflect-metadata@0.2.2))(ioredis@5.6.1)(reflect-metadata@0.2.2)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/throttler': 6.4.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(reflect-metadata@0.2.2) + ioredis: 5.6.1 + reflect-metadata: 0.2.2 + tslib: 2.8.1 + + '@nestjs-modules/mailer@2.0.2(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(nodemailer@7.0.4)': + dependencies: + '@css-inline/css-inline': 0.14.1 + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + glob: 10.3.12 + nodemailer: 7.0.4 + optionalDependencies: + '@types/ejs': 3.1.5 + '@types/mjml': 4.7.4 + '@types/pug': 2.0.10 + ejs: 3.1.10 + handlebars: 4.7.8 + liquidjs: 10.21.1 + mjml: 4.15.3 + preview-email: 3.1.0 + pug: 3.0.3 + transitivePeerDependencies: + - encoding + + '@nestjs/axios@4.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.10.0)(rxjs@7.8.2)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + axios: 1.10.0 + rxjs: 7.8.2 + + '@nestjs/bull-shared@11.0.2(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + tslib: 2.8.1 + + '@nestjs/bullmq@11.0.2(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(bullmq@5.56.1)': + dependencies: + '@nestjs/bull-shared': 11.0.2(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3) + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + bullmq: 5.56.1 + tslib: 2.8.1 + + '@nestjs/cache-manager@3.0.1(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(cache-manager@7.0.0)(keyv@5.3.4)(rxjs@7.8.2)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + cache-manager: 7.0.0 + keyv: 5.3.4 + rxjs: 7.8.2 + + '@nestjs/cli@11.0.7(@swc/cli@0.6.0(@swc/core@1.12.9)(chokidar@4.0.3))(@swc/core@1.12.9)(@types/node@22.16.0)': + dependencies: + '@angular-devkit/core': 19.2.8(chokidar@4.0.3) + '@angular-devkit/schematics': 19.2.8(chokidar@4.0.3) + '@angular-devkit/schematics-cli': 19.2.8(@types/node@22.16.0)(chokidar@4.0.3) + '@inquirer/prompts': 7.4.1(@types/node@22.16.0) + '@nestjs/schematics': 11.0.5(chokidar@4.0.3)(typescript@5.8.3) + ansis: 3.17.0 + chokidar: 4.0.3 + cli-table3: 0.6.5 + commander: 4.1.1 + fork-ts-checker-webpack-plugin: 9.1.0(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.9)) + glob: 11.0.1 + node-emoji: 1.11.0 + ora: 5.4.1 + tree-kill: 1.2.2 + tsconfig-paths: 4.2.0 + tsconfig-paths-webpack-plugin: 4.2.0 + typescript: 5.8.3 + webpack: 5.99.6(@swc/core@1.12.9) + webpack-node-externals: 3.0.0 + optionalDependencies: + '@swc/cli': 0.6.0(@swc/core@1.12.9)(chokidar@4.0.3) + '@swc/core': 1.12.9 + transitivePeerDependencies: + - '@types/node' + - esbuild + - uglify-js + - webpack-cli + + '@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)': + dependencies: + file-type: 21.0.0 + iterare: 1.2.1 + load-esm: 1.0.2 + reflect-metadata: 0.2.2 + rxjs: 7.8.2 + tslib: 2.8.1 + uid: 2.0.2 + optionalDependencies: + class-transformer: 0.5.1 + class-validator: 0.14.2 + transitivePeerDependencies: + - supports-color + + '@nestjs/config@4.0.2(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + dotenv: 16.4.7 + dotenv-expand: 12.0.1 + lodash: 4.17.21 + rxjs: 7.8.2 + + '@nestjs/core@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nuxt/opencollective': 0.4.1 + fast-safe-stringify: 2.1.1 + iterare: 1.2.1 + path-to-regexp: 8.2.0 + reflect-metadata: 0.2.2 + rxjs: 7.8.2 + tslib: 2.8.1 + uid: 2.0.2 + optionalDependencies: + '@nestjs/websockets': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(@nestjs/platform-socket.io@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + + '@nestjs/jwt@11.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@types/jsonwebtoken': 9.0.7 + jsonwebtoken: 9.0.2 + + '@nestjs/mapped-types@2.1.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + reflect-metadata: 0.2.2 + optionalDependencies: + class-transformer: 0.5.1 + class-validator: 0.14.2 + + '@nestjs/passport@11.0.5(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(passport@0.7.0)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + passport: 0.7.0 + + '@nestjs/platform-fastify@11.1.3(@fastify/static@8.2.0)(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)': + dependencies: + '@fastify/cors': 11.0.1 + '@fastify/formbody': 8.0.2 + '@fastify/middie': 9.0.3 + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + fast-querystring: 1.1.2 + fastify: 5.3.3 + light-my-request: 6.6.0 + path-to-regexp: 8.2.0 + tslib: 2.8.1 + optionalDependencies: + '@fastify/static': 8.2.0 + + '@nestjs/platform-socket.io@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(rxjs@7.8.2)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/websockets': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(@nestjs/platform-socket.io@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + rxjs: 7.8.2 + socket.io: 4.8.1 + tslib: 2.8.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@nestjs/schematics@11.0.5(chokidar@4.0.3)(typescript@5.8.3)': + dependencies: + '@angular-devkit/core': 19.2.6(chokidar@4.0.3) + '@angular-devkit/schematics': 19.2.6(chokidar@4.0.3) + comment-json: 4.2.5 + jsonc-parser: 3.3.1 + pluralize: 8.0.0 + typescript: 5.8.3 + transitivePeerDependencies: + - chokidar + + '@nestjs/swagger@11.2.0(@fastify/static@8.2.0)(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)': + dependencies: + '@microsoft/tsdoc': 0.15.1 + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/mapped-types': 2.1.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2) + js-yaml: 4.1.0 + lodash: 4.17.21 + path-to-regexp: 8.2.0 + reflect-metadata: 0.2.2 + swagger-ui-dist: 5.21.0 + optionalDependencies: + '@fastify/static': 8.2.0 + class-transformer: 0.5.1 + class-validator: 0.14.2 + + '@nestjs/testing@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + tslib: 2.8.1 + + '@nestjs/throttler@6.4.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(reflect-metadata@0.2.2)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + reflect-metadata: 0.2.2 + + '@nestjs/websockets@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3)(@nestjs/platform-socket.io@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2)': + dependencies: + '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(reflect-metadata@0.2.2)(rxjs@7.8.2) + iterare: 1.2.1 + object-hash: 3.0.0 + reflect-metadata: 0.2.2 + rxjs: 7.8.2 + tslib: 2.8.1 + optionalDependencies: + '@nestjs/platform-socket.io': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/websockets@11.1.3)(rxjs@7.8.2) + + '@noble/hashes@1.8.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@nolyfill/is-core-module@1.0.39': {} + + '@nuxt/opencollective@0.4.1': + dependencies: + consola: 3.4.2 + + '@one-ini/wasm@0.1.1': + optional: true + + '@paralleldrive/cuid2@2.2.2': + dependencies: + '@noble/hashes': 1.8.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.2.7': {} + + '@redis/client@1.6.1': + dependencies: + cluster-key-slot: 1.1.2 + generic-pool: 3.9.0 + yallist: 4.0.0 + + '@rtsao/scc@1.1.0': {} + + '@scarf/scarf@1.4.0': {} + + '@sec-ant/readable-stream@0.4.1': {} + + '@selderee/plugin-htmlparser2@0.11.0': + dependencies: + domhandler: 5.0.3 + selderee: 0.11.0 + optional: true + + '@sinclair/typebox@0.27.8': {} + + '@sindresorhus/is@5.6.0': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@smithy/abort-controller@4.0.4': + dependencies: + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/chunked-blob-reader-native@4.0.0': + dependencies: + '@smithy/util-base64': 4.0.0 + tslib: 2.8.1 + + '@smithy/chunked-blob-reader@5.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/config-resolver@4.1.4': + dependencies: + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.4 + tslib: 2.8.1 + + '@smithy/core@3.7.2': + dependencies: + '@smithy/middleware-serde': 4.0.8 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-stream': 4.2.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.0.6': + dependencies: + '@smithy/node-config-provider': 4.1.3 + '@smithy/property-provider': 4.0.4 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 + tslib: 2.8.1 + + '@smithy/eventstream-codec@4.0.4': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.3.1 + '@smithy/util-hex-encoding': 4.0.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-browser@4.0.4': + dependencies: + '@smithy/eventstream-serde-universal': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/eventstream-serde-config-resolver@4.1.2': + dependencies: + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@4.0.4': + dependencies: + '@smithy/eventstream-serde-universal': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/eventstream-serde-universal@4.0.4': + dependencies: + '@smithy/eventstream-codec': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.1.0': + dependencies: + '@smithy/protocol-http': 5.1.2 + '@smithy/querystring-builder': 4.0.4 + '@smithy/types': 4.3.1 + '@smithy/util-base64': 4.0.0 + tslib: 2.8.1 + + '@smithy/hash-blob-browser@4.0.4': + dependencies: + '@smithy/chunked-blob-reader': 5.0.0 + '@smithy/chunked-blob-reader-native': 4.0.0 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/hash-node@4.0.4': + dependencies: + '@smithy/types': 4.3.1 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/hash-stream-node@4.0.4': + dependencies: + '@smithy/types': 4.3.1 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.0.4': + dependencies: + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/md5-js@4.0.4': + dependencies: + '@smithy/types': 4.3.1 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.0.4': + dependencies: + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.1.17': + dependencies: + '@smithy/core': 3.7.2 + '@smithy/middleware-serde': 4.0.8 + '@smithy/node-config-provider': 4.1.3 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 + '@smithy/url-parser': 4.0.4 + '@smithy/util-middleware': 4.0.4 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.1.18': + dependencies: + '@smithy/node-config-provider': 4.1.3 + '@smithy/protocol-http': 5.1.2 + '@smithy/service-error-classification': 4.0.6 + '@smithy/smithy-client': 4.4.9 + '@smithy/types': 4.3.1 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-retry': 4.0.6 + tslib: 2.8.1 + uuid: 9.0.1 + + '@smithy/middleware-serde@4.0.8': + dependencies: + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.0.4': + dependencies: + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.1.3': + dependencies: + '@smithy/property-provider': 4.0.4 + '@smithy/shared-ini-file-loader': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.1.0': + dependencies: + '@smithy/abort-controller': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/querystring-builder': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/property-provider@4.0.4': + dependencies: + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/protocol-http@5.1.2': + dependencies: + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/querystring-builder@4.0.4': + dependencies: + '@smithy/types': 4.3.1 + '@smithy/util-uri-escape': 4.0.0 + tslib: 2.8.1 + + '@smithy/querystring-parser@4.0.4': + dependencies: + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/service-error-classification@4.0.6': + dependencies: + '@smithy/types': 4.3.1 + + '@smithy/shared-ini-file-loader@4.0.4': + dependencies: + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/signature-v4@5.1.2': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-middleware': 4.0.4 + '@smithy/util-uri-escape': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/smithy-client@4.4.9': + dependencies: + '@smithy/core': 3.7.2 + '@smithy/middleware-endpoint': 4.1.17 + '@smithy/middleware-stack': 4.0.4 + '@smithy/protocol-http': 5.1.2 + '@smithy/types': 4.3.1 + '@smithy/util-stream': 4.2.3 + tslib: 2.8.1 + + '@smithy/types@4.3.1': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@4.0.4': + dependencies: + '@smithy/querystring-parser': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/util-base64@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@4.0.0': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.0.25': + dependencies: + '@smithy/property-provider': 4.0.4 + '@smithy/smithy-client': 4.4.9 + '@smithy/types': 4.3.1 + bowser: 2.11.0 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.0.25': + dependencies: + '@smithy/config-resolver': 4.1.4 + '@smithy/credential-provider-imds': 4.0.6 + '@smithy/node-config-provider': 4.1.3 + '@smithy/property-provider': 4.0.4 + '@smithy/smithy-client': 4.4.9 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.0.6': + dependencies: + '@smithy/node-config-provider': 4.1.3 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/util-hex-encoding@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-middleware@4.0.4': + dependencies: + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/util-retry@4.0.6': + dependencies: + '@smithy/service-error-classification': 4.0.6 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@smithy/util-stream@4.2.3': + dependencies: + '@smithy/fetch-http-handler': 5.1.0 + '@smithy/node-http-handler': 4.1.0 + '@smithy/types': 4.3.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-uri-escape@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-waiter@4.0.6': + dependencies: + '@smithy/abort-controller': 4.0.4 + '@smithy/types': 4.3.1 + tslib: 2.8.1 + + '@socket.io/component-emitter@3.1.2': {} + + '@swc/cli@0.6.0(@swc/core@1.12.9)(chokidar@4.0.3)': + dependencies: + '@swc/core': 1.12.9 + '@swc/counter': 0.1.3 + '@xhmikosr/bin-wrapper': 13.0.5 + commander: 8.3.0 + fast-glob: 3.3.3 + minimatch: 9.0.5 + piscina: 4.9.2 + semver: 7.7.2 + slash: 3.0.0 + source-map: 0.7.4 + optionalDependencies: + chokidar: 4.0.3 + + '@swc/core-darwin-arm64@1.12.9': + optional: true + + '@swc/core-darwin-x64@1.12.9': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.12.9': + optional: true + + '@swc/core-linux-arm64-gnu@1.12.9': + optional: true + + '@swc/core-linux-arm64-musl@1.12.9': + optional: true + + '@swc/core-linux-x64-gnu@1.12.9': + optional: true + + '@swc/core-linux-x64-musl@1.12.9': + optional: true + + '@swc/core-win32-arm64-msvc@1.12.9': + optional: true + + '@swc/core-win32-ia32-msvc@1.12.9': + optional: true + + '@swc/core-win32-x64-msvc@1.12.9': + optional: true + + '@swc/core@1.12.9': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.23 + optionalDependencies: + '@swc/core-darwin-arm64': 1.12.9 + '@swc/core-darwin-x64': 1.12.9 + '@swc/core-linux-arm-gnueabihf': 1.12.9 + '@swc/core-linux-arm64-gnu': 1.12.9 + '@swc/core-linux-arm64-musl': 1.12.9 + '@swc/core-linux-x64-gnu': 1.12.9 + '@swc/core-linux-x64-musl': 1.12.9 + '@swc/core-win32-arm64-msvc': 1.12.9 + '@swc/core-win32-ia32-msvc': 1.12.9 + '@swc/core-win32-x64-msvc': 1.12.9 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.23': + dependencies: + '@swc/counter': 0.1.3 + + '@szmarczak/http-timer@5.0.1': + dependencies: + defer-to-connect: 2.0.1 + + '@tokenizer/inflate@0.2.7': + dependencies: + debug: 4.4.1 + fflate: 0.8.2 + token-types: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@tokenizer/token@0.3.0': {} + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.28.0 + + '@types/bcrypt@5.0.2': + dependencies: + '@types/node': 22.16.0 + + '@types/body-parser@1.19.6': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 22.16.0 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 22.16.0 + + '@types/conventional-commits-parser@5.0.1': + dependencies: + '@types/node': 22.16.0 + + '@types/cookiejar@2.1.5': {} + + '@types/cors@2.8.19': + dependencies: + '@types/node': 22.16.0 + + '@types/ejs@3.1.5': + optional: true + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.8': {} + + '@types/express-serve-static-core@5.0.6': + dependencies: + '@types/node': 22.16.0 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.5 + + '@types/express@5.0.3': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 5.0.6 + '@types/serve-static': 1.15.8 + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.16.0 + + '@types/http-cache-semantics@4.0.4': {} + + '@types/http-errors@2.0.5': {} + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@29.5.14': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/jsonwebtoken@9.0.10': + dependencies: + '@types/ms': 2.1.0 + '@types/node': 22.16.0 + + '@types/jsonwebtoken@9.0.7': + dependencies: + '@types/node': 22.16.0 + + '@types/methods@1.1.4': {} + + '@types/mime@1.3.5': {} + + '@types/mjml-core@4.15.2': + optional: true + + '@types/mjml@4.7.4': + dependencies: + '@types/mjml-core': 4.15.2 + optional: true + + '@types/ms@2.1.0': {} + + '@types/node@22.16.0': + dependencies: + undici-types: 6.21.0 + + '@types/nodemailer@6.4.17': + dependencies: + '@types/node': 22.16.0 + + '@types/passport-jwt@4.0.1': + dependencies: + '@types/jsonwebtoken': 9.0.10 + '@types/passport-strategy': 0.2.38 + + '@types/passport-strategy@0.2.38': + dependencies: + '@types/express': 5.0.3 + '@types/passport': 1.0.17 + + '@types/passport@1.0.17': + dependencies: + '@types/express': 5.0.3 + + '@types/pug@2.0.10': + optional: true + + '@types/qs@6.14.0': {} + + '@types/range-parser@1.2.7': {} + + '@types/send@0.17.5': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 22.16.0 + + '@types/serve-static@1.15.8': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 22.16.0 + '@types/send': 0.17.5 + + '@types/stack-utils@2.0.3': {} + + '@types/superagent@8.1.9': + dependencies: + '@types/cookiejar': 2.1.5 + '@types/methods': 1.1.4 + '@types/node': 22.16.0 + form-data: 4.0.3 + + '@types/supertest@6.0.3': + dependencies: + '@types/methods': 1.1.4 + '@types/superagent': 8.1.9 + + '@types/uuid@9.0.8': {} + + '@types/validator@13.15.2': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.35.1 + '@typescript-eslint/type-utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.35.1 + eslint: 9.30.1(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.35.1 + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.35.1 + debug: 4.4.1 + eslint: 9.30.1(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.35.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3) + '@typescript-eslint/types': 8.35.1 + debug: 4.4.1 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.35.1': + dependencies: + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/visitor-keys': 8.35.1 + + '@typescript-eslint/tsconfig-utils@8.35.1(typescript@5.8.3)': + dependencies: + typescript: 5.8.3 + + '@typescript-eslint/type-utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.1 + eslint: 9.30.1(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.35.1': {} + + '@typescript-eslint/typescript-estree@8.35.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/project-service': 8.35.1(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3) + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/visitor-keys': 8.35.1 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.35.1 + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) + eslint: 9.30.1(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.35.1': + dependencies: + '@typescript-eslint/types': 8.35.1 + eslint-visitor-keys: 4.2.1 + + '@unrs/resolver-binding-android-arm-eabi@1.10.1': + optional: true + + '@unrs/resolver-binding-android-arm64@1.10.1': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.10.1': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.10.1': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.10.1': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.10.1': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.10.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.10.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.10.1': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.10.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.10.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.10.1': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.10.1': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.10.1': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.10.1': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.10.1': + dependencies: + '@napi-rs/wasm-runtime': 0.2.11 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.10.1': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.10.1': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.10.1': + optional: true + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xhmikosr/archive-type@7.0.0': + dependencies: + file-type: 19.6.0 + + '@xhmikosr/bin-check@7.0.3': + dependencies: + execa: 5.1.1 + isexe: 2.0.0 + + '@xhmikosr/bin-wrapper@13.0.5': + dependencies: + '@xhmikosr/bin-check': 7.0.3 + '@xhmikosr/downloader': 15.0.1 + '@xhmikosr/os-filter-obj': 3.0.0 + bin-version-check: 5.1.0 + + '@xhmikosr/decompress-tar@8.0.1': + dependencies: + file-type: 19.6.0 + is-stream: 2.0.1 + tar-stream: 3.1.7 + + '@xhmikosr/decompress-tarbz2@8.0.2': + dependencies: + '@xhmikosr/decompress-tar': 8.0.1 + file-type: 19.6.0 + is-stream: 2.0.1 + seek-bzip: 2.0.0 + unbzip2-stream: 1.4.3 + + '@xhmikosr/decompress-targz@8.0.1': + dependencies: + '@xhmikosr/decompress-tar': 8.0.1 + file-type: 19.6.0 + is-stream: 2.0.1 + + '@xhmikosr/decompress-unzip@7.0.0': + dependencies: + file-type: 19.6.0 + get-stream: 6.0.1 + yauzl: 3.2.0 + + '@xhmikosr/decompress@10.0.1': + dependencies: + '@xhmikosr/decompress-tar': 8.0.1 + '@xhmikosr/decompress-tarbz2': 8.0.2 + '@xhmikosr/decompress-targz': 8.0.1 + '@xhmikosr/decompress-unzip': 7.0.0 + graceful-fs: 4.2.11 + make-dir: 4.0.0 + strip-dirs: 3.0.0 + + '@xhmikosr/downloader@15.0.1': + dependencies: + '@xhmikosr/archive-type': 7.0.0 + '@xhmikosr/decompress': 10.0.1 + content-disposition: 0.5.4 + defaults: 3.0.0 + ext-name: 5.0.0 + file-type: 19.6.0 + filenamify: 6.0.0 + get-stream: 6.0.1 + got: 13.0.0 + + '@xhmikosr/os-filter-obj@3.0.0': + dependencies: + arch: 3.0.0 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + abbrev@1.1.1: {} + + abbrev@2.0.0: + optional: true + + abstract-logging@2.0.1: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.15.0 + + acorn@7.4.1: + optional: true + + acorn@8.15.0: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + agent-base@7.1.4: {} + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-formats@3.0.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + alce@1.2.0: + dependencies: + esprima: 1.2.5 + estraverse: 1.9.3 + optional: true + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + ansis@3.17.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + append-field@1.0.0: {} + + aproba@2.0.0: {} + + arch@3.0.0: {} + + are-we-there-yet@2.0.0: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + arg@4.1.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-ify@1.0.0: {} + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array-timsort@1.0.3: {} + + array-union@2.1.0: {} + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + asap@2.0.6: {} + + asn1.js@5.4.1: + dependencies: + bn.js: 4.12.2 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + + assert-never@1.4.0: + optional: true + + async-function@1.0.0: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + atomic-sleep@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + avvio@9.1.0: + dependencies: + '@fastify/error': 4.2.0 + fastq: 1.19.1 + + axios@1.10.0: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.3 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + b4a@1.6.7: {} + + babel-jest@29.7.0(@babel/core@7.28.0): + dependencies: + '@babel/core': 7.28.0 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.28.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.28.0): + dependencies: + '@babel/core': 7.28.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.0) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.0) + + babel-preset-jest@29.6.3(@babel/core@7.28.0): + dependencies: + '@babel/core': 7.28.0 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) + + babel-walk@3.0.0-canary-5: + dependencies: + '@babel/types': 7.28.0 + optional: true + + balanced-match@1.0.2: {} + + bare-events@2.5.4: + optional: true + + base64-js@1.5.1: {} + + base64id@2.0.0: {} + + bcrypt@5.1.1: + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + node-addon-api: 5.1.0 + transitivePeerDependencies: + - encoding + - supports-color + + bin-version-check@5.1.0: + dependencies: + bin-version: 6.0.0 + semver: 7.7.2 + semver-truncate: 3.0.0 + + bin-version@6.0.0: + dependencies: + execa: 5.1.1 + find-versions: 5.1.0 + + binary-extensions@2.3.0: + optional: true + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bn.js@4.12.2: {} + + boolbase@1.0.0: + optional: true + + bowser@2.11.0: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.25.1: + dependencies: + caniuse-lite: 1.0.30001726 + electron-to-chromium: 1.5.179 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.25.1) + + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-crc32@0.2.13: {} + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bullmq@5.56.1: + dependencies: + cron-parser: 4.9.0 + ioredis: 5.6.1 + msgpackr: 1.11.4 + node-abort-controller: 3.1.1 + semver: 7.7.2 + tslib: 2.8.1 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + + cache-manager@7.0.0: + dependencies: + keyv: 5.3.4 + + cacheable-lookup@7.0.0: {} + + cacheable-request@10.2.14: + dependencies: + '@types/http-cache-semantics': 4.0.4 + get-stream: 6.0.1 + http-cache-semantics: 4.2.0 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.0.2 + responselike: 3.0.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camel-case@3.0.0: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + optional: true + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001726: {} + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + optional: true + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + char-regex@1.0.2: {} + + character-parser@2.2.0: + dependencies: + is-regex: 1.2.1 + optional: true + + chardet@0.7.0: {} + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.2.2 + css-what: 6.2.2 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + optional: true + + cheerio@1.0.0-rc.12: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + htmlparser2: 8.0.2 + parse5: 7.3.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + optional: true + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + optional: true + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chownr@2.0.0: {} + + chrome-trace-event@1.0.4: {} + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.3: {} + + class-transformer@0.5.1: {} + + class-validator@0.14.2: + dependencies: + '@types/validator': 13.15.2 + libphonenumber-js: 1.12.9 + validator: 13.15.15 + + clean-css@4.2.4: + dependencies: + source-map: 0.6.1 + optional: true + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cli-width@4.1.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + cluster-key-slot@1.1.2: {} + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-support@1.1.3: {} + + colorette@2.0.19: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@10.0.1: {} + + commander@13.1.0: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@6.2.1: {} + + commander@8.3.0: {} + + comment-json@4.2.5: + dependencies: + array-timsort: 1.0.3 + core-util-is: 1.0.3 + esprima: 4.0.1 + has-own-prop: 2.0.0 + repeat-string: 1.6.1 + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + component-emitter@1.3.1: {} + + concat-map@0.0.1: {} + + concat-stream@2.0.0: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + optional: true + + consola@3.4.2: {} + + console-control-strings@1.1.0: {} + + constantinople@4.0.1: + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 + optional: true + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@7.0.2: + dependencies: + compare-func: 2.0.0 + + conventional-commits-parser@5.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + + convert-source-map@2.0.0: {} + + cookie@0.7.2: {} + + cookie@1.0.2: {} + + cookiejar@2.1.4: {} + + core-util-is@1.0.3: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cosmiconfig-typescript-loader@6.1.0(@types/node@22.16.0)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3): + dependencies: + '@types/node': 22.16.0 + cosmiconfig: 9.0.0(typescript@5.8.3) + jiti: 2.4.2 + typescript: 5.8.3 + + cosmiconfig@8.3.6(typescript@5.8.3): + dependencies: + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.8.3 + + cosmiconfig@9.0.0(typescript@5.8.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.8.3 + + create-jest@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-require@1.1.1: {} + + cron-parser@4.9.0: + dependencies: + luxon: 3.6.1 + + cross-spawn@6.0.6: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + optional: true + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + optional: true + + css-what@6.2.2: + optional: true + + dargs@8.1.0: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dataloader@2.2.3: {} + + dayjs@1.11.13: {} + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + decimal.js@10.5.0: {} + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + dedent@1.6.0: {} + + deep-extend@0.6.0: + optional: true + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defaults@3.0.0: {} + + defer-to-connect@2.0.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delayed-stream@1.0.0: {} + + delegates@1.0.0: {} + + denque@2.1.0: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + detect-indent@6.1.0: + optional: true + + detect-libc@2.0.4: {} + + detect-newline@3.1.0: {} + + detect-node@2.1.0: + optional: true + + dezalgo@1.0.4: + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 + + diff-sequences@29.6.3: {} + + diff@4.0.2: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + display-notification@2.0.0: + dependencies: + escape-string-applescript: 1.0.0 + run-applescript: 3.2.0 + optional: true + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctypes@1.1.0: + optional: true + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + optional: true + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + optional: true + + domelementtype@2.3.0: + optional: true + + domhandler@3.3.0: + dependencies: + domelementtype: 2.3.0 + optional: true + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + optional: true + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + optional: true + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + optional: true + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + optional: true + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotenv-expand@12.0.1: + dependencies: + dotenv: 16.6.1 + + dotenv@16.4.7: {} + + dotenv@16.5.0: {} + + dotenv@16.6.1: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + eastasianwidth@0.2.0: {} + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + editorconfig@1.0.4: + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.7.2 + optional: true + + ee-first@1.1.1: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.179: {} + + emittery@0.13.1: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encoding-japanese@2.2.0: + optional: true + + engine.io-parser@5.2.3: {} + + engine.io@6.6.4: + dependencies: + '@types/cors': 2.8.19 + '@types/node': 22.16.0 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.7.2 + cors: 2.8.5 + debug: 4.3.4 + engine.io-parser: 5.2.3 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + enhanced-resolve@5.18.2: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.2 + + entities@2.2.0: + optional: true + + entities@4.5.0: + optional: true + + entities@6.0.1: + optional: true + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.24.0: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + escalade@3.2.0: {} + + escape-goat@3.0.0: + optional: true + + escape-html@1.0.3: {} + + escape-string-applescript@1.0.0: + optional: true + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)): + dependencies: + eslint: 9.30.1(jiti@2.4.2) + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.30.1(jiti@2.4.2)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.1 + eslint: 9.30.1(jiti@2.4.2) + get-tsconfig: 4.10.1 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.14 + unrs-resolver: 1.10.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.30.1(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.30.1(jiti@2.4.2)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.30.1(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-prettier@5.5.1(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))(prettier@3.6.2): + dependencies: + eslint: 9.30.1(jiti@2.4.2) + prettier: 3.6.2 + prettier-linter-helpers: 1.0.0 + synckit: 0.11.8 + optionalDependencies: + '@types/eslint': 9.6.1 + eslint-config-prettier: 10.1.5(eslint@9.30.1(jiti@2.4.2)) + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.30.1(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.21.0 + '@eslint/config-helpers': 0.3.0 + '@eslint/core': 0.14.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.30.1 + '@eslint/plugin-kit': 0.3.3 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + esm@3.2.25: {} + + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + esprima@1.2.5: + optional: true + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@1.9.3: + optional: true + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + eventemitter3@5.0.1: {} + + events@3.3.0: {} + + execa@0.10.0: + dependencies: + cross-spawn: 6.0.6 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + optional: true + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + exit@0.1.2: {} + + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + + ext-list@2.2.2: + dependencies: + mime-db: 1.54.0 + + ext-name@5.0.0: + dependencies: + ext-list: 2.2.2 + sort-keys-length: 1.0.1 + + extend-object@1.0.0: + optional: true + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + fast-decode-uri-component@1.0.1: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-json-stringify@6.0.1: + dependencies: + '@fastify/merge-json-schemas': 0.2.1 + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + fast-uri: 3.0.6 + json-schema-ref-resolver: 2.0.1 + rfdc: 1.4.1 + + fast-levenshtein@2.0.6: {} + + fast-querystring@1.1.2: + dependencies: + fast-decode-uri-component: 1.0.1 + + fast-redact@3.5.0: {} + + fast-safe-stringify@2.1.1: {} + + fast-uri@3.0.6: {} + + fast-xml-parser@5.2.5: + dependencies: + strnum: 2.1.1 + + fastify-multer@2.0.3: + dependencies: + '@fastify/busboy': 1.2.1 + append-field: 1.0.0 + concat-stream: 2.0.0 + fastify-plugin: 2.3.4 + mkdirp: 1.0.4 + on-finished: 2.4.1 + type-is: 1.6.18 + xtend: 4.0.2 + + fastify-plugin@2.3.4: + dependencies: + semver: 7.7.2 + + fastify-plugin@5.0.1: {} + + fastify@5.3.3: + dependencies: + '@fastify/ajv-compiler': 4.0.2 + '@fastify/error': 4.2.0 + '@fastify/fast-json-stringify-compiler': 5.0.3 + '@fastify/proxy-addr': 5.0.0 + abstract-logging: 2.0.1 + avvio: 9.1.0 + fast-json-stringify: 6.0.1 + find-my-way: 9.3.0 + light-my-request: 6.6.0 + pino: 9.7.0 + process-warning: 5.0.0 + rfdc: 1.4.1 + secure-json-parse: 4.0.0 + semver: 7.7.2 + toad-cache: 3.7.0 + + fastify@5.4.0: + dependencies: + '@fastify/ajv-compiler': 4.0.2 + '@fastify/error': 4.2.0 + '@fastify/fast-json-stringify-compiler': 5.0.3 + '@fastify/proxy-addr': 5.0.0 + abstract-logging: 2.0.1 + avvio: 9.1.0 + fast-json-stringify: 6.0.1 + find-my-way: 9.3.0 + light-my-request: 6.6.0 + pino: 9.7.0 + process-warning: 5.0.0 + rfdc: 1.4.1 + secure-json-parse: 4.0.0 + semver: 7.7.2 + toad-cache: 3.7.0 + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fdir@6.4.6(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fflate@0.8.2: {} + + figlet@1.8.1: {} + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-type@19.6.0: + dependencies: + get-stream: 9.0.1 + strtok3: 9.1.1 + token-types: 6.0.3 + uint8array-extras: 1.4.0 + + file-type@21.0.0: + dependencies: + '@tokenizer/inflate': 0.2.7 + strtok3: 10.3.1 + token-types: 6.0.3 + uint8array-extras: 1.4.0 + transitivePeerDependencies: + - supports-color + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + filename-reserved-regex@3.0.0: {} + + filenamify@6.0.0: + dependencies: + filename-reserved-regex: 3.0.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-my-way@9.3.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-querystring: 1.1.2 + safe-regex2: 5.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + find-versions@5.1.0: + dependencies: + semver-regex: 4.0.5 + + fixpack@4.0.0: + dependencies: + alce: 1.2.0 + chalk: 3.0.0 + detect-indent: 6.1.0 + detect-newline: 3.1.0 + extend-object: 1.0.0 + rc: 1.2.8 + optional: true + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + follow-redirects@1.15.9: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fork-ts-checker-webpack-plugin@9.1.0(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.9)): + dependencies: + '@babel/code-frame': 7.27.1 + chalk: 4.1.2 + chokidar: 4.0.3 + cosmiconfig: 8.3.6(typescript@5.8.3) + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.7.2 + tapable: 2.2.2 + typescript: 5.8.3 + webpack: 5.99.6(@swc/core@1.12.9) + + form-data-encoder@2.1.4: {} + + form-data@4.0.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + formidable@3.5.4: + dependencies: + '@paralleldrive/cuid2': 2.2.2 + dezalgo: 1.0.4 + once: 1.4.0 + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-monkey@1.0.6: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + gauge@3.0.2: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + generic-pool@3.9.0: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.3.0: + 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 + + get-package-type@0.1.0: {} + + get-port@5.1.1: + optional: true + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@3.0.0: + optional: true + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + getopts@2.3.0: {} + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.3.12: + dependencies: + foreground-child: 3.3.1 + jackspeak: 2.3.6 + minimatch: 9.0.5 + minipass: 7.1.2 + path-scurry: 1.11.1 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + optional: true + + glob@11.0.1: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.0.3 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + + glob@11.0.3: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.0.3 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + globals@14.0.0: {} + + globals@16.3.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.2.0: {} + + got@13.0.0: + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + optional: true + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-own-prop@2.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + has-unicode@2.0.1: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: + optional: true + + html-escaper@2.0.2: {} + + html-minifier@4.0.0: + dependencies: + camel-case: 3.0.0 + clean-css: 4.2.4 + commander: 2.20.3 + he: 1.2.0 + param-case: 2.1.1 + relateurl: 0.2.7 + uglify-js: 3.19.3 + optional: true + + html-to-text@9.0.5: + dependencies: + '@selderee/plugin-htmlparser2': 0.11.0 + deepmerge: 4.3.1 + dom-serializer: 2.0.0 + htmlparser2: 8.0.2 + selderee: 0.11.0 + optional: true + + htmlparser2@5.0.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 3.3.0 + domutils: 2.8.0 + entities: 2.2.0 + optional: true + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + optional: true + + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + optional: true + + http-cache-semantics@4.2.0: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + http_ece@1.2.0: {} + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + human-signals@5.0.0: {} + + husky@9.1.7: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + import-meta-resolve@4.1.0: {} + + imurmurhash@0.1.4: {} + + index-to-position@1.1.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: + optional: true + + ini@4.1.1: {} + + inspect-with-kind@1.0.5: + dependencies: + kind-of: 6.0.3 + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + interpret@2.2.0: {} + + ioredis@5.6.1: + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.4.1 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + + ipaddr.js@2.2.0: {} + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + optional: true + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-bun-module@2.0.0: + dependencies: + semver: 7.7.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-docker@2.2.1: + optional: true + + is-expression@4.0.0: + dependencies: + acorn: 7.4.1 + object-assign: 4.1.1 + optional: true + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + + is-generator-fn@2.1.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-interactive@1.0.0: {} + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-plain-obj@1.1.0: {} + + is-promise@2.2.2: + optional: true + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@1.1.0: + optional: true + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-stream@4.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-text-path@2.0.0: + dependencies: + text-extensions: 2.4.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-unicode-supported@0.1.0: {} + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + optional: true + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.28.0 + '@babel/parser': 7.28.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.28.0 + '@babel/parser': 7.28.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.1 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + iterare@1.2.1: {} + + jackspeak@2.3.6: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + optional: true + + jackspeak@4.1.1: + dependencies: + '@isaacs/cliui': 8.0.2 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.16.0 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.6.0 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)): + dependencies: + '@babel/core': 7.28.0 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.28.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.16.0 + ts-node: 10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.16.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.16.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.16.0 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.10 + resolve.exports: 2.0.3 + slash: 3.0.0 + + jest-runner@29.7.0: + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.16.0 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.16.0 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.28.0 + '@babel/generator': 7.28.0 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) + '@babel/types': 7.28.0 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.16.0 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.16.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 22.16.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.16.0 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jiti@2.4.2: {} + + js-beautify@1.15.4: + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.4 + glob: 10.4.5 + js-cookie: 3.0.5 + nopt: 7.2.1 + optional: true + + js-cookie@3.0.5: + optional: true + + js-stringify@1.0.2: + optional: true + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-ref-resolver@2.0.1: + dependencies: + dequal: 2.0.3 + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonc-parser@3.3.1: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsonwebtoken@9.0.2: + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.7.2 + + jstransformer@1.0.0: + dependencies: + is-promise: 2.2.2 + promise: 7.3.1 + optional: true + + juice@10.0.1: + dependencies: + cheerio: 1.0.0-rc.12 + commander: 6.2.1 + mensch: 0.3.4 + slick: 1.12.2 + web-resource-inliner: 6.0.1 + transitivePeerDependencies: + - encoding + optional: true + + jwa@1.4.2: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@3.2.2: + dependencies: + jwa: 1.4.2 + safe-buffer: 5.2.1 + + jws@4.0.0: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + keyv@5.3.4: + dependencies: + '@keyv/serialize': 1.0.3 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + knex@3.1.0(pg@8.16.0): + dependencies: + colorette: 2.0.19 + commander: 10.0.1 + debug: 4.3.4 + escalade: 3.2.0 + esm: 3.2.25 + get-package-type: 0.1.0 + getopts: 2.3.0 + interpret: 2.2.0 + lodash: 4.17.21 + pg-connection-string: 2.6.2 + rechoir: 0.8.0 + resolve-from: 5.0.0 + tarn: 3.0.2 + tildify: 2.0.0 + optionalDependencies: + pg: 8.16.0 + transitivePeerDependencies: + - supports-color + + leac@0.6.0: + optional: true + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + libbase64@1.3.0: + optional: true + + libmime@5.3.7: + dependencies: + encoding-japanese: 2.2.0 + iconv-lite: 0.6.3 + libbase64: 1.3.0 + libqp: 2.1.1 + optional: true + + libphonenumber-js@1.12.9: {} + + libqp@2.1.1: + optional: true + + light-my-request@6.6.0: + dependencies: + cookie: 1.0.2 + process-warning: 4.0.1 + set-cookie-parser: 2.7.1 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + optional: true + + lint-staged@15.5.2: + dependencies: + chalk: 5.4.1 + commander: 13.1.0 + debug: 4.4.1 + execa: 8.0.1 + lilconfig: 3.1.3 + listr2: 8.3.3 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.8.0 + transitivePeerDependencies: + - supports-color + + liquidjs@10.21.1: + dependencies: + commander: 10.0.1 + optional: true + + listr2@8.3.3: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + + load-esm@1.0.2: {} + + loader-runner@4.3.0: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.defaults@4.2.0: {} + + lodash.includes@4.3.0: {} + + lodash.isarguments@3.1.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.kebabcase@4.1.1: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.once@4.1.1: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + lower-case@1.1.4: + optional: true + + lowercase-keys@3.0.0: {} + + lru-cache@10.4.3: {} + + lru-cache@11.1.0: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + luxon@3.6.1: {} + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.4 + + mailparser@3.7.4: + dependencies: + encoding-japanese: 2.2.0 + he: 1.2.0 + html-to-text: 9.0.5 + iconv-lite: 0.6.3 + libmime: 5.3.7 + linkify-it: 5.0.0 + mailsplit: 5.4.5 + nodemailer: 7.0.4 + punycode.js: 2.3.1 + tlds: 1.259.0 + optional: true + + mailsplit@5.4.5: + dependencies: + libbase64: 1.3.0 + libmime: 5.3.7 + libqp: 2.1.1 + optional: true + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-dir@4.0.0: + dependencies: + semver: 7.7.2 + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + math-intrinsics@1.1.0: {} + + media-typer@0.3.0: {} + + memfs@3.5.3: + dependencies: + fs-monkey: 1.0.6 + + mensch@0.3.4: + optional: true + + meow@12.1.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mikro-orm@6.4.16: {} + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@2.6.0: {} + + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + mimic-response@3.1.0: {} + + mimic-response@4.0.0: {} + + minimalistic-assert@1.0.1: {} + + minimatch@10.0.3: + dependencies: + '@isaacs/brace-expansion': 5.0.0 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.2 + + minimatch@9.0.1: + dependencies: + brace-expansion: 2.0.2 + optional: true + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minimist@1.2.8: {} + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mjml-accordion@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-body@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-button@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-carousel@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-cli@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + chokidar: 3.6.0 + glob: 10.3.12 + html-minifier: 4.0.0 + js-beautify: 1.15.4 + lodash: 4.17.21 + minimatch: 9.0.5 + mjml-core: 4.15.3 + mjml-migrate: 4.15.3 + mjml-parser-xml: 4.15.3 + mjml-validator: 4.15.3 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + optional: true + + mjml-column@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-core@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + cheerio: 1.0.0-rc.12 + detect-node: 2.1.0 + html-minifier: 4.0.0 + js-beautify: 1.15.4 + juice: 10.0.1 + lodash: 4.17.21 + mjml-migrate: 4.15.3 + mjml-parser-xml: 4.15.3 + mjml-validator: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-divider@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-group@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-head-attributes@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-head-breakpoint@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-head-font@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-head-html-attributes@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-head-preview@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-head-style@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-head-title@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-head@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-hero@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-image@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-migrate@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + js-beautify: 1.15.4 + lodash: 4.17.21 + mjml-core: 4.15.3 + mjml-parser-xml: 4.15.3 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + optional: true + + mjml-navbar@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-parser-xml@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + detect-node: 2.1.0 + htmlparser2: 9.1.0 + lodash: 4.17.21 + optional: true + + mjml-preset-core@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + mjml-accordion: 4.15.3 + mjml-body: 4.15.3 + mjml-button: 4.15.3 + mjml-carousel: 4.15.3 + mjml-column: 4.15.3 + mjml-divider: 4.15.3 + mjml-group: 4.15.3 + mjml-head: 4.15.3 + mjml-head-attributes: 4.15.3 + mjml-head-breakpoint: 4.15.3 + mjml-head-font: 4.15.3 + mjml-head-html-attributes: 4.15.3 + mjml-head-preview: 4.15.3 + mjml-head-style: 4.15.3 + mjml-head-title: 4.15.3 + mjml-hero: 4.15.3 + mjml-image: 4.15.3 + mjml-navbar: 4.15.3 + mjml-raw: 4.15.3 + mjml-section: 4.15.3 + mjml-social: 4.15.3 + mjml-spacer: 4.15.3 + mjml-table: 4.15.3 + mjml-text: 4.15.3 + mjml-wrapper: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-raw@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-section@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-social@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-spacer@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-table@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-text@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml-validator@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + optional: true + + mjml-wrapper@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + lodash: 4.17.21 + mjml-core: 4.15.3 + mjml-section: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mjml@4.15.3: + dependencies: + '@babel/runtime': 7.27.6 + mjml-cli: 4.15.3 + mjml-core: 4.15.3 + mjml-migrate: 4.15.3 + mjml-preset-core: 4.15.3 + mjml-validator: 4.15.3 + transitivePeerDependencies: + - encoding + optional: true + + mkdirp@1.0.4: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + msgpackr-extract@3.0.3: + dependencies: + node-gyp-build-optional-packages: 5.2.2 + optionalDependencies: + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + optional: true + + msgpackr@1.11.4: + optionalDependencies: + msgpackr-extract: 3.0.3 + + mute-stream@2.0.0: {} + + napi-postinstall@0.3.0: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + neo-async@2.6.2: {} + + nice-try@1.0.5: + optional: true + + no-case@2.3.2: + dependencies: + lower-case: 1.1.4 + optional: true + + node-abort-controller@3.1.1: {} + + node-addon-api@5.1.0: {} + + node-emoji@1.11.0: + dependencies: + lodash: 4.17.21 + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-gyp-build-optional-packages@5.2.2: + dependencies: + detect-libc: 2.0.4 + optional: true + + node-int64@0.4.0: {} + + node-releases@2.0.19: {} + + nodemailer@6.10.1: + optional: true + + nodemailer@7.0.4: {} + + nopt@5.0.0: + dependencies: + abbrev: 1.1.1 + + nopt@7.2.1: + dependencies: + abbrev: 2.0.0 + optional: true + + normalize-path@3.0.0: {} + + normalize-url@8.0.2: {} + + npm-run-path@2.0.2: + dependencies: + path-key: 2.0.1 + optional: true + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npmlog@5.0.1: + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + optional: true + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + on-exit-leak-free@2.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@7.4.2: + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + optional: true + + openai@5.10.2: {} + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-tmpdir@1.0.2: {} + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-cancelable@3.0.0: {} + + p-event@4.2.0: + dependencies: + p-timeout: 3.2.0 + optional: true + + p-finally@1.0.0: + optional: true + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.1 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + optional: true + + p-try@2.2.0: {} + + p-wait-for@3.2.0: + dependencies: + p-timeout: 3.2.0 + optional: true + + package-json-from-dist@1.0.1: {} + + param-case@2.1.1: + dependencies: + no-case: 2.3.2 + optional: true + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parent-require@1.0.0: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.27.1 + index-to-position: 1.1.0 + type-fest: 4.41.0 + + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.3.0 + optional: true + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + optional: true + + parseley@0.12.1: + dependencies: + leac: 0.6.0 + peberminta: 0.9.0 + optional: true + + passport-jwt@4.0.1: + dependencies: + jsonwebtoken: 9.0.2 + passport-strategy: 1.0.0 + + passport-strategy@1.0.0: {} + + passport@0.7.0: + dependencies: + passport-strategy: 1.0.0 + pause: 0.0.1 + utils-merge: 1.0.1 + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@2.0.1: + optional: true + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.1.0 + minipass: 7.1.2 + + path-to-regexp@8.2.0: {} + + path-type@4.0.0: {} + + pause@0.0.1: {} + + peberminta@0.9.0: + optional: true + + peek-readable@5.4.2: {} + + pend@1.2.0: {} + + pg-cloudflare@1.2.7: + optional: true + + pg-connection-string@2.6.2: {} + + pg-connection-string@2.9.1: {} + + pg-int8@1.0.1: {} + + pg-pool@3.10.1(pg@8.16.0): + dependencies: + pg: 8.16.0 + + pg-protocol@1.10.3: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg@8.16.0: + dependencies: + pg-connection-string: 2.9.1 + pg-pool: 3.10.1(pg@8.16.0) + pg-protocol: 1.10.3 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.2.7 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pidtree@0.6.0: {} + + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + + pino-std-serializers@7.0.0: {} + + pino@9.7.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.0.0 + process-warning: 5.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.0 + thread-stream: 3.1.0 + + pirates@4.0.7: {} + + piscina@4.9.2: + optionalDependencies: + '@napi-rs/nice': 1.0.4 + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pluralize@8.0.0: {} + + possible-typed-array-names@1.1.0: {} + + postgres-array@2.0.0: {} + + postgres-array@3.0.4: {} + + postgres-bytea@1.0.0: {} + + postgres-date@1.0.7: {} + + postgres-date@2.1.0: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + postgres-interval@4.0.2: {} + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@3.6.2: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + preview-email@3.1.0: + dependencies: + ci-info: 3.9.0 + display-notification: 2.0.0 + fixpack: 4.0.0 + get-port: 5.1.1 + mailparser: 3.7.4 + nodemailer: 6.10.1 + open: 7.4.2 + p-event: 4.2.0 + p-wait-for: 3.2.0 + pug: 3.0.3 + uuid: 9.0.1 + optional: true + + process-warning@4.0.1: {} + + process-warning@5.0.0: {} + + promise@7.3.1: + dependencies: + asap: 2.0.6 + optional: true + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + proto-list@1.2.4: + optional: true + + proxy-from-env@1.1.0: {} + + pug-attrs@3.0.0: + dependencies: + constantinople: 4.0.1 + js-stringify: 1.0.2 + pug-runtime: 3.0.1 + optional: true + + pug-code-gen@3.0.3: + dependencies: + constantinople: 4.0.1 + doctypes: 1.1.0 + js-stringify: 1.0.2 + pug-attrs: 3.0.0 + pug-error: 2.1.0 + pug-runtime: 3.0.1 + void-elements: 3.1.0 + with: 7.0.2 + optional: true + + pug-error@2.1.0: + optional: true + + pug-filters@4.0.0: + dependencies: + constantinople: 4.0.1 + jstransformer: 1.0.0 + pug-error: 2.1.0 + pug-walk: 2.0.0 + resolve: 1.22.10 + optional: true + + pug-lexer@5.0.1: + dependencies: + character-parser: 2.2.0 + is-expression: 4.0.0 + pug-error: 2.1.0 + optional: true + + pug-linker@4.0.0: + dependencies: + pug-error: 2.1.0 + pug-walk: 2.0.0 + optional: true + + pug-load@3.0.0: + dependencies: + object-assign: 4.1.1 + pug-walk: 2.0.0 + optional: true + + pug-parser@6.0.0: + dependencies: + pug-error: 2.1.0 + token-stream: 1.0.0 + optional: true + + pug-runtime@3.0.1: + optional: true + + pug-strip-comments@2.0.0: + dependencies: + pug-error: 2.1.0 + optional: true + + pug-walk@2.0.0: + optional: true + + pug@3.0.3: + dependencies: + pug-code-gen: 3.0.3 + pug-filters: 4.0.0 + pug-lexer: 5.0.1 + pug-linker: 4.0.0 + pug-load: 3.0.0 + pug-parser: 6.0.0 + pug-runtime: 3.0.1 + pug-strip-comments: 2.0.0 + optional: true + + punycode.js@2.3.1: + optional: true + + punycode@2.3.1: {} + + pure-rand@6.1.0: {} + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + quick-format-unescaped@4.0.4: {} + + quick-lru@5.1.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + optional: true + + react-is@18.3.1: {} + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + optional: true + + readdirp@4.1.2: {} + + real-require@0.2.0: {} + + rechoir@0.8.0: + dependencies: + resolve: 1.22.10 + + redis-errors@1.2.0: {} + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + + reflect-metadata@0.2.2: {} + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + relateurl@0.2.7: + optional: true + + repeat-string@1.6.1: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-alpn@1.2.1: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@2.0.3: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@3.0.0: + dependencies: + lowercase-keys: 3.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + ret@0.5.0: {} + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + run-applescript@3.2.0: + dependencies: + execa: 0.10.0 + optional: true + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.1: + dependencies: + tslib: 2.8.1 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-regex2@5.0.0: + dependencies: + ret: 0.5.0 + + safe-stable-stringify@2.5.0: {} + + safer-buffer@2.1.2: {} + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.3.2: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + secure-json-parse@4.0.0: {} + + seek-bzip@2.0.0: + dependencies: + commander: 6.2.1 + + selderee@0.11.0: + dependencies: + parseley: 0.12.1 + optional: true + + semver-regex@4.0.5: {} + + semver-truncate@3.0.0: + dependencies: + semver: 7.7.2 + + semver@5.7.2: + optional: true + + semver@6.3.1: {} + + semver@7.7.2: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + set-blocking@2.0.0: {} + + set-cookie-parser@2.7.1: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + setprototypeof@1.2.0: {} + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: + optional: true + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + slick@1.12.2: + optional: true + + slugify@1.6.6: {} + + socket.io-adapter@2.5.5: + dependencies: + debug: 4.3.4 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.4: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + socket.io@4.8.1: + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.4 + engine.io: 6.6.4 + socket.io-adapter: 2.5.5 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + sonic-boom@4.2.0: + dependencies: + atomic-sleep: 1.0.0 + + sort-keys-length@1.0.1: + dependencies: + sort-keys: 1.1.2 + + sort-keys@1.1.2: + dependencies: + is-plain-obj: 1.1.0 + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + sqlstring@2.3.3: {} + + stable-hash@0.0.5: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + standard-as-callback@2.1.0: {} + + statuses@2.0.1: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + streamx@2.22.1: + dependencies: + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + optionalDependencies: + bare-events: 2.5.4 + + string-argv@0.3.2: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} + + strip-bom@4.0.0: {} + + strip-dirs@3.0.0: + dependencies: + inspect-with-kind: 1.0.5 + is-plain-obj: 1.1.0 + + strip-eof@1.0.0: + optional: true + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-json-comments@2.0.1: + optional: true + + strip-json-comments@3.1.1: {} + + strnum@2.1.1: {} + + strtok3@10.3.1: + dependencies: + '@tokenizer/token': 0.3.0 + + strtok3@9.1.1: + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 5.4.2 + + superagent@10.2.1: + dependencies: + component-emitter: 1.3.1 + cookiejar: 2.1.4 + debug: 4.4.1 + fast-safe-stringify: 2.1.1 + form-data: 4.0.3 + formidable: 3.5.4 + methods: 1.1.2 + mime: 2.6.0 + qs: 6.14.0 + transitivePeerDependencies: + - supports-color + + supertest@7.1.1: + dependencies: + methods: 1.1.2 + superagent: 10.2.1 + transitivePeerDependencies: + - supports-color + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + swagger-ui-dist@5.21.0: + dependencies: + '@scarf/scarf': 1.4.0 + + symbol-observable@4.0.0: {} + + synckit@0.11.8: + dependencies: + '@pkgr/core': 0.2.7 + + tapable@2.2.2: {} + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.7 + fast-fifo: 1.3.2 + streamx: 2.22.1 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + tarn@3.0.2: {} + + terser-webpack-plugin@5.3.14(@swc/core@1.12.9)(webpack@5.99.6(@swc/core@1.12.9)): + dependencies: + '@jridgewell/trace-mapping': 0.3.29 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.43.1 + webpack: 5.99.6(@swc/core@1.12.9) + optionalDependencies: + '@swc/core': 1.12.9 + + terser@5.43.1: + dependencies: + '@jridgewell/source-map': 0.3.10 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-decoder@1.2.3: + dependencies: + b4a: 1.6.7 + + text-decoding@1.0.0: {} + + text-extensions@2.4.0: {} + + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 + + through@2.3.8: {} + + tildify@2.0.0: {} + + tinyexec@1.0.1: {} + + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 + + tlds@1.259.0: + optional: true + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toad-cache@3.7.0: {} + + toidentifier@1.0.1: {} + + token-stream@1.0.0: + optional: true + + token-types@6.0.3: + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + + tr46@0.0.3: {} + + tree-kill@1.2.2: {} + + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + ts-jest@29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)))(typescript@5.8.3): + dependencies: + bs-logger: 0.2.6 + ejs: 3.1.10 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.2 + type-fest: 4.41.0 + typescript: 5.8.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.28.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.28.0) + jest-util: 29.7.0 + + ts-loader@9.5.2(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.9)): + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.18.2 + micromatch: 4.0.8 + semver: 7.7.2 + source-map: 0.7.4 + typescript: 5.8.3 + webpack: 5.99.6(@swc/core@1.12.9) + + ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.16.0 + acorn: 8.15.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.12.9 + + tsconfig-paths-webpack-plugin@4.2.0: + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.18.2 + tapable: 2.2.2 + tsconfig-paths: 4.2.0 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + type-fest@4.41.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typedarray@0.0.6: {} + + typescript-eslint@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.30.1(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + typescript@5.8.3: {} + + uc.micro@2.1.0: + optional: true + + uglify-js@3.19.3: + optional: true + + uid@2.0.2: + dependencies: + '@lukeed/csprng': 1.1.0 + + uint8array-extras@1.4.0: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + + undici-types@6.21.0: {} + + unicorn-magic@0.1.0: {} + + universalify@2.0.1: {} + + unrs-resolver@1.10.1: + dependencies: + napi-postinstall: 0.3.0 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.10.1 + '@unrs/resolver-binding-android-arm64': 1.10.1 + '@unrs/resolver-binding-darwin-arm64': 1.10.1 + '@unrs/resolver-binding-darwin-x64': 1.10.1 + '@unrs/resolver-binding-freebsd-x64': 1.10.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.10.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.10.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.10.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.10.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.10.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.10.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.10.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.10.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.10.1 + '@unrs/resolver-binding-linux-x64-musl': 1.10.1 + '@unrs/resolver-binding-wasm32-wasi': 1.10.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.10.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.10.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.10.1 + + update-browserslist-db@1.1.3(browserslist@4.25.1): + dependencies: + browserslist: 4.25.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + upper-case@1.1.3: + optional: true + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + uuid@11.1.0: {} + + uuid@9.0.1: {} + + v8-compile-cache-lib@3.0.1: {} + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.29 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + valid-data-url@3.0.1: + optional: true + + validator@13.15.15: {} + + vary@1.1.2: {} + + void-elements@3.1.0: + optional: true + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + watchpack@2.4.4: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + web-push@3.6.7: + dependencies: + asn1.js: 5.4.1 + http_ece: 1.2.0 + https-proxy-agent: 7.0.6 + jws: 4.0.0 + minimist: 1.2.8 + transitivePeerDependencies: + - supports-color + + web-resource-inliner@6.0.1: + dependencies: + ansi-colors: 4.1.3 + escape-goat: 3.0.0 + htmlparser2: 5.0.1 + mime: 2.6.0 + node-fetch: 2.7.0 + valid-data-url: 3.0.1 + transitivePeerDependencies: + - encoding + optional: true + + webidl-conversions@3.0.1: {} + + webpack-node-externals@3.0.0: {} + + webpack-sources@3.3.3: {} + + webpack@5.99.6(@swc/core@1.12.9): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + browserslist: 4.25.1 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.2 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.2 + tapable: 2.2.2 + terser-webpack-plugin: 5.3.14(@swc/core@1.12.9)(webpack@5.99.6(@swc/core@1.12.9)) + watchpack: 2.4.4 + webpack-sources: 3.3.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + optional: true + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + with@7.0.2: + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 + assert-never: 1.4.0 + babel-walk: 3.0.0-canary-5 + optional: true + + word-wrap@1.2.5: {} + + wordwrap@1.0.0: + optional: true + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@8.17.1: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@2.8.0: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@3.2.0: + dependencies: + buffer-crc32: 0.2.13 + pend: 1.2.0 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.2.1: {} + + yoctocolors-cjs@2.1.2: {} \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..e31ee94 --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +up diff --git a/src/app.module.ts b/src/app.module.ts new file mode 100644 index 0000000..2013949 --- /dev/null +++ b/src/app.module.ts @@ -0,0 +1,67 @@ +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { Module } from '@nestjs/common'; +import dataBaseConfig from './config/mikro-orm.config'; +import { ConfigModule } from '@nestjs/config'; +import { UserModule } from './modules/users/user.module'; +import { UtilsModule } from './modules/utils/utils.module'; +import { AuthModule } from './modules/auth/auth.module'; +import { UploaderModule } from './modules/uploader/uploader.module'; +import { AdminModule } from './modules/admin/admin.module'; +import { ThrottlerModule } from '@nestjs/throttler'; +import { ScheduleModule } from '@nestjs/schedule'; +import { RestaurantsModule } from './modules/restaurants/restaurants.module'; +import { FoodModule } from './modules/foods/food.module'; +import { CartModule } from './modules/cart/cart.module'; +import { RolesModule } from './modules/roles/roles.module'; +import { PaymentsModule } from './modules/payments/payments.module'; +import { DeliveryModule } from './modules/delivery/delivery.module'; +import { OrdersModule } from './modules/orders/orders.module'; +import { CouponModule } from './modules/coupons/coupon.module'; +import { ReviewModule } from './modules/review/review.module'; +import { NotificationsModule } from './modules/notifications/notifications.module'; +import { EventEmitterModule } from '@nestjs/event-emitter'; +import { PagerModule } from './modules/pager/pager.module'; +import { ContactModule } from './modules/contact/contact.module'; +import { InventoryModule } from './modules/inventory/inventory.module'; +import { IconsModule } from './modules/icons/icons.module'; +import { CacheModule } from '@nestjs/cache-manager'; +import { cacheConfig } from './config/cache.config'; + +@Module({ + imports: [ + ConfigModule.forRoot({ isGlobal: true, cache: true }), + CacheModule.registerAsync(cacheConfig()), + MikroOrmModule.forRootAsync(dataBaseConfig), + UserModule, + UtilsModule, + AuthModule, + UploaderModule, + AdminModule, + ThrottlerModule.forRoot([ + { + ttl: 60, // time window in seconds + limit: 5, // max requests per window + }, + ]), + ScheduleModule.forRoot(), + RestaurantsModule, + FoodModule, + CartModule, + RolesModule, + PaymentsModule, + DeliveryModule, + OrdersModule, + CouponModule, + ReviewModule, + NotificationsModule, + EventEmitterModule.forRoot(), + PagerModule, + ContactModule, + InventoryModule, + IconsModule, + ], + controllers: [], + providers: [], + // exports: [CacheService], +}) +export class AppModule {} diff --git a/src/common/constants/index.ts b/src/common/constants/index.ts new file mode 100755 index 0000000..d2b97d8 --- /dev/null +++ b/src/common/constants/index.ts @@ -0,0 +1,20 @@ +// export const AUTH_THROTTLE = "AUTH_THROTTLE"; +export const AI_CONFIG = 'AI_CONFIG'; +export const MIKRO_ORM_QUERY_LOGGER = 'MIKRO_ORM_QUERY_LOGGER'; +export const NAJVA_CONFIG = 'NAJVA_CONFIG'; +export const AUTH_THROTTLE_TTL = 1 * 60 * 1000; +export const AUTH_THROTTLE_LIMIT = 5; +export const AUTH__REFRESH_THROTTLE_TTL = 10 * 60 * 1000; +export const AUTH__REFRESH_THROTTLE_LIMIT = 10; +// +export const CONSOLE_JWT_STRATEGY_NAME = 'console_jwt_strategy'; +export const LOCAL_JWT_STRATEGY_NAME = 'local_jwt_strategy'; + +export const API_HEADER_SLUG = { + name: 'X-Slug', + required: true, + schema: { + type: 'string', + default: 'zhivan', + }, +}; diff --git a/src/common/decorators/admin-id.decorator.ts b/src/common/decorators/admin-id.decorator.ts new file mode 100644 index 0000000..2d6d601 --- /dev/null +++ b/src/common/decorators/admin-id.decorator.ts @@ -0,0 +1,18 @@ +import { createParamDecorator, type ExecutionContext } from '@nestjs/common'; +import type { Request } from 'express'; + +/** + * Decorator to extract userId from the authenticated request. + * Must be used after AdminAuthGuard or AuthGuard that sets request.userId. + * + * @example + * @Get('/profile') + * @UseGuards(AdminAuthGuard) + * getProfile(@UserId() userId: string) { + * return this.userService.findById(userId); + * } + */ +export const AdminId = createParamDecorator((data: unknown, ctx: ExecutionContext): string => { + const request = ctx.switchToHttp().getRequest(); + return request.adminId || ''; +}); diff --git a/src/common/decorators/index.ts b/src/common/decorators/index.ts new file mode 100644 index 0000000..6a12fec --- /dev/null +++ b/src/common/decorators/index.ts @@ -0,0 +1,3 @@ +export { UserId } from './user-id.decorator'; +export { RestId } from './rest-id.decorator'; +export { RateLimit } from './rate-limit.decorator'; diff --git a/src/common/decorators/permissions.decorator.ts b/src/common/decorators/permissions.decorator.ts new file mode 100644 index 0000000..a08c388 --- /dev/null +++ b/src/common/decorators/permissions.decorator.ts @@ -0,0 +1,5 @@ +import { SetMetadata } from '@nestjs/common'; + +export const PERMISSIONS_KEY = 'permissions'; + +export const Permissions = (...permissions: string[]) => SetMetadata(PERMISSIONS_KEY, permissions); diff --git a/src/common/decorators/rate-limit.decorator.ts b/src/common/decorators/rate-limit.decorator.ts new file mode 100644 index 0000000..f21993a --- /dev/null +++ b/src/common/decorators/rate-limit.decorator.ts @@ -0,0 +1,18 @@ +import { UseGuards, applyDecorators } from '@nestjs/common'; +import { Throttle, ThrottlerGuard } from '@nestjs/throttler'; + +import { + AUTH_THROTTLE_LIMIT, + AUTH_THROTTLE_TTL, + AUTH__REFRESH_THROTTLE_LIMIT, + AUTH__REFRESH_THROTTLE_TTL, +} from '../constants'; + +export const RateLimit = (limit: number, ttl: number) => + applyDecorators(Throttle({ default: { limit, ttl } }), UseGuards(ThrottlerGuard)); + +// Predefined rate limits for common scenarios +export const StrictRateLimit = () => RateLimit(AUTH_THROTTLE_LIMIT, AUTH_THROTTLE_TTL); // 5 requests per minute +export const StandardRateLimit = () => RateLimit(30, 60000); // 30 requests per minute +export const MailSendRateLimit = () => RateLimit(10, 60000); // 10 emails per minute +export const RefreshTokenRateLimit = () => RateLimit(AUTH__REFRESH_THROTTLE_LIMIT, AUTH__REFRESH_THROTTLE_TTL); // 10 emails per minute diff --git a/src/common/decorators/rest-id.decorator.ts b/src/common/decorators/rest-id.decorator.ts new file mode 100644 index 0000000..afebf8c --- /dev/null +++ b/src/common/decorators/rest-id.decorator.ts @@ -0,0 +1,18 @@ +import { createParamDecorator, type ExecutionContext } from '@nestjs/common'; +import type { Request } from 'express'; + +/** + * Decorator to extract restId from the authenticated request. + * Must be used after AdminAuthGuard or AuthGuard that sets request.restId. + * + * @example + * @Get('/restaurants') + * @UseGuards(AdminAuthGuard) + * getRestaurants(@RestId() restId: string) { + * return this.restaurantService.findById(restId); + * } + */ +export const RestId = createParamDecorator((data: unknown, ctx: ExecutionContext): string => { + const request = ctx.switchToHttp().getRequest(); + return request.restId || ''; +}); diff --git a/src/common/decorators/rest-slug.decorator.ts b/src/common/decorators/rest-slug.decorator.ts new file mode 100644 index 0000000..16296d0 --- /dev/null +++ b/src/common/decorators/rest-slug.decorator.ts @@ -0,0 +1,7 @@ +import { createParamDecorator, type ExecutionContext } from '@nestjs/common'; +import type { Request } from 'express'; + +export const RestSlug = createParamDecorator((data: unknown, ctx: ExecutionContext): string => { + const request = ctx.switchToHttp().getRequest(); + return request.slug || ''; +}); diff --git a/src/common/decorators/user-id.decorator.ts b/src/common/decorators/user-id.decorator.ts new file mode 100644 index 0000000..eb0c551 --- /dev/null +++ b/src/common/decorators/user-id.decorator.ts @@ -0,0 +1,18 @@ +import { createParamDecorator, type ExecutionContext } from '@nestjs/common'; +import type { Request } from 'express'; + +/** + * Decorator to extract userId from the authenticated request. + * Must be used after AdminAuthGuard or AuthGuard that sets request.userId. + * + * @example + * @Get('/profile') + * @UseGuards(AdminAuthGuard) + * getProfile(@UserId() userId: string) { + * return this.userService.findById(userId); + * } + */ +export const UserId = createParamDecorator((data: unknown, ctx: ExecutionContext): string => { + const request = ctx.switchToHttp().getRequest(); + return request.userId || ''; +}); diff --git a/src/common/entities/base.entity.ts b/src/common/entities/base.entity.ts new file mode 100755 index 0000000..87da4e7 --- /dev/null +++ b/src/common/entities/base.entity.ts @@ -0,0 +1,25 @@ +import { Index, PrimaryKey, Property, Filter, OptionalProps } from '@mikro-orm/core'; +import { ulid } from 'ulid'; + +@Filter({ name: 'notDeleted', cond: { deletedAt: null }, default: true }) +@Index({ properties: ['deletedAt'] }) +@Index({ properties: ['createdAt'] }) +export abstract class BaseEntity { + [OptionalProps]?: 'id' | 'createdAt' | 'updatedAt' | 'deletedAt'; + + @PrimaryKey({ type: 'string', columnType: 'char(26)' }) + id: string = ulid(); + + @Property({ defaultRaw: 'now()', columnType: 'timestamptz' }) + createdAt: Date = new Date(); + + @Property({ + onUpdate: () => new Date(), + defaultRaw: 'now()', + columnType: 'timestamptz', + }) + updatedAt: Date = new Date(); + + @Property({ nullable: true }) + deletedAt?: Date; +} diff --git a/src/common/enums/message.enum.ts b/src/common/enums/message.enum.ts new file mode 100755 index 0000000..51e6175 --- /dev/null +++ b/src/common/enums/message.enum.ts @@ -0,0 +1,781 @@ +export const enum AuthMessage { + UNAUTHORIZED_ACCESS = 'شما دسترسی لازم برای این عملیات را ندارید.', + PHONE_REGISTERED = 'شماره ثبت شد', + INVALID_PHONE_FORMAT = 'فرمت شماره تلفن صحیح نیست', + OTP_SENT = 'کد یکبار مصرف به شماره شما ارسال شد.', + INVALID_PHONE = 'شماره موبایل اشتباه می باشد', + INVALID_CREDENTIAL = 'شماره موبایل یا رمز عبور اشتباه می باشد', + OTP_FAILED = 'کد یا شماره موبایل اشتباه است', + LOGIN_SUCCESS = 'ورود با موفقیت انجام شد', + PASSWORD_LOGIN_SUCCESS = 'با موفقیت وارد شدید', + FORGOT_PASSWORD_SUCCESS = 'درخواست فراموشی رمز عبور با موفقیت ثبت شد', + PASSWORD_SET_SUCCESS = 'پسورد با موفقیت تنظیم شد', + PASSWORD_UPDATE_SUCCESS = 'رمز عبور شما تغییر کرد', + INVALID_OTP = 'کد صحیح نمی‌باشد یا منقضی شده است', + PASSWORD_MISMATCH = 'رمز عبور یکسان نیست', + INVALID_PASSWORD = 'ایمیل یا رمز عبور اشتباه است', + INVALID_REPEAT_PASSWORD = 'تکرار رمز عبور اشتباه است', + EMAIL_NOT_EMPTY = 'ایمیل نمیتواند خالی باشد.', + INVALID_EMAIL_FORMAT = 'فرمت ایمیل صحیح نیست', + PasswordNotEmpty = 'پسورد نمیتواند خالی باشد.', + USER_NOT_FOUND = 'کاربری با این شماره وجود ندارد', + ADMIN_NOT_FOUND = 'ادمینی با این شماره وجود ندارد', + USER_EXISTS = 'با این شماره قبلا ثبت نام شده است', + USER_REGISTER_SUCCESS = 'ثبت نام موفقیت آمیز بود', + INVALID_USER = 'کاربری با این مشخصات یافت نشد', + PHONE_NOT_FOUND = 'کاربری با این شماره یافت نشد', + TOKEN_EXPIRED = 'توکن منقضی شده است', + TOKEN_INVALID = 'توکن نامعتبر است', + BANNED = 'در حال حاضر شما امکان دسترسی به این سرویس را ندارید', + PHONE_EXISTS = 'شماره تلفن قبلا ثبت شده است', + ADMIN_CREATED = 'ادمین با موفقیت ایجاد شد', + PERM_NOT_FOUND = 'دسترسی یافت نشد', + INVALID_PASS_FORMAT = 'فرمت رمز عبور صحیح نیست', + PHONE_NOT_EMPTY = 'شماره تلفن نمیتواند خالی باشد', + PASSWORD_FORMAT_INVALID = 'رمز عبور باید به صورت رشته باشد', + OTP_FORMAT_INVALID = 'کد یکبار مصرف باید عددی و ۵ رقمی باشد', + PHONE_FORMAT_INVALID = 'شماره تلفن باید معتبر و به فرمت ایران باشد', + TOKEN_NOT_EMPTY = 'توکن نمی‌تواند خالی باشد', + PASSWORD_NOT_EMPTY = 'رمز عبور نمی‌تواند خالی باشد', + PASSWORD_CHANGED_SUCCESSFULLY = 'رمز عبور با موفقیت تغییر کرد', + PASSWORD_CONFIRMATION_NOT_EMPTY = 'تایید رمز عبور نمی‌تواند خالی باشد', + PASSWORD_LENGTH = 'رمز عبور باید حداقل ۸ کاراکتر باشد', + OTP_NOT_EMPTY = 'کد یکبار مصرف نمی‌تواند خالی باشد', + LAST_PASSWORD_NOT_EMPTY = 'رمز عبور قبلی نمی‌تواند خالی باشد', + FIRST_NAME_NOT_EMPTY = 'نام نمی‌تواند خالی باشد', + LAST_NAME_NOT_EMPTY = 'نام خانوادگی نمی‌تواند خالی باشد', + FIRST_NAME_SHOULD_BE_BETWEEN_2_AND_50 = 'نام باید بین ۲ تا ۵۰ کاراکتر باشد', + LAST_NAME_SHOULD_BE_BETWEEN_2_AND_50 = 'نام خانوادگی باید بین ۲ تا ۵۰ کاراکتر باشد', + BIRTH_DATE_NOT_EMPTY = 'تاریخ تولد نمی‌تواند خالی باشد', + NATIONAL_CODE_INCORRECT = 'کد ملی باید ۱۰ رقمی باشد', + NATIONAL_NOT_EMPTY = 'کد ملی نمی‌تواند خالی باشد', + OTP_ALREADY_SENT = 'کد یکبار مصرف قبلا ارسال شده است', + TOO_MANY_REQUESTS = 'تعداد درخواست های شما بیش از حد مجاز است', + NOT_ADMIN = 'شما دسترسی به بخش ادمین ندارید', + PHONE_SHOULD_BE_11_DIGIT = 'شماره تلفن باید ۱۱ رقم باشد', + TIMESTAMP_NOT_EMPTY = 'زمان نمی‌تواند خالی باشد', + ADMIN_CAN_NOT_LOGIN = 'ادمین نمی‌تواند وارد شود', + NATIONAL_CODE_INVALID = 'کد ملی نامعتبر است', + INVALID_REFRESH_TOKEN = 'توکن رفرش نامعتبر است', + REFRESH_TOKEN_EXPIRED = 'توکن رفرش منقضی شده است', + LOGOUT_SUCCESS = 'خروج با موفقیت انجام شد', + CURRENT_PASSWORD_INVALID = 'رمز عبور فعلی نامعتبر است', + TOKEN_EXPIRED_OR_INVALID = 'توکن منقضی شده یا نامعتبر است', + ACCESS_DENIED = 'دسترسی شما محدود شده است', + USER_ACCOUNT_INACTIVE = 'حساب کاربری شما غیر فعال است', + TOKEN_MISSED_OR_EXPIRED = 'توکن مفقود یا منقضی شده است', + OLD_PASSWORD_REQUIRED = 'رمز عبور قبلی الزامی است', + PASSWORD_CHANGE_FAILED = 'تغییر رمز عبور با مشکل روبرد شد', + SLUG_REQUIRED = 'اسلاگ الزامی است', + INVALID_TOKEN_PAYLOAD = 'محتویات توکن نامعتبر است', + INVALID_SLUG = 'اسلاگ نامعتبر است', + INVALID_OR_EXPIRED_TOKEN = 'توکن نامعتبر یا منقضی شده است', +} +export const enum FoodMessage { + NOT_FOUND = 'غذایی با این مشخصات یافت نشد', +} +export const enum CategoryMessage { + NOT_FOUND = 'دسته‌بندی مورد نظر یافت نشد', + NOT_CREATED = 'ایجاد دسته‌بندی با خطا مواجه شد', + NOT_UPDATED = 'به‌روزرسانی دسته‌بندی با خطا مواجه شد', + NOT_DELETED = 'حذف دسته‌بندی با خطا مواجه شد', +} +export const enum UserMessage { + USER_NOT_FOUND = 'کاربری با این مشخصات یافت نشد', + Rest_NOT_FOUND = 'رستورانی با این مشخصات یافت نشد', + USER_EXISTS = 'با این شماره قبلا ثبت نام شده است', + USER_REGISTER_SUCCESS = 'ثبت نام موفقیت آمیز بود', + EMAIL_ADDRESS_ALREADY_EXISTS = 'ایمیل قبلا ثبت شده است', + EMAIL_USER_NOT_FOUND = 'ایمیل یافت نشد', + EMAIL_USER_DELETED_SUCCESSFULLY = 'ایمیل با موفقیت حذف شد', + FAILED_TO_DELETE_EMAIL_USER = 'خطا در حذف ایمیل', + EMAIL_USER_QUOTA_UPDATED_SUCCESSFULLY = 'ایمیل با موفقیت به روز رسانی شد', + FAILED_TO_UPDATE_EMAIL_USER_QUOTA = 'خطا در به روز رسانی حجم ایمیل', + USERNAME_REQUIRED = 'نام کاربری الزامی است', + USERNAME_STRING = 'نام کاربری باید یک رشته باشد', + USERNAME_MIN_LENGTH = 'نام کاربری باید حداقل ۲ کاراکتر باشد', + USERNAME_MATCHES = 'نام کاربری فقط میتواند شامل حروف، اعداد، نقطه، خط زیر و خط فاصله باشد', + PASSWORD_MATCHES = 'رمز عبور باید حداقل ۸ کاراکتر باشد و شامل حروف بزرگ، حروف کوچک، اعداد و علائم خاص باشد', + PASSWORD_STRING = 'رمز عبور باید یک رشته باشد', + PASSWORD_REQUIRED = 'رمز عبور الزامی است', + PASSWORD_MIN_LENGTH = 'رمز عبور باید حداقل ۸ کاراکتر باشد', + DOMAIN_ID_STRING = 'شناسه دامنه باید یک رشته باشد', + DOMAIN_ID_REQUIRED = 'شناسه دامنه الزامی است', + DOMAIN_ID_UUID = 'شناسه دامنه باید یک یو یو آی دی باشد', + DISPLAY_NAME_STRING = 'نام نمایشی باید یک رشته باشد', + DISPLAY_NAME_OPTIONAL = 'نام نمایشی اختیاری است', + QUOTA_NUMBER = 'حجم ایمیل باید یک عدد باشد', + QUOTA_OPTIONAL = 'حجم ایمیل اختیاری است', + QUOTA_NOT_EMPTY = 'حجم ایمیل نمیتواند خالی باشد', + ALIASES_ARRAY = 'الیاس ها باید یک آرایه باشد', + ALIASES_STRING = 'الیاس ها باید یک رشته باشد', + ALIASES_OPTIONAL = 'الیاس ها اختیاری است', + TITLE_STRING = 'عنوان باید یک رشته باشد', + TITLE_OPTIONAL = 'عنوان اختیاری است', + TITLE_NOT_EMPTY = 'عنوان نمیتواند خالی باشد', + EMAIL_USER_CREATED_SUCCESSFULLY = 'ایمیل با موفقیت ایجاد شد', + EMAIL_USER_UPDATED_SUCCESSFULLY = 'ایمیل کاربر با موفقیت به‌روزرسانی شد', + STATUS_UPDATED = 'وضعیت کاربر با موفقیت تغییر کرد', + TEMPLATE_UUID = 'شناسه قالب باید یک یو یو آی دی باشد', + TEMPLATE_NOT_EMPTY = 'شناسه قالب نمیتواند خالی باشد', + ALIASES_EMAIL = 'آدرس ایمیل الیاس باید معتبر باشد', + FORWARDERS_EMAIL_VALID = 'آدرس ایمیل فوروارد باید معتبر باشد', + FORWARDERS_ARRAY = 'آدرس های فوروارد باید یک آرایه باشد', + FORWARDERS_STRING = 'آدرس های فوروارد باید یک رشته باشد', + PROFILE_PICTURE_URL = 'آدرس تصویر پروفایل باید یک آدرس اینترنتی معتبر باشد', + USER_UPDATED_SUCCESSFULLY = 'کاربر با موفقیت به روز رسانی شد', + PROFILE_PICTURE_NOT_EMPTY = 'تصویر پروفایل نمیتواند خالی باشد', + PUSH_TOKEN_NOT_FOUND = 'توکن پوش نامعتبر است', + PUSH_TOKEN_ADDED_SUCCESSFULLY = 'توکن پوش با موفقیت اضافه شد', + NO_PUSH_TOKENS_FOUND = 'توکن پوشی برای این کاربر یافت نشد', + PUSH_TOKEN_REMOVED_SUCCESSFULLY = 'توکن پوش با موفقیت حذف شد', +} + +export const enum CommonMessage { + VALIDITY_TYPE_REQUIRED = 'نوع اعتبار سنجی مورد نیاز است', + THIS_FILED_IS_REQUIRED = 'این فیلد الزامی است', + VALID_FOR_CHOOSE = 'معتبر برای انتخاب', + UPDATE_SUCCESS = 'با موفقیت به روز رسانی شد', + CREATED = 'با موفقیت ایجاد شد', + DELETED = 'با موفقیت حذف شد', + ID_REQUIRED = 'شناسه مورد نیاز است', + ID_SHOULD_BE_UUID = 'شناسه باید یک یو یو آی دی باشد', + PaymentTypeQueryNotEmpty = 'نوع پرداخت نمی‌تواند خالی باشد', + SEARCH_QUERY_STRING = 'رشته جستجو باید یک رشته باشد', + UPDATED = 'با موفقیت آپدیت شد', + IS_ACTIVE_SHOULD_BE_1_0 = 'وضعیت باید یکی از مقادیر ۰ و ۱ باشد', + DATE_MUST_BE_DATE = 'تاریخ باید یک تاریخ معتبر به صورت رشته باشد', +} + +export const enum UploaderMessage { + UPLOAD_FILE_INVALID = 'فایل معتبر نیست', + UPLOAD_FILE_TOO_LARGE = 'فایل بزرگتر از حد مجاز است . حداکثر حجم فایل [MAX_FILE_SIZE] مگابایت است', + UPLOAD_FILE_TYPE_NOT_SUPPORTED = 'نوع فایل معتبر نیست . مجاز است : [MIME_TYPES]', + UPLOAD_FILE_SUCCESS = 'فایل با موفقیت آپلود شد', +} + +export const enum EmailMessage { + EMAIL_VERIFICATION = 'تایید ایمیل', + EMAIL_SENDING_FAILED = 'ارسال ایمیل با خطا مواجه شد', + LOGIN = 'ورود به سیستم', + INVOICE = 'فاکتور', + WALLET = 'اعلان کیف پول', + TICKET = 'تیکت پشتیبانی', + ANNOUNCEMENT = 'اعلان', + PAYMENT_REMINDER = 'یادآوری پرداخت', + PAYMENT_CANCELLATION = 'لغو پرداخت', + EMAIL_SENDING_SUCCESS = 'ارسال ایمیل با موفقیت انجام شد', + EMAIL_FORWARD_SUCCESS = 'فوروارد ایمیل با موفقیت انجام شد', + EMAIL_STATUS_RETRIEVED_SUCCESSFULLY = 'وضعیت ایمیل با موفقیت دریافت شد', + MESSAGES_SEARCHED_SUCCESSFULLY = 'جستجوی ایمیل با موفقیت انجام شد', + MESSAGES_LISTED_SUCCESSFULLY = 'لیست ایمیل ها با موفقیت دریافت شد', + MESSAGE_RETRIEVED_SUCCESSFULLY = 'ایمیل با موفقیت دریافت شد', + MESSAGE_DELETED_SUCCESSFULLY = 'ایمیل با موفقیت حذف شد', + USER_ID_REQUIRED = 'شناسه کاربری مورد نیاز است', + USER_ID_MUST_BE_STRING = 'شناسه کاربری باید یک رشته باشد', + MAILBOX_ID_REQUIRED = 'شناسه میل باکس ایمیل مورد نیاز است', + MAILBOX_ID_MUST_BE_STRING = 'شناسه میل باکس ایمیل باید یک رشته باشد', + QUEUE_ID_REQUIRED = 'شناسه پیش‌نویس ایمیل مورد نیاز است', + QUEUE_ID_MUST_BE_STRING = 'شناسه پیش‌نویس ایمیل باید یک رشته باشد', + MESSAGE_ID_MUST_BE_NUMBER = 'شناسه ایمیل باید یک عدد باشد', + FROM_ADDRESS_REQUIRED = 'آدرس از مورد نیاز است', + + // Validation Messages for Email DTOs + FROM_ADDRESS_MUST_BE_EMAIL = 'آدرس فرستنده باید یک ایمیل معتبر باشد', + + // Query validation messages + SEARCH_QUERY_PARAMETER_MUST_BE_STRING = 'پارامتر جستجو باید یک رشته باشد', + MESSAGE_IDS_MUST_BE_STRING = 'شناسه‌های پیام باید یک رشته باشد', + THREAD_ID_MUST_BE_STRING = 'شناسه رشته گفتگو باید یک رشته باشد', + OR_QUERY_MUST_BE_OBJECT = 'پارامتر OR باید یک شیء باشد', + DATE_START_MUST_BE_DATE_STRING = 'تاریخ شروع باید یک رشته تاریخ معتبر باشد', + DATE_END_MUST_BE_DATE_STRING = 'تاریخ پایان باید یک رشته تاریخ معتبر باشد', + TO_ADDRESS_MUST_BE_STRING = 'آدرس گیرنده باید یک رشته باشد', + MIN_SIZE_MUST_BE_NUMBER = 'حداقل اندازه باید یک عدد باشد', + MIN_SIZE_MUST_BE_NON_NEGATIVE = 'حداقل اندازه نمی‌تواند منفی باشد', + MAX_SIZE_MUST_BE_NUMBER = 'حداکثر اندازه باید یک عدد باشد', + MAX_SIZE_MUST_BE_NON_NEGATIVE = 'حداکثر اندازه نمی‌تواند منفی باشد', + ATTACHMENTS_FILTER_MUST_BE_BOOLEAN = 'فیلتر پیوست‌ها باید بولین باشد', + FLAGGED_FILTER_MUST_BE_BOOLEAN = 'فیلتر پیام‌های علامت‌دار باید بولین باشد', + UNSEEN_FILTER_MUST_BE_BOOLEAN = 'فیلتر پیام‌های خوانده‌نشده باید بولین باشد', + INCLUDE_HEADERS_MUST_BE_STRING = 'لیست هدرها باید یک رشته باشد', + SEARCHABLE_FILTER_MUST_BE_BOOLEAN = 'فیلتر قابل جستجو باید بولین باشد', + THREAD_COUNTERS_MUST_BE_BOOLEAN = 'شمارنده رشته گفتگو باید بولین باشد', + ORDER_MUST_BE_VALID = 'ترتیب باید یکی از مقادیر asc یا desc باشد', + NEXT_CURSOR_MUST_BE_STRING = 'نشانگر صفحه بعد باید یک رشته باشد', + PREVIOUS_CURSOR_MUST_BE_STRING = 'نشانگر صفحه قبل باید یک رشته باشد', + + RECIPIENT_NAME_MUST_BE_STRING = 'نام گیرنده باید یک رشته باشد', + RECIPIENT_ADDRESS_REQUIRED = 'آدرس گیرنده مورد نیاز است', + RECIPIENT_ADDRESS_MUST_BE_EMAIL = 'آدرس گیرنده باید یک ایمیل معتبر باشد', + HEADER_KEY_REQUIRED = 'کلید هدر مورد نیاز است', + HEADER_KEY_MUST_BE_STRING = 'کلید هدر باید یک رشته باشد', + HEADER_VALUE_REQUIRED = 'مقدار هدر مورد نیاز است', + HEADER_VALUE_MUST_BE_STRING = 'مقدار هدر باید یک رشته باشد', + ATTACHMENT_FILENAME_MUST_BE_STRING = 'نام فایل پیوست باید یک رشته باشد', + ATTACHMENT_CONTENT_TYPE_MUST_BE_STRING = 'نوع محتوای پیوست باید یک رشته باشد', + ATTACHMENT_ENCODING_MUST_BE_STRING = 'کدگذاری پیوست باید یک رشته باشد', + ATTACHMENT_CONTENT_TRANSFER_ENCODING_MUST_BE_STRING = 'کدگذاری انتقال محتوای پیوست باید یک رشته باشد', + ATTACHMENT_CONTENT_DISPOSITION_INVALID = 'نحوه نمایش پیوست باید inline یا attachment باشد', + ATTACHMENT_CONTENT_REQUIRED = 'محتوای پیوست مورد نیاز است', + ATTACHMENT_CONTENT_MUST_BE_STRING = 'محتوای پیوست باید یک رشته باشد', + ATTACHMENT_CID_MUST_BE_STRING = 'شناسه محتوای پیوست باید یک رشته باشد', + DRAFT_MAILBOX_REQUIRED = 'شناسه صندوق پیش‌نویس مورد نیاز است', + DRAFT_MAILBOX_MUST_BE_STRING = 'شناسه صندوق پیش‌نویس باید یک رشته باشد', + DRAFT_ID_REQUIRED = 'شناسه پیش‌نویس مورد نیاز است', + DRAFT_ID_MUST_BE_NUMBER = 'شناسه پیش‌نویس باید یک عدد باشد', + ENVELOPE_FROM_REQUIRED = 'آدرس فرستنده در envelope مورد نیاز است', + ENVELOPE_TO_REQUIRED = 'آدرس گیرنده در envelope مورد نیاز است', + ENVELOPE_TO_MUST_BE_ARRAY = 'آدرس گیرنده در envelope باید یک آرایه باشد', + MAILBOX_MUST_BE_STRING = 'شناسه صندوق باید یک رشته باشد', + REPLY_TO_MUST_BE_VALID = 'آدرس پاسخ باید معتبر باشد', + TO_ADDRESSES_REQUIRED = 'آدرس‌های گیرنده مورد نیاز است', + TO_ADDRESSES_MUST_BE_ARRAY = 'آدرس‌های گیرنده باید یک آرایه باشد', + CC_ADDRESSES_MUST_BE_ARRAY = 'آدرس‌های کپی کربن باید یک آرایه باشد', + BCC_ADDRESSES_MUST_BE_ARRAY = 'آدرس‌های کپی مخفی باید یک آرایه باشد', + HEADERS_MUST_BE_ARRAY = 'هدرهای سفارشی باید یک آرایه باشد', + SUBJECT_MUST_BE_STRING = 'موضوع ایمیل باید یک رشته باشد', + TEXT_CONTENT_MUST_BE_STRING = 'محتوای متنی باید یک رشته باشد', + HTML_CONTENT_MUST_BE_STRING = 'محتوای HTML باید یک رشته باشد', + ATTACHMENTS_MUST_BE_ARRAY = 'پیوست‌ها باید یک آرایه باشد', + SESSION_ID_MUST_BE_STRING = 'شناسه جلسه باید یک رشته باشد', + IP_ADDRESS_MUST_BE_STRING = 'آدرس IP باید یک رشته باشد', + IS_DRAFT_MUST_BE_BOOLEAN = 'وضعیت پیش‌نویس باید بولین باشد', + SEND_TIME_MUST_BE_DATE = 'زمان ارسال باید یک تاریخ معتبر باشد', + UPLOAD_ONLY_MUST_BE_BOOLEAN = 'حالت فقط آپلود باید بولین باشد', + ENVELOPE_MUST_BE_VALID = 'envelope باید معتبر باشد', + + // Message operations + MESSAGE_MARKED_AS_SEEN_SUCCESSFULLY = 'پیام با موفقیت به عنوان خوانده شده علامت گذاری شد', + ALL_MESSAGES_MARKED_AS_READ_SUCCESSFULLY = 'تمام پیام ها با موفقیت به عنوان خوانده شده علامت گذاری شدند', + MESSAGE_MARK_AS_SEEN_FAILED = 'علامت گذاری پیام با خطا مواجه شد', + SENT_MESSAGES_RETRIEVED_SUCCESSFULLY = 'پیام های ارسالی با موفقیت دریافت شد', + SENT_MESSAGES_RETRIEVAL_FAILED = 'دریافت پیام های ارسالی با خطا مواجه شد', + TRASH_MESSAGES_RETRIEVED_SUCCESSFULLY = 'پیام های حذف شده با موفقیت دریافت شد', + TRASH_MESSAGES_RETRIEVAL_FAILED = 'دریافت پیام های حذف شده با خطا مواجه شد', + DRAFT_UPDATED_SUCCESSFULLY = 'پیش نویس با موفقیت به روز رسانی شد', + DRAFT_SENT_SUCCESSFULLY = 'پیش نویس با موفقیت ارسال شد', + DRAFT_DELETED_SUCCESSFULLY = 'پیش نویس با موفقیت حذف شد', + MESSAGE_MOVED_TO_ARCHIVE_SUCCESSFULLY = 'پیام با موفقیت به آرشیو منتقل شد', + MESSAGE_MOVED_TO_FAVORITE_SUCCESSFULLY = 'پیام با موفقیت به علاقه مندی ها منتقل شد', + MESSAGE_MOVED_TO_TRASH_SUCCESSFULLY = 'پیام با موفقیت به سطل زباله منتقل شد', + MESSAGE_MOVED_TO_JUNK_SUCCESSFULLY = 'پیام با موفقیت به جانک منتقل شد', + MESSAGE_MOVED_TO_INBOX_FROM_ARCHIVE_SUCCESSFULLY = 'پیام با موفقیت از آرشیو به صندوق ورودی منتقل شد', + MESSAGE_MOVED_TO_INBOX_FROM_FAVORITE_SUCCESSFULLY = 'پیام با موفقیت از علاقه مندی ها به صندوق ورودی منتقل شد', + MESSAGE_MOVED_TO_INBOX_FROM_TRASH_SUCCESSFULLY = 'پیام با موفقیت از سطل زباله به صندوق ورودی منتقل شد', + MESSAGE_MOVED_TO_INBOX_FROM_JUNK_SUCCESSFULLY = 'پیام با موفقیت از جانک به صندوق ورودی منتقل شد', + MESSAGE_NOT_FOUND = 'پیام یافت نشد', + + // Bulk action messages + BULK_ACTION_COMPLETED_SUCCESSFULLY = '[count] پیام با موفقیت [action] شد', + BULK_ACTION_PARTIALLY_COMPLETED = '[successful] از [total] پیام [action] شد. [failed] پیام با خطا مواجه شد', + BULK_ACTION_FAILED = 'هیچ پیامی [action] نشد. تمام [total] تلاش ناموفق بود', + + // Bulk action display names + BULK_ACTION_SEEN = 'خوانده شده علامت‌گذاری', + BULK_ACTION_DELETE = 'حذف', + BULK_ACTION_ARCHIVE = 'آرشیو', + BULK_ACTION_UNARCHIVE = 'از آرشیو خارج', + BULK_ACTION_FAVORITE = 'به علاقه مندی ها منتقل', + BULK_ACTION_UNFAVORITE = 'از علاقه مندی ها حذف', + BULK_ACTION_JUNK = 'به جانک منتقل', + BULK_ACTION_NOTJUNK = 'از جانک از حذف', + BULK_ACTION_TRASH = 'به سطل زباله منتقل', + BULK_ACTION_RESTORE = 'از سطل زباله بازیابی', + BULK_ACTION_PROCESSED = 'پردازش', + USER_NOT_FOUND = 'کاربر یافت نشد', + PRIORITY_MUST_BE_ONE_OF_HIGH_NORMAL_LOW = 'اولویت باید یکی از مقادیر high, normal, low باشد', + SUBJECT_REQUIRED = 'موضوع ایمیل مورد نیاز است', + ALL_MESSAGES_DELETED_SUCCESSFULLY = 'همه پیام ها با موفقیت حذف شدند', + MAILBOX_ID_MUST_BE_MONGO_ID = 'شناسه میل باکس ایمیل باید یک آی دی معتبر باشد', + MESSAGE_MARKED_AS_UNSEEN_SUCCESSFULLY = 'پیام با موفقیت به عنوان خوانده نشده علامت گذاری شد', + MESSAGE_MARK_AS_UNSEEN_FAILED = 'علامت گذاری پیام به عنوان خوانده نشده با خطا مواجه شد', + ATTACHMENT_ID_MUST_BE_STRING = 'شناسه پیوست باید یک رشته باشد', + IS_FORWARD_MUST_BE_BOOLEAN = 'IS_FORWARD_MUST_BE_BOOLEAN', + + // Favorite/Star messages (Gmail-like behavior) + MESSAGE_MARKED_AS_FAVORITE_SUCCESSFULLY = 'پیام با موفقیت به عنوان مورد علاقه علامت گذاری شد', + MESSAGE_REMOVED_FROM_FAVORITE_SUCCESSFULLY = 'پیام با موفقیت از مورد علاقه حذف شد', + TRASH_EMPTYED_SUCCESSFULLY = 'سطل زباله با موفقیت خالی شد', + SPAM_EMPTYED_SUCCESSFULLY = 'همه پیام های اسپم با موفقیت حذف شدند', + SAVE_DRAFT_SUCCESS = 'پیش نویس با موفقیت ذخیره شد', + HTML_CONTENT_REQUIRED = 'محتوای HTML مورد نیاز است', + TEXT_CONTENT_REQUIRED = 'TEXT_CONTENT_REQUIRED', +} + +export const enum WebSocketMessage { + // Connection Messages + WS_CONNECTION_ESTABLISHED = 'اتصال وب سوکت با موفقیت برقرار شد', + WS_CONNECTION_FAILED = 'اتصال وب سوکت ناموفق بود', + WS_AUTHENTICATION_REQUIRED = 'احراز هویت وب سوکت مورد نیاز است', + WS_AUTHENTICATION_FAILED = 'احراز هویت وب سوکت ناموفق بود', + WS_AUTHENTICATION_SUCCESS = 'احراز هویت وب سوکت با موفقیت انجام شد', + WS_INVALID_TOKEN = 'توکن وب سوکت نامعتبر است', + WS_TOKEN_EXPIRED = 'توکن وب سوکت منقضی شده است', + + // Room Management Messages + JOINED_ROOM_SUCCESS = 'با موفقیت به اتاق متصل شدید', + LEFT_ROOM_SUCCESS = 'با موفقیت از اتاق خارج شدید', + ROOM_NOT_FOUND = 'اتاق یافت نشد', + UNAUTHORIZED_ROOM_ACCESS = 'دسترسی غیرمجاز به اتاق', + + // Session Management Messages + WS_SESSION_CREATED = 'جلسه وب سوکت ایجاد شد', + WS_SESSION_JOINED = 'به جلسه وب سوکت پیوستید', + WS_SESSION_LEFT = 'از جلسه وب سوکت خارج شدید', + WS_SESSION_EXPIRED = 'جلسه وب سوکت منقضی شده است', + WS_SESSION_NOT_FOUND = 'جلسه وب سوکت یافت نشد', + + // Error Messages + WS_CONNECTION_ERROR = 'خطا در اتصال وب سوکت', + INVALID_EVENT = 'رویداد نامعتبر', + INVALID_DATA = 'داده نامعتبر', + WS_RATE_LIMIT_EXCEEDED = 'تعداد درخواست‌های وب سوکت از حد مجاز بیشتر است', + INTERNAL_ERROR = 'خطای داخلی سرور', + + // Notification Messages + NEW_MESSAGE_NOTIFICATION = 'پیام جدید دریافت شد', + MESSAGE_STATUS_UPDATED = 'وضعیت پیام به‌روزرسانی شد', + MESSAGE_MOVED_NOTIFICATION = 'پیام جابجا شد', + MESSAGE_DELETED_NOTIFICATION = 'پیام حذف شد', + + // General Messages + OPERATION_SUCCESS = 'عملیات با موفقیت انجام شد', + OPERATION_FAILED = 'عملیات ناموفق بود', + PERMISSION_DENIED = 'مجوز دسترسی ندارید', + RESOURCE_NOT_FOUND = 'منبع یافت نشد', + + // Authentication errors + AUTHENTICATION_REQUIRED = 'احراز هویت ضروری است', + INVALID_TOKEN = 'توکن احراز هویت نامعتبر است', + TOKEN_EXPIRED = 'توکن منقضی شده است', + UNAUTHORIZED_ACCESS = 'دسترسی غیرمجاز', + USER_NOT_AUTHENTICATED = 'کاربر احراز هویت نشده است', + + // Connection errors + CONNECTION_FAILED = 'اتصال برقرار نشد', + WEBSOCKET_ERROR = 'خطا در ارتباط WebSocket', + CONNECTION_TIMEOUT = 'زمان اتصال به پایان رسید', + CONNECTION_REFUSED = 'اتصال رد شد', + + // Session errors + SESSION_NOT_FOUND = 'جلسه چت یافت نشد', + SESSION_CREATION_FAILED = 'ایجاد جلسه چت با شکست مواجه شد', + SESSION_ACCESS_DENIED = 'دسترسی به جلسه چت مجاز نیست', + SESSION_EXPIRED = 'جلسه چت منقضی شده است', + SESSION_ALREADY_EXISTS = 'جلسه چت قبلاً وجود دارد', + + // Message errors + MESSAGE_TOO_LONG = 'پیام از حداکثر طول مجاز تجاوز کرده است', + MESSAGE_EMPTY = 'پیام نمی‌تواند خالی باشد', + MESSAGE_SEND_FAILED = 'ارسال پیام با شکست مواجه شد', + INVALID_MESSAGE_FORMAT = 'فرمت پیام نامعتبر است', + + // Rate limiting + RATE_LIMIT_EXCEEDED = 'تعداد پیام‌های ارسالی بیش از حد مجاز است', + TOO_MANY_CONNECTIONS = 'تعداد اتصالات بیش از حد مجاز است', + + // Service errors + LLM_SERVICE_ERROR = 'سرویس هوش مصنوعی موقتاً در دسترس نیست', + SERVICE_UNAVAILABLE = 'سرویس موقتاً در دسترس نیست', + INTERNAL_SERVER_ERROR = '.خطای داخلی سرور', + + // Validation errors + INVALID_SESSION_ID = 'شناسه جلسه نامعتبر است', + INVALID_USER_ID = 'شناسه کاربر نامعتبر است', + INVALID_MESSAGE_ID = 'شناسه پیام نامعتبر است', + REQUIRED_FIELD_MISSING = 'فیلد ضروری موجود نیست', + + // Success messages + AUTHENTICATED = 'احراز هویت موفقیت‌آمیز', + SESSION_CREATED = 'جلسه چت با موفقیت ایجاد شد', + CHAT_JOINED = 'با موفقیت به چت متصل شدید', + MESSAGE_SENT = 'پیام ارسال شد', + CONNECTION_ESTABLISHED = 'اتصال برقرار شد', +} + +export const enum SmsMessage { + SEND_SMS_ERROR = 'خطا در ارسال پیامک', +} + +export const enum RestMessage { + NOT_FOUND = 'کسب و کار یافت نشد', + BUSINESS_ID_REQUIRED = 'شناسه کسب و کار مورد نیاز است', + SLUG_REQUIRED = 'اسلاگ مورد نیاز است', + SLUG_MUST_BE_STRING = 'اسلاگ باید یک رشته باشد', + DOMAIN_INVALID = 'دامنه وارد شده معتبر نیست', + DOMAIN_UPDATED = 'دامنه با موفقیت به‌روزرسانی شد', + DOMAIN_VERIFICATION_INITIATED = 'فرآیند تایید دامنه آغاز شد', + DOMAIN_VERIFICATION_FAILED = 'تایید دامنه با خطا مواجه شد', + DOMAIN_VERIFICATION_SUCCESS = 'دامنه با موفقیت تایید شد', + DOMAIN_VERIFICATION_METHOD_INVALID = 'روش تایید دامنه نامعتبر است', + DOMAIN_ALREADY_VERIFIED = 'این دامنه قبلا تایید شده است', + DOMAIN_REQUIRED = 'دامنه مورد نیاز است', + DOMAIN_MUST_BE_STRING = 'دامنه باید یک رشته باشد', + STAFF_NOT_FOUND = 'کاربر ادمین یافت نشد', + ZARINPAL_MERCHANT_ID_REQUIRED = 'شناسه مرچنت زرین پال مورد نیاز است', + ZARINPAL_MERCHANT_ID_STRING = 'شناسه مرچنت زرین پال باید یک رشته باشد', + LOGO_URL_REQUIRED = 'آدرس تصویر لوگو مورد نیاز است', + LOGO_URL_STRING = 'آدرس تصویر لوگو باید یک رشته باشد', + LOGO_URL_INVALID = 'آدرس تصویر لوگو معتبر نیست', + BUSINESS_SETTINGS_UPDATED = 'تنظیمات کسب و کار با موفقیت به روز رسانی شد', + NAME_REQUIRED = 'نام کسب و کار مورد نیاز است', + NAME_STRING = 'نام کسب و کار باید یک رشته باشد', + DOMAIN_CONNECTED = 'دامنه با موفقیت متصل شد', + DOMAIN_NOT_CONNECTED = 'دامنه به سرور ما متصل نشد', + DOMAIN_NOT_FOUND = 'دامنه یافت نشد', + DOMAIN_VERIFICATION_TOKEN_REQUIRED = 'توکن تایید دامنه مورد نیاز است', + INSUFFICIENT_QUOTA = 'حجم شما برای ساخت ایمیل کافی نمی باشد، لطفا حجم را افزایش دهید', + QUOTA_DOWNGRADE_NOT_ALLOWED = 'کاهش حجم ایمیل مجاز نیست، فقط می‌توانید حجم را افزایش دهید', + QUOTA_AMOUNT_REQUIRED = 'مقدار حجم مورد نیاز است', + QUOTA_AMOUNT_MUST_BE_NUMBER = 'مقدار حجم باید یک عدد باشد', + QUOTA_AMOUNT_MUST_BE_POSITIVE = 'مقدار حجم باید مثبت باشد', + CALLBACK_URL_MUST_BE_STRING = 'آدرس بازگشت باید یک رشته باشد', + CALLBACK_URL_INVALID = 'آدرس بازگشت معتبر نیست', + PURCHASE_DESCRIPTION_MUST_BE_STRING = 'توضیحات خرید باید یک رشته باشد', + QUOTA_PURCHASE_SUCCESS = 'درخواست خرید حجم با موفقیت ثبت شد', + QUOTA_PURCHASE_FAILED = 'خرید حجم با خطا مواجه شد', + PAYMENT_GATEWAY_ERROR = 'خطا در اتصال به درگاه پرداخت', + QUOTA_UPDATED = 'حجم ایمیل با موفقیت به روز شد', + USER_DOES_NOT_HAVE_ACCESS_TO_SERVICE = 'کاربر دسترسی به این سرویس را ندارد', +} + +export const enum DomainMessage { + // Domain Ownership & Verification + NOT_BELONG_TO_BUSINESS = 'دامنه به این کسب و کار تعلق ندارد', + NOT_VERIFIED = 'دامنه باید تایید شده باشد', + DOMAIN_NOT_FOUND = 'دامنه یافت نشد', + DOMAIN_ALREADY_EXISTS = 'دامنه [name] قبلا ثبت شده است', + DOMAIN_DELETED_SUCCESSFULLY = 'دامنه با موفقیت حذف شد', + VERIFICATION_NOT_FOUND = 'تایید دامنه یافت نشد', + NO_DOMAIN_FOUND = 'دامنه ای یافت نشد', + DOMAIN_CHECKED = 'دامنه با موفقیت بررسی شد', + + // Domain Creation & Setup + DOMAIN_CREATED_WITH_RECORDS = 'دامنه [name] با موفقیت ایجاد شد و تمام رکوردهای مورد نیاز تولید گردید', + ALL_REQUIRED_RECORDS_GENERATED = 'تمام رکوردهای مورد نیاز (MX, SPF, DMARC, DKIM) به طور خودکار برای شما تولید شده‌اند', + ESTIMATED_PROPAGATION_TIME = 'تغییرات DNS معمولاً ۱۵ دقیقه تا ۴۸ ساعت در سراسر جهان منتشر می‌شود', + + // DNS Records Instructions + ADD_MX_RECORD = 'یک رکورد MX با نام [name] که به [value] با اولویت [priority] اشاره کند اضافه کنید', + ADD_TXT_RECORD = 'یک رکورد TXT با نام [name] و مقدار [value] اضافه کنید', + ADD_DKIM_RECORD = 'یک رکورد TXT با نام [name] و مقدار [value] اضافه کنید (کلید عمومی DKIM)', + ADD_DMARC_RECORD = 'یک رکورد TXT با نام [name] و مقدار [value] اضافه کنید (سیاست DMARC)', + ADD_CNAME_RECORD = 'یک رکورد CNAME با نام [name] که به [value] اشاره کند اضافه کنید', + ADD_GENERIC_RECORD = 'یک رکورد [type] با نام [name] و مقدار [value] اضافه کنید', + + // Domain Setup Steps + STEP_LOGIN_DNS_PANEL = 'وارد پنل مدیریت DNS ثبت کننده دامنه خود شوید', + STEP_ADD_ALL_RECORDS = 'تمام رکوردهای DNS مورد نیاز لیست شده در بالا را به زون DNS دامنه خود اضافه کنید', + STEP_INCLUDE_ALL_TYPES = 'مطمئن شوید که رکوردهای MX، SPF، DMARC و DKIM را برای عملکرد کامل ایمیل شامل کرده‌اید', + STEP_WAIT_PROPAGATION = 'منتظر انتشار DNS بمانید (معمولاً ۱۵ دقیقه تا ۴۸ ساعت)', + STEP_USE_CHECK_ENDPOINT = "از نقطه پایانی 'بررسی DNS' برای تایید تنظیم صحیح رکوردهای خود استفاده کنید", + STEP_DOMAIN_READY = 'پس از تایید، دامنه شما برای سرویس‌های ایمیل آماده خواهد بود!', + + // Status Messages + RECORDS_PENDING_VERIFICATION = '[count] رکورد DNS هنوز در انتظار تایید هستند', + ALL_REQUIRED_RECORDS_MUST_BE_CONFIGURED = 'تمام [count] رکورد مورد نیاز باید برای کار درست ایمیل تنظیم شوند', + DOMAIN_FULLY_VERIFIED = 'دامنه شما به طور کامل تایید شده و برای ایمیل آماده است!', + EMAIL_ACCOUNTS_READY = 'اکنون می‌توانید حساب‌های ایمیل ایجاد کرده و شروع به ارسال/دریافت ایمیل کنید', + + // Verification Status + DOMAIN_VERIFICATION_INITIATED = 'فرآیند تایید دامنه آغاز شد', + DOMAIN_VERIFICATION_FAILED = 'تایید دامنه با خطا مواجه شد', + DOMAIN_VERIFICATION_SUCCESS = 'دامنه با موفقیت تایید شد', + DOMAIN_VERIFICATION_PENDING = 'تایید دامنه در انتظار است', + + // DNS Record Status + DNS_RECORD_VERIFIED = 'رکورد DNS تایید شد', + DNS_RECORD_FAILED = 'رکورد DNS تایید نشد', + DNS_RECORD_NOT_FOUND_OR_MISMATCH = 'رکورد DNS یافت نشد یا مقدار مطابقت ندارد', + + // DKIM Messages + DKIM_ENABLED_AUTOMATICALLY = 'DKIM به طور خودکار برای دامنه [name] فعال شد', + DKIM_FAILED_TO_CREATE = 'ایجاد DKIM برای دامنه [name] ناموفق بود', + DKIM_ENABLED_SUCCESSFULLY = 'DKIM برای دامنه [name] با موفقیت فعال شد', + + // Error Messages + FAILED_TO_VERIFY_DOMAIN = 'تایید دامنه [name] ناموفق بود', + FAILED_TO_SETUP_MAIL_SERVER = 'راه‌اندازی دامنه [name] در سرور ایمیل ناموفق بود', + DOMAIN_CREATION_FAILED = 'ایجاد دامنه ناموفق بود', + DNS_VERIFICATION_ATTEMPTS_EXCEEDED = 'تعداد تلاش‌های تایید DNS از حد مجاز بیشتر شد', + + // Service Messages + DOMAIN_UPDATED_SUCCESSFULLY = 'دامنه بروزرسانی شد', + VERIFICATION_TOKEN_PREFIX = 'توکن تایید: [token]', + RECORD_NEEDS_FIXING = 'رکورد [type] برای [name] نیاز به اصلاح دارد: [error]', + RECORD_PENDING_VERIFICATION_DETAIL = 'رکورد [type] برای [name] هنوز در انتظار تایید است. لطفا مطمئن شوید که انتشار DNS کامل شده است.', + RECORD_DESCRIPTION_EMAIL_FUNCTIONALITY = 'رکورد [type] برای عملکرد ایمیل', + BUSINESS_ALREADY_HAS_DOMAIN = 'این کسب و کار قبلا دامنه ای دارد', + CAN_NOT_USE_THIS_DOMAIN = 'این دامنه نمیتواند ثبت شود', +} + +export const enum MailServerMessage { + FAILED_TO_CREATE_ACCOUNT = 'خطا در ایجاد ایمیل', + FAILED_TO_CREATE_DKIM_KEY = 'خطا در ایجاد کلید DKIM', +} + +export const enum DnsRecordMessage { + DNS_RECORD_NOT_FOUND = 'رکورد DNS یافت نشد', + DNS_RECORD_DELETED = 'رکورد DNS با موفقیت حذف شد', +} + +export const enum RoleMessage { + NOT_FOUND = 'نقش یافت نشد', + ROLE_HAS_ADMINS = 'نقش دارای ادمین است و قابل حذف نیست', +} + +export const enum SignatureMessage { + NAME_NOT_EMPTY = 'نام امضاء نمیتواند خالی باشد', + NAME_MAX_LENGTH = 'نام امضاء نمیتواند بیشتر از حداکثر طول مجاز باشد', + NAME_STRING = 'نام امضاء باید یک رشته باشد', + TEXT_CONTENT_NOT_EMPTY = 'محتوای متنی امضاء نمیتواند خالی باشد', + TEXT_CONTENT_STRING = 'محتوای متنی امضاء باید یک رشته باشد', + TEXT_CONTENT_MAX_LENGTH = 'محتوای متنی امضاء نمیتواند بیشتر از حداکثر طول مجاز باشد', + IS_ACTIVE_NOT_EMPTY = 'وضعیت فعال بودن نمیتواند خالی باشد', + IS_ACTIVE_BOOLEAN = 'وضعیت فعال بودن باید بولین باشد', + IS_DEFAULT_NOT_EMPTY = 'وضعیت پیش فرض نمیتواند خالی باشد', + IS_DEFAULT_BOOLEAN = 'وضعیت پیش فرض باید بولین باشد', + CREATED = 'امضاء با موفقیت ایجاد شد', + NOT_FOUND = 'امضاء یافت نشد', + DELETED = 'امضاء با موفقیت حذف شد', + TOGGLE_ACTIVE = 'وضعیت امضاء با موفقیت تغییر کرد', +} + +export const enum TemplateMessage { + TEMPLATE_NOT_FOUND = 'قالب یافت نشد', + TEMPLATE_CREATED_SUCCESSFULLY = 'قالب با موفقیت ایجاد شد', + TEMPLATE_UPDATED_SUCCESSFULLY = 'قالب با موفقیت به روزرسانی شد', + TEMPLATE_DELETED_SUCCESSFULLY = 'قالب با موفقیت حذف شد', + TEMPLATE_RETRIEVED_SUCCESSFULLY = 'قالب با موفقیت دریافت شد', + TEMPLATES_LISTED_SUCCESSFULLY = 'لیست قالب ها با موفقیت دریافت شد', + TEMPLATE_NAME_REQUIRED = 'نام قالب الزامی است', + TEMPLATE_NAME_STRING = 'نام قالب باید یک رشته باشد', + TEMPLATE_NAME_MAX_LENGTH = 'نام قالب نمیتواند بیشتر از ۲۵۵ کاراکتر باشد', + TEMPLATE_STRUCTURE_REQUIRED = 'ساختار قالب الزامی است', + TEMPLATE_STRUCTURE_VALID = 'ساختار قالب باید معتبر باشد', + TEMPLATE_RAW_HTML_STRING = 'HTML خام باید یک رشته باشد', + TEMPLATE_BUSINESS_ID_REQUIRED = 'شناسه کسب و کار الزامی است', + TEMPLATE_BUSINESS_ID_UUID = 'شناسه کسب و کار باید یک UUID معتبر باشد', + TEMPLATE_ID_REQUIRED = 'شناسه قالب الزامی است', + TEMPLATE_ID_UUID = 'شناسه قالب باید یک UUID معتبر باشد', + TEMPLATE_ACCESS_DENIED = 'شما دسترسی به این قالب را ندارید', + TEMPLATE_BUSINESS_NOT_FOUND = 'کسب و کار مالک قالب یافت نشد', + SEARCH_STRING = 'نام برای جستجو باید یک رشته باشد', + TEMPLATE_SELECTED_SUCCESSFULLY = 'وضعیت قالب با موفقیت تغییر کرد', + TEMPLATE_THUMBNAIL_URL_VALID = 'آدرس تصویر قالب باید یک آدرس معتبر باشد', + TEMPLATE_RAW_HTML_REQUIRED = 'HTML خام قالب الزامی است', +} + +export const enum NotificationMessage { + TITLE_IS_REQUIRED = 'عنوان اعلان الزامی است', + TITLE_STRING = 'عنوان اعلان باید یک رشته باشد', + MESSAGE_IS_REQUIRED = 'متن اعلان الزامی است', + MESSAGE_STRING = 'متن اعلان باید یک رشته باشد', + USERID_IS_REQUIRED = 'شناسه کاربر الزامی است', + USERID_IS_STRING = 'شناسه کاربر باید یک رشته باشد', + USERID_IS_UUID = 'شناسه کاربر باید یک UUID معتبر باشد', + TYPE_IS_REQUIRED = 'نوع اعلان الزامی است', + TYPE_ENUM = 'نوع اعلان باید یک enum معتبر باشد', + NOTIFICATION_NOT_FOUND_OR_ACCESS_DENIED = 'اعلان یافت نشد یا دسترسی آن را ندارید', + LOGIN_MESSAGE = 'ورود با موفقیت انجام شد در تاریخ [loginDate]', + LOGIN = 'ورود', + NEW_EMAIL = 'ایمیل جدید', + NEW_EMAIL_MESSAGE = 'یک ایمیل جدید با موضوع [subject] دریافت شد', + CHANGE_PASSWORD_MESSAGE = 'رمز عبور شما با موفقیت تغییر کرد', + CHANGE_PASSWORD = 'تغییر رمز عبور', + NOT_FOUND = 'اعلان یافت نشد', + READ_SUCCESS = 'اعلان با موفقیت خوانده شد', + ORDER_CREATED = 'سفارش جدید ایجاد شد', + ORDER_STATUS_CHANGED = 'وضعیت سفارش تغییر کرد', + PAYMENT_SUCCESS = 'پرداخت با موفقیت انجام شد', + PAGER_CREATED = 'پیج جدید ایجاد شد', +} + +export const enum SettingMessageEnum { + SMS_MUST_BE_BOOLEAN = 'تنظیمات ارسال پیامک باید یک boolean باشد', + EMAIL_MUST_BE_BOOLEAN = 'تنظیمات ارسال ایمیل باید یک boolean باشد', + NOTIFICATION_NOT_FOUND_OR_ACCESS_DENIED = 'اعلان یافت نشد یا دسترسی آن را ندارید', +} + +export const enum AiMessage { + NO_RESPONSE_FROM_AI_MODEL = 'خطا در دریافت پاسخ از مدل AI', + MESSAGE_NOT_FOUND_OR_ACCESS_DENIED = 'ایمیل یافت نشد یا دسترسی آن را ندارید', + EMAIL_CONTENT_IS_EMPTY_OR_COULD_NOT_BE_EXTRACTED = 'محتوای ایمیل خالی است یا قابل استخراج نیست', + DESCRIPTION_IS_REQUIRED = 'شرح و هدف قالب الزامی است', + DESCRIPTION_MUST_BE_A_STRING = 'شرح قالب باید یک رشته باشد', + DESCRIPTION_MUST_BE_AT_LEAST_10_CHARACTERS = 'شرح قالب باید حداقل ۱۰ کاراکتر باشد', + DESCRIPTION_MUST_BE_LESS_THAN_500_CHARACTERS = 'شرح قالب نمی‌تواند بیشتر از ۵۰۰ کاراکتر باشد', + THEME_MUST_BE_A_VALID_VALUE = 'تم قالب باید یکی از مقادیر مجاز باشد', + STYLE_MUST_BE_A_VALID_VALUE = 'سبک قالب باید یکی از مقادیر مجاز باشد', + PURPOSE_MUST_BE_A_VALID_VALUE = 'هدف قالب باید یکی از مقادیر مجاز باشد', + TEMPLATE_NAME_MUST_BE_A_STRING = 'نام قالب باید یک رشته باشد', + TEMPLATE_NAME_MUST_BE_LESS_THAN_100_CHARACTERS = 'نام قالب نمی‌تواند بیشتر از ۱۰۰ کاراکتر باشد', + PREFERRED_COLORS_MUST_BE_A_STRING = 'رنگ‌های ترجیحی باید یک رشته باشد', + PREFERRED_COLORS_MUST_BE_LESS_THAN_200_CHARACTERS = 'رنگ‌های ترجیحی نمی‌تواند بیشتر از ۲۰۰ کاراکتر باشد', + PREFERRED_COLORS_IS_REQUIRED = 'رنگ‌های ترجیحی الزامی است', +} + +export const enum TwoFactorMessage { + TWO_FACTOR_SETUP_INITIATED = 'راه‌اندازی احراز هویت دو مرحله‌ای با موفقیت آغاز شد', + TWO_FACTOR_ENABLED_SUCCESSFULLY = 'احراز هویت دو مرحله‌ای با موفقیت فعال شد', + TWO_FACTOR_DISABLED_SUCCESSFULLY = 'احراز هویت دو مرحله‌ای با موفقیت غیرفعال شد', + TWO_FACTOR_SETUP_FAILED = 'راه‌اندازی احراز هویت دو مرحله‌ای ناموفق بود', + TWO_FACTOR_ENABLE_FAILED = 'فعال‌سازی احراز هویت دو مرحله‌ای ناموفق بود', + TWO_FACTOR_TOKEN_VERIFIED_SUCCESSFULLY = 'کد احراز هویت دو مرحله‌ای با موفقیت تأیید شد', + TWO_FACTOR_TOKEN_VERIFIED_FAILED = 'کد احراز هویت دو مرحله‌ای نامعتبر می‌باشد', + TWO_FACTOR_NOT_ENABLED = 'احراز هویت دو مرحله‌ای فعال نیست', + TWO_FACTOR_BACKUP_CODES_GENERATED_SUCCESSFULLY = 'کدهای پشتیبان با موفقیت تولید شدند', + TWO_FACTOR_BACKUP_CODE_VERIFIED_SUCCESSFULLY = 'کد پشتیبان با موفقیت تأیید شد', + TWO_FACTOR_BACKUP_CODE_VERIFIED_FAILED = 'کد پشتیبان نامعتبر است', + TWO_FACTOR_TOKEN_REQUIRED = 'کد احراز هویت دو مرحله‌ای الزامی است', + TWO_FACTOR_TOKEN_INVALID = 'کد احراز هویت دو مرحله‌ای نامعتبر است', +} + +export const enum CouponMessage { + NOT_FOUND = 'کوپن یافت نشد', + CODE_ALREADY_EXISTS = 'کد کوپن قبلاً ثبت شده است', + END_DATE_MUST_BE_AFTER_START_DATE = 'تاریخ پایان باید بعد از تاریخ شروع باشد', + PERCENTAGE_MUST_BE_BETWEEN_0_AND_100 = 'درصد تخفیف باید بین ۰ تا ۱۰۰ باشد', + COUPON_INACTIVE = 'کوپن غیرفعال است', + COUPON_NOT_STARTED = 'کوپن هنوز شروع نشده است', + COUPON_EXPIRED = 'کوپن منقضی شده است', + COUPON_MAX_USES_REACHED = 'حداکثر استفاده از کوپن به پایان رسیده است', + MIN_ORDER_AMOUNT_NOT_MET = 'مبلغ سفارش کمتر از حداقل مجاز است', + COUPON_CREATED = 'کوپن با موفقیت ایجاد شد', + COUPON_UPDATED = 'کوپن با موفقیت به‌روزرسانی شد', + COUPON_DELETED = 'کوپن با موفقیت حذف شد', + COUPON_VALID = 'کوپن معتبر است', + COUPON_INVALID = 'کوپن نامعتبر است', + COUPON_RESTRICTED_TO_USER = 'کوپن فقط برای کاربر مشخصی معتبر است', +} + +export const enum ReviewMessage { + NOT_FOUND = 'نظر یافت نشد', + ALREADY_COMMENTED = 'شما قبلاً برای این غذا نظر داده‌اید', + CAN_ONLY_UPDATE_OWN = 'شما فقط می‌توانید نظرات خود را ویرایش کنید', + CAN_ONLY_DELETE_OWN = 'شما فقط می‌توانید نظرات خود را حذف کنید', + RATING_REQUIRED = 'امتیاز الزامی است', + RATING_INVALID = 'امتیاز باید بین ۱ تا ۵ باشد', + COMMENT_CREATED = 'نظر با موفقیت ثبت شد', + COMMENT_UPDATED = 'نظر با موفقیت به‌روزرسانی شد', + COMMENT_DELETED = 'نظر با موفقیت حذف شد', +} + +export const enum IconMessage { + NOT_FOUND = 'آیکون یافت نشد', + NOT_CREATED = 'ایجاد آیکون با خطا مواجه شد', + NOT_UPDATED = 'به‌روزرسانی آیکون با خطا مواجه شد', + NOT_DELETED = 'حذف آیکون با خطا مواجه شد', +} + +export const enum GroupMessage { + NOT_FOUND = 'گروه آیکون یافت نشد', + NOT_CREATED = 'ایجاد گروه آیکون با خطا مواجه شد', + NOT_UPDATED = 'به‌روزرسانی گروه آیکون با خطا مواجه شد', + NOT_DELETED = 'حذف گروه آیکون با خطا مواجه شد', +} + +export const enum OrderMessage { + NOT_FOUND = 'سفارش یافت نشد', + PAYMENT_METHOD_MISSING = 'روش پرداخت سفارش مشخص نشده است', + INVALID_STATUS_TRANSITION = 'انتقال وضعیت نامعتبر است', + CART_EMPTY = 'سبد خرید خالی است. لطفا قبل از ایجاد سفارش، آیتم‌هایی به سبد اضافه کنید', + DELIVERY_METHOD_NOT_FOUND = 'روش ارسال یافت نشد', + PAYMENT_METHOD_REQUIRED = 'روش پرداخت الزامی است. لطفا قبل از ایجاد سفارش، روش پرداخت را تنظیم کنید', + USER_NOT_FOUND = 'کاربر یافت نشد', + RESTAURANT_NOT_FOUND = 'رستوران یافت نشد', + DELIVERY_NOT_FOUND = 'روش ارسال یافت نشد', + MIN_ORDER_AMOUNT_NOT_MET = 'مبلغ سفارش کمتر از حداقل مجاز برای این روش ارسال است', + TABLE_NUMBER_REQUIRED = 'شماره میز برای سفارش در محل الزامی است', + ADDRESS_REQUIRED = 'آدرس الزامی است. لطفا قبل از ایجاد سفارش، آدرس تحویل را تنظیم کنید', + CAR_ADDRESS_REQUIRED = 'آدرس خودرو الزامی است. لطفا قبل از ایجاد سفارش، آدرس خودرو را تنظیم کنید', + PAYMENT_METHOD_NOT_FOUND = 'روش پرداخت یافت نشد', + PAYMENT_METHOD_NOT_ENABLED = 'روش پرداخت برای این رستوران فعال نیست', + FOOD_NOT_FOUND = 'غذا یافت نشد', + FOOD_NOT_BELONGS_TO_RESTAURANT = 'غذا به این رستوران تعلق ندارد', +} + +export const enum CartMessage { + TABLE_NUMBER_REQUIRED = 'شماره میز برای سفارش در محل الزامی است', + CAR_ADDRESS_REQUIRED = 'آدرس خودرو برای تحویل به خودرو الزامی است', + ADDRESS_REQUIRED = 'آدرس برای تحویل پیک الزامی است', + NOT_FOUND = 'سبد خرید یافت نشد', + COUPON_NOT_FOUND = 'کوپن یافت نشد', + FOOD_NOT_FOUND = 'غذا یافت نشد', + FOOD_NOT_BELONGS_TO_RESTAURANT = 'غذا به این رستوران تعلق ندارد', + FOOD_NO_INVENTORY = 'غذا موجودی ندارد', + INSUFFICIENT_STOCK = 'موجودی کافی نیست', + USER_NOT_FOUND = 'کاربر یافت نشد', + ADDRESS_NOT_FOUND = 'آدرس یافت نشد', + RESTAURANT_NOT_FOUND = 'رستوران یافت نشد', + ADDRESS_NOT_BELONGS_TO_USER = 'آدرس به کاربر فعلی تعلق ندارد', + ADDRESS_NO_COORDINATES = 'آدرس مختصات جغرافیایی ندارد', + ADDRESS_OUTSIDE_SERVICE_AREA = 'آدرس خارج از محدوده سرویس رستوران است', + DELIVERY_METHOD_NOT_FOUND = 'روش ارسال یافت نشد', + DELIVERY_METHOD_NOT_ENABLED = 'روش ارسال برای این رستوران فعال نیست', + PAYMENT_METHOD_NOT_FOUND = 'روش پرداخت یافت نشد', + PAYMENT_METHOD_NOT_ENABLED = 'روش پرداخت برای این رستوران فعال نیست', + WALLET_NOT_FOUND = 'کیف پول کاربر یافت نشد', + WALLET_INSUFFICIENT = 'موجودی کیف پول کافی نیست', + COUPON_MAX_USES_REACHED = 'حداکثر استفاده از کوپن به پایان رسیده است', + ITEM_NOT_FOUND = 'آیتم در سبد خرید یافت نشد', + DELIVERY_METHOD_NOT_FOUND_FOR_RESTAURANT = 'روش ارسال برای این رستوران یافت نشد', + COUPON_CANNOT_BE_APPLIED = 'این کوپن قابل اعمال بر روی آیتم‌های سبد خرید شما نیست. لطفا آیتم‌هایی از دسته‌بندی‌ها یا غذاهای مشخص شده اضافه کنید', + FOODS_MUST_HAVE_PICKUP_SERVE_FOR_COURIER = 'تمام غذاها باید قابلیت تحویل پیک داشته باشند. غذاهای زیر این قابلیت را ندارند: [foodTitles]', + FOOD_ONLY_AVAILABLE_DURING_MEAL_TIMES = 'غذا [foodTitle] فقط در ساعات وعده‌های غذایی (صبحانه، ناهار، عصرانه یا شام) در دسترس است. زمان فعلی خارج از ساعات وعده‌های غذایی است', + FOOD_ONLY_AVAILABLE_FOR_MEAL_TYPES = 'غذا [foodTitle] فقط برای [allowedMealTypes] در دسترس است. زمان فعلی [mealType] است که با این غذا سازگار نیست', + FOOD_ONLY_AVAILABLE_ON_DAYS = 'غذا [foodTitle] فقط در روزهای [allowedDays] در دسترس است. امروز [currentDay] است که این غذا در دسترس نیست', +} + +export const enum PaymentMessage { + UNSUPPORTED_PAYMENT_METHOD = 'روش پرداخت پشتیبانی نمی‌شود', + ORDER_NOT_FOUND = 'سفارش یافت نشد', + AMOUNT_MUST_BE_GREATER_THAN_ZERO = 'مبلغ باید بیشتر از صفر باشد', + PAYMENT_METHOD_NOT_FOUND = 'روش پرداخت یافت نشد', + GATEWAY_REQUIRED = 'درگاه پرداخت برای پرداخت آنلاین الزامی است', + MERCHANT_ID_REQUIRED = 'شناسه مرچنت برای پرداخت آنلاین الزامی است', + RESTAURANT_DOMAIN_REQUIRED = 'دامنه رستوران برای پرداخت آنلاین الزامی است', + WALLET_NOT_FOUND = 'کیف پول کاربر یافت نشد', + INSUFFICIENT_WALLET_BALANCE = 'موجودی کیف پول کافی نیست', + PAYMENT_NOT_FOUND = 'پرداخت یافت نشد', + INVALID_PAYMENT_CONFIGURATION = 'پیکربندی پرداخت نامعتبر است', + PAYMENT_METHOD_NOT_CASH = 'روش پرداخت نقدی نیست', + PAYMENT_ALREADY_PAID = 'پرداخت قبلا انجام شده است', + EXISTING_PENDING_PAYMENT_MISMATCH = 'پرداخت در انتظار موجود با روش پرداخت سفارش مطابقت ندارد', + ZARINPAL_INVALID_RESPONSE = 'پاسخ نامعتبر از API زرین‌پال', + ZARINPAL_PAYMENT_REQUEST_ERROR = 'خطا در درخواست پرداخت زرین‌پال', + ZARINPAL_VERIFY_ERROR = 'خطا در تایید پرداخت زرین‌پال', + GATEWAY_ERROR = 'خطا در اتصال به درگاه پرداخت', +} + +export const enum DeliveryMessage { + RESTAURANT_NOT_FOUND = 'رستوران یافت نشد', + DELIVERY_METHOD_NOT_FOUND = 'روش ارسال یافت نشد', +} + +export const enum InventoryMessage { + AVAILABLE_STOCK_EXCEEDS_TOTAL = 'موجودی موجود نمی‌تواند از موجودی کل بیشتر باشد', + FOOD_NOT_FOUND = 'غذا یافت نشد', + FOOD_NOT_BELONGS_TO_RESTAURANT = 'غذا به این رستوران تعلق ندارد', + RESTAURANT_NOT_FOUND = 'رستوران یافت نشد', + FOODS_NOT_FOUND = 'غذاها یافت نشدند', +} + + +export const enum PagerMessage { + CREATED_SUCCESS = 'درخواست پیج با موفقیت ایجاد شد', +} + +export const enum UserSuccessMessage { + ADDRESS_DELETED_SUCCESS = 'آدرس با موفقیت حذف شد', + SCORE_CONVERTED_SUCCESS = 'امتیاز با موفقیت به کیف پول تبدیل شد', +} + +export const enum ContactMessage { + NOT_FOUND = 'تماس یافت نشد', + CREATED = 'تماس با موفقیت ثبت شد', + UPDATED = 'تماس با موفقیت به‌روزرسانی شد', + DELETED = 'تماس با موفقیت حذف شد', +} + diff --git a/src/common/enums/permission.enum.ts b/src/common/enums/permission.enum.ts new file mode 100644 index 0000000..5840a8f --- /dev/null +++ b/src/common/enums/permission.enum.ts @@ -0,0 +1,63 @@ +/** + * Permission names enum + * All permission names used in the system should be defined here + */ +export enum Permission { + MANAGE_PAGER = 'manage_pager', + // Food Management + MANAGE_FOODS = 'manage_foods', + MANAGE_CATEGORIES = 'manage_categories', + + // Order Management + MANAGE_ORDERS = 'manage_orders', + + // User & Admin Management + MANAGE_ADMINS = 'manage_admins', + MANAGE_USERS = 'manage_users', + + // Reports & Finances + VIEW_REPORTS = 'view_reports', + + + UPDATE_RESTAURANT = 'update_restaurant', + + // Role Management + MANAGE_ROLES = 'manage_roles', + MANAGE_REVIEWS = 'manage_reviews', + MANAGE_COUPONS = 'manage_coupons', + MANAGE_PAYMENTS = 'manage_payments', + MANAGE_DELIVERY = 'manage_delivery', + MANAGE_SETTINGS = 'manage_settings', + MANAGE_SCHEDULES = 'manage_schedules', + MANAGE_REPORTS = 'manage_reports', + MANAGE_CONTACTS = 'manage_contacts', + + NEW_ORDER_NOTIFICATION='new_order_notification', + PAGER_NOTIFICATION='pager_notification' +} + +/** + * Permission titles mapping (Farsi) + * Maps permission names to their Farsi titles + */ +export const PermissionTitles: Record = { + [Permission.MANAGE_PAGER]: 'مدیریت پیجر', + [Permission.MANAGE_FOODS]: 'مدیریت غذاها', + [Permission.MANAGE_CATEGORIES]: 'مدیریت دسته‌بندی‌ها', + [Permission.MANAGE_ORDERS]: 'مدیریت سفارشات', + [Permission.MANAGE_ADMINS]: 'مدیریت مدیران', + [Permission.MANAGE_USERS]: 'مدیریت کاربران', + [Permission.VIEW_REPORTS]: 'مشاهده گزارشات', + [Permission.UPDATE_RESTAURANT]: 'ویرایش رستوران', + [Permission.MANAGE_ROLES]: 'مدیریت نقش‌ها', + [Permission.MANAGE_REVIEWS]: 'مدیریت نظرات', + [Permission.MANAGE_COUPONS]: 'مدیریت کوپن‌ها', + [Permission.MANAGE_PAYMENTS]: 'مدیریت پرداخت‌ها', + [Permission.MANAGE_DELIVERY]: 'مدیریت تحویل', + [Permission.MANAGE_SETTINGS]: 'مدیریت تنظیمات', + [Permission.MANAGE_SCHEDULES]: 'مدیریت برنامه‌ها', + [Permission.MANAGE_REPORTS]: 'مدیریت گزارشات', + [Permission.MANAGE_CONTACTS]: 'مدیریت تماس‌های کاربران', + [Permission.NEW_ORDER_NOTIFICATION]: "نوتیف سفارش جدید", + [Permission.PAGER_NOTIFICATION]: "نوتیف پیجر جدید" +}; diff --git a/src/common/interfaces/pagination.interface.ts b/src/common/interfaces/pagination.interface.ts new file mode 100644 index 0000000..e76e9d1 --- /dev/null +++ b/src/common/interfaces/pagination.interface.ts @@ -0,0 +1,9 @@ +export interface PaginatedResult { + data: T[]; + meta: { + total: number; + page: number; + limit: number; + totalPages: number; + }; +} diff --git a/src/common/providers/mikro-orm-logger.provider.ts b/src/common/providers/mikro-orm-logger.provider.ts new file mode 100644 index 0000000..9966342 --- /dev/null +++ b/src/common/providers/mikro-orm-logger.provider.ts @@ -0,0 +1,9 @@ +import type { ValueProvider } from '@nestjs/common'; +import { Logger } from '@nestjs/common'; + +import { MIKRO_ORM_QUERY_LOGGER } from '../constants'; + +export const mikroOrmQueryLoggerProvider: ValueProvider = { + provide: MIKRO_ORM_QUERY_LOGGER, // + useValue: new Logger('mikro-orm'), +}; diff --git a/src/config/cache.config.ts b/src/config/cache.config.ts new file mode 100755 index 0000000..c2134ea --- /dev/null +++ b/src/config/cache.config.ts @@ -0,0 +1,27 @@ +import { Keyv } from 'keyv'; +import KeyvRedis from '@keyv/redis'; +import type { CacheModuleAsyncOptions } from '@nestjs/cache-manager'; +import { ConfigService } from '@nestjs/config'; +import { CacheableMemory } from 'cacheable'; + +export function cacheConfig(): CacheModuleAsyncOptions { + return { + isGlobal: true, + inject: [ConfigService], + useFactory: async (configService: ConfigService) => { + const redisUri = configService.get('REDIS_URI'); + const namespace = configService.get('CACHE_NAMESPACE', 'app-cache'); + const ttl = +configService.get('CACHE_TTL', 3600); //1 hour + + return { + stores: [ + new Keyv({ + store: new CacheableMemory({ ttl: ttl * 1000, lruSize: 5000 }), + namespace: namespace + }), + new KeyvRedis(redisUri, { namespace: namespace }), + ], + }; + }, + }; +} \ No newline at end of file diff --git a/src/config/http.config.ts b/src/config/http.config.ts new file mode 100755 index 0000000..7f7d11f --- /dev/null +++ b/src/config/http.config.ts @@ -0,0 +1,16 @@ +import type { HttpModuleAsyncOptions } from '@nestjs/axios'; +import { ConfigService } from '@nestjs/config'; + +export function httpConfig(): HttpModuleAsyncOptions { + return { + inject: [ConfigService], + global: true, + useFactory: (configService: ConfigService) => { + return { + timeout: configService.getOrThrow('AXIOS_TIMEOUT'), + headers: { 'Content-Type': 'application/json' }, + global: true, + }; + }, + }; +} diff --git a/src/config/mikro-orm.config.dev.ts b/src/config/mikro-orm.config.dev.ts new file mode 100644 index 0000000..fec939c --- /dev/null +++ b/src/config/mikro-orm.config.dev.ts @@ -0,0 +1,101 @@ +import { defineConfig, PostgreSqlDriver } from '@mikro-orm/postgresql'; +import * as dotenv from 'dotenv'; + +// 1. Load environment variables from your .env file +dotenv.config(); + +// 2. Read variables directly from process.env +const DB_PASS = process.env.DB_PASS; +const DB_USER = process.env.DB_USER; +const DB_HOST = process.env.DB_HOST; +const DB_PORT = process.env.DB_PORT ? +process.env.DB_PORT : 5432; +const DB_NAME = process.env.DB_NAME; +const isProduction = process.env.NODE_ENV === 'production'; + +// 3. Add checks to ensure variables are loaded +if (!DB_PASS || !DB_USER || !DB_HOST || !DB_PORT || !DB_NAME) { + throw new Error('One or more database environment variables are not set.'); +} + +const encodedPassword = encodeURIComponent(DB_PASS); + +// 4. Export the result of defineConfig as the default +export default defineConfig({ + entities: ['dist/**/*.entity.js'], + entitiesTs: ['src/**/*.entity.ts'], + driver: PostgreSqlDriver, + dbName: DB_NAME, + debug: false, + clientUrl: `postgres://${DB_USER}:${encodedPassword}@${DB_HOST}:${DB_PORT}`, + ensureDatabase: isProduction + ? false + : { + forceCheck: true, + create: true, + schema: 'update', + }, + forceUtcTimezone: true, + pool: { + min: isProduction ? 5 : 2, + max: isProduction ? 20 : 10, + idleTimeoutMillis: 30000, + acquireTimeoutMillis: 30000, + reapIntervalMillis: 1000, + createTimeoutMillis: 15000, + destroyTimeoutMillis: 5000, + }, + // 5. Use console for CLI logging, not the injected Nest logger + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + logger: isProduction ? console.log.bind(console) : console.debug.bind(console), + schemaGenerator: { + disableForeignKeys: false, + }, + migrations: { + path: './database/migrations', + pathTs: './database/migrations', + tableName: 'migrations', + transactional: true, + allOrNothing: true, + dropTables: false, + safe: true, + emit: 'ts', + }, + connect: true, + allowGlobalContext: true, + seeder: { + path: './dist/seeders', + pathTs: './src/seeders', + defaultSeeder: 'DatabaseSeeder', + }, + driverOptions: { + connection: { + keepAlive: true, + keepAliveInitialDelayMillis: 10000, + statement_timeout: 60000, + query_timeout: 60000, + idle_in_transaction_session_timeout: 60000, + connectionTimeoutMillis: 10000, + application_name: DB_NAME, + }, + connectionRetries: 5, + connectionRetryDelay: 3000, + validateConnection: (connection: any) => { + try { + return !!(connection && !connection.closed); + } catch (e: unknown) { + // Use console.error directly + console.error(`Connection validation failed: ${(e as Error).message}`); + return false; + } + }, + poolErrorHandler: (err: Error) => { + // Use console.error directly + console.error(`PostgreSQL pool error: ${err.message}`); + if (err.message.includes('ECONNRESET') || err.message.includes('Connection terminated unexpectedly')) { + console.warn('Connection reset detected, will attempt to reconnect'); + return true; + } + return false; + }, + }, +}); diff --git a/src/config/mikro-orm.config.ts b/src/config/mikro-orm.config.ts new file mode 100644 index 0000000..4d4cef9 --- /dev/null +++ b/src/config/mikro-orm.config.ts @@ -0,0 +1,109 @@ +import type { MikroOrmModuleAsyncOptions } from '@mikro-orm/nestjs'; +import { ConfigService } from '@nestjs/config'; +import { PostgreSqlDriver } from '@mikro-orm/postgresql'; +// import { defineConfig } from '@mikro-orm/postgresql'; + +import type { Logger } from '@nestjs/common'; +import { MIKRO_ORM_QUERY_LOGGER } from '../common/constants'; +import { mikroOrmQueryLoggerProvider } from '../common/providers/mikro-orm-logger.provider'; + +const dataBaseConfig: MikroOrmModuleAsyncOptions = { + // entities: ['dist/**/*.entity.js'], + // entitiesTs: ['src/**/*.entity.ts'], + // dbName: 'your_db_name', + // type: 'postgresql', + // user: 'your_user', + // password: 'your_password', + // host: 'localhost', + // port: 5432, + // debug: true, + + inject: [ConfigService, MIKRO_ORM_QUERY_LOGGER], + providers: [mikroOrmQueryLoggerProvider], + useFactory: (configService: ConfigService, logger: Logger) => { + const DB_PASS = configService.getOrThrow('DB_PASS'); + const DB_USER = configService.getOrThrow('DB_USER'); + const DB_HOST = configService.getOrThrow('DB_HOST'); + const DB_PORT = configService.getOrThrow('DB_PORT'); + const DB_NAME = configService.getOrThrow('DB_NAME'); + const encodedPassword = encodeURIComponent(DB_PASS); + const isProduction = configService.getOrThrow('NODE_ENV') === 'production'; + + return { + // entities: ['dist/**/*.entity.js'], + entitiesTs: ['src/**/*.entity.ts'], + driver: PostgreSqlDriver, + autoLoadEntities: true, + dbName: DB_NAME, + debug: false, + clientUrl: `postgres://${DB_USER}:${encodedPassword}@${DB_HOST}:${DB_PORT}`, + ensureDatabase: isProduction + ? false + : { + forceCheck: true, + create: true, + schema: 'update', + }, + forceUtcTimezone: true, + pool: { + min: isProduction ? 5 : 2, + max: isProduction ? 20 : 10, + idleTimeoutMillis: 30000, + acquireTimeoutMillis: 30000, + reapIntervalMillis: 1000, + createTimeoutMillis: 15000, + destroyTimeoutMillis: 5000, + }, + logger: isProduction ? message => logger.log(message) : message => logger.debug(message), + schemaGenerator: { + // createForeignKey: !isProduction, + disableForeignKeys: false, + // createIndex: true, + }, + migrations: { + path: './database/migrations', + pathTs: './database/migrations', + tableName: 'migrations', + transactional: true, + allOrNothing: true, + dropTables: false, + safe: true, + emit: 'ts', + }, + connect: true, + allowGlobalContext: true, + driverOptions: { + connection: { + keepAlive: true, + keepAliveInitialDelayMillis: 10000, + statement_timeout: 60000, + query_timeout: 60000, + idle_in_transaction_session_timeout: 60000, + connectionTimeoutMillis: 10000, + application_name: configService.getOrThrow('DB_NAME'), + }, + connectionRetries: 5, + connectionRetryDelay: 3000, + validateConnection: (connection: any) => { + try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + return !!(connection && !connection.closed); + } catch (e: unknown) { + logger.error(`Connection validation failed: ${(e as Error).message}`); + return false; + } + }, + poolErrorHandler: (err: Error) => { + logger.error(`PostgreSQL pool error: ${err.message}`); + if (err.message.includes('ECONNRESET') || err.message.includes('Connection terminated unexpectedly')) { + logger.warn('Connection reset detected, will attempt to reconnect'); + return true; + } + return false; + }, + }, + }; + }, +}; + +export default dataBaseConfig; diff --git a/src/config/swagger.config.ts b/src/config/swagger.config.ts new file mode 100644 index 0000000..fe3b7a8 --- /dev/null +++ b/src/config/swagger.config.ts @@ -0,0 +1,27 @@ +import type { INestApplication } from '@nestjs/common'; +import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; + +export function getSwaggerConfig(app: INestApplication) { + const config = new DocumentBuilder() + .setTitle('D-menu API') + .setDescription('API documentation for D-menu backend') + .setVersion('1.0') + .addBearerAuth() // optional: for JWT endpoints + .build(); + + const document = SwaggerModule.createDocument(app, config); + + SwaggerModule.setup('docs', app, document, { + swaggerOptions: { + persistAuthorization: true, + displayRequestDuration: true, + filter: true, + showExtensions: true, + docExpansion: 'none', + + // HIDE MODELS / SCHEMAS + defaultModelsExpandDepth: -1, + defaultModelExpandDepth: -1, + }, + }); +} diff --git a/src/core/exceptions/http.exceptions.ts b/src/core/exceptions/http.exceptions.ts new file mode 100755 index 0000000..010de9d --- /dev/null +++ b/src/core/exceptions/http.exceptions.ts @@ -0,0 +1,48 @@ +import { ArgumentsHost, Catch, ExceptionFilter, HttpException, HttpStatus } from '@nestjs/common'; +import { FastifyReply } from 'fastify'; + +@Catch(HttpException) +export class HttpExceptionFilter implements ExceptionFilter { + catch(exception: HttpException, host: ArgumentsHost) { + // Handle HTTP/REST context + try { + const ctx = host.switchToHttp(); + const reply = ctx.getResponse(); + + // Safety check: ensure reply has the status method + if (!reply || typeof reply.status !== 'function') { + return; + } + + // const request = ctx.getRequest(); + const status = exception.getStatus() || HttpStatus.INTERNAL_SERVER_ERROR; + + const exceptionResponse = exception.getResponse(); + const message = this.extractMessage(exceptionResponse); + + reply.status(status).send({ + statusCode: status, + success: false, + error: { + message, + // timestamp: new Date().toISOString(), + // path: request.url, + }, + }); + } catch { + // If we can't handle it, let it propagate + return; + } + } + + private extractMessage(response: string | Record): string | string[] { + if (typeof response === 'string') { + return [response]; + } + if (typeof response === 'object' && 'message' in response) { + return Array.isArray(response.message) ? response.message : [response.message]; + } + + return 'something wrong'; + } +} diff --git a/src/core/interceptors/pagination.interceptor.ts b/src/core/interceptors/pagination.interceptor.ts new file mode 100755 index 0000000..84b169f --- /dev/null +++ b/src/core/interceptors/pagination.interceptor.ts @@ -0,0 +1,61 @@ +// import { CallHandler, ExecutionContext, Injectable, Logger, NestInterceptor } from '@nestjs/common'; +// import { FastifyRequest } from 'fastify'; +// import { Observable, map } from 'rxjs'; + +// import { IPageFormat } from '../../../../danak_dsc_api/src/common/interfaces/IPagination'; + +// @Injectable() +// export class PaginationInterceptor implements NestInterceptor { +// private readonly logger = new Logger(PaginationInterceptor.name); + +// intercept(context: ExecutionContext, next: CallHandler): Observable { +// const request = context.switchToHttp().getRequest(); +// const query = request.query as { page: string; limit: string }; + +// const page = parseInt(query.page, 10) || 1; +// const limit = parseInt(query.limit, 10) || 10; + +// const className = context.getClass().name; +// const handlerName = context.getHandler().name; + +// return next.handle().pipe( +// map(data => { +// if (data && (data.paginate || data.count)) { +// const { count, paginate, ...response } = data; +// this.logger.log(`paginate response from ${className}.${handlerName}`); +// const pager = this.formatPage(page, limit, count, request); + +// return { +// pager, +// ...response, +// }; +// } + +// return data; +// }), +// ); +// } + +// private formatPage(page: number, limit: number, totalItems: number, request: FastifyRequest): IPageFormat { +// const totalPages = Math.ceil(totalItems / limit); +// const prevPage = page === 1 ? false : page - 1; +// const nextPage = page >= totalPages ? false : page + 1; + +// const formatLink = (pageNum: number | boolean): string | boolean => { +// if (!pageNum) return false; +// const protocol = request.protocol; +// const hostname = request.hostname; +// const originalUrl = request.url; +// return `${protocol}://${hostname}${originalUrl.split('?')[0]}?page=${pageNum}&limit=${limit}`; +// }; + +// return { +// page, +// limit, +// totalItems, +// totalPages, +// prevPage: formatLink(prevPage), +// nextPage: formatLink(nextPage), +// }; +// } +// } diff --git a/src/core/interceptors/response.interceptor.ts b/src/core/interceptors/response.interceptor.ts new file mode 100755 index 0000000..fd88467 --- /dev/null +++ b/src/core/interceptors/response.interceptor.ts @@ -0,0 +1,68 @@ +import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common'; +import { FastifyReply } from 'fastify'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +@Injectable() +export class ResponseInterceptor implements NestInterceptor { + constructor() { } + + intercept(context: ExecutionContext, next: CallHandler>): Observable { + // For REST endpoints, wrap the response + try { + const ctx = context.switchToHttp().getResponse(); + const statusCode = ctx.statusCode; + + // If statusCode is undefined, skip wrapping + if (statusCode === undefined) { + return next.handle(); + } + + return next.handle().pipe( + map(data => { + // If data is already wrapped or doesn't need wrapping, return as-is + if (data && typeof data === 'object' && 'data' in data && 'success' in data) { + console.log('data', data) + + return { + data: data, + ...('nextCursor' in (data as any) && (data as any).nextCursor != null + ? { nextCursor: (data as any).nextCursor } + : {}), + } + } + + // Check if this is a paginated result (has both data and meta properties) + if (data && typeof data === 'object' && 'data' in data && 'meta' in data) { + return { + statusCode, + success: true, + data: data.data, + meta: data.meta, + }; + } + + if (data && 'data' in data) { + + return { + statusCode, + success: true, + data: data.data, + ...('nextCursor' in data + ? { nextCursor: (data as any).nextCursor } + : {}), + }; + } + return { + statusCode, + success: true, + data, + }; + }), + ); + } catch { + // If we can't get HTTP context, return data as-is + return next.handle(); + } + } +} diff --git a/src/core/middlewares/logger.middleware.ts b/src/core/middlewares/logger.middleware.ts new file mode 100755 index 0000000..1c84e35 --- /dev/null +++ b/src/core/middlewares/logger.middleware.ts @@ -0,0 +1,26 @@ +import { Injectable, Logger, NestMiddleware } from '@nestjs/common'; +import { FastifyReply, FastifyRequest } from 'fastify'; + +@Injectable() +export class HTTPLogger implements NestMiddleware { + private readonly logger = new Logger(HTTPLogger.name); + // use(req: any, res: any, next: (error?: Error | any) => void) {} + + use(req: FastifyRequest, rep: FastifyReply['raw'], next: () => void) { + const { ip, method, originalUrl } = req; + const userAgent = req.headers['user-agent'] || ''; + const startAt = process.hrtime(); + + rep.on('finish', () => { + const { statusCode } = rep; + const contentLength = rep.getHeader('content-length') || 0; + const dif = process.hrtime(startAt); + const responseTime = dif[0] * 1e3 + dif[1] * 1e-6; + this.logger.log( + `${method} - ${originalUrl} - ${statusCode} - ${contentLength} - ${userAgent} - ${ip} - ${responseTime.toFixed(2)}ms`, + ); + }); + + next(); + } +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..77c1815 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,61 @@ +import { NestFactory } from '@nestjs/core'; +import { AppModule } from './app.module'; +import { ConfigService } from '@nestjs/config'; +import { Logger, ValidationPipe } from '@nestjs/common'; +import { getSwaggerConfig } from './config/swagger.config'; +import multipart from '@fastify/multipart'; +import fastifyCookie from '@fastify/cookie'; + +// 👈 Import the Fastify application type +import { type NestFastifyApplication, FastifyAdapter } from '@nestjs/platform-fastify'; +import { HttpExceptionFilter } from './core/exceptions/http.exceptions'; +import { ResponseInterceptor } from './core/interceptors/response.interceptor'; +// import { PaginationInterceptor } from './core/interceptors/pagination.interceptor'; + +async function bootstrap() { + const logger = new Logger('APP'); + + // 1. Create the application using the Fastify adapter + const app = await NestFactory.create( + AppModule, + new FastifyAdapter(), // Instantiate the FastifyAdapter + // Optional: Pass the custom logger (like your 'APP' logger) to NestFactory + { logger: ['error', 'warn', 'log', 'debug', 'verbose'] }, + ); + + await app.register(fastifyCookie); + + await app.register(multipart); + app.useGlobalPipes(new ValidationPipe()); + + app.useGlobalInterceptors( + new ResponseInterceptor(), + // , new PaginationInterceptor() + ); + app.useGlobalFilters(new HttpExceptionFilter()); + + const configService = app.get(ConfigService); + // Ensure the port is handled correctly, use 4000 as fallback if needed + const APP_PORT = configService.getOrThrow('APP_PORT') ?? 4000; + + // 2. Swagger Integration Note + // Since you are using platform-fastify, you must ensure your getSwaggerConfig + // function is configured to use the Fastify platform option if necessary. + getSwaggerConfig(app); + + app.enableCors({ + origin: true, + methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'], + credentials: true, + optionsSuccessStatus: 204, + }); + + // 3. Listen on port using Fastify's listen method + // '0.0.0.0' is recommended for Docker/containerized environments + await app.listen(APP_PORT, '0.0.0.0', () => { + logger.log(`Application is running on: http://localhost:${APP_PORT}`); + logger.log(`Swagger documentation: http://localhost:${APP_PORT}/docs`); + }); +} + +bootstrap(); diff --git a/src/modules/admin/admin.module.ts b/src/modules/admin/admin.module.ts new file mode 100644 index 0000000..eced9fc --- /dev/null +++ b/src/modules/admin/admin.module.ts @@ -0,0 +1,27 @@ +import { Module, forwardRef } from '@nestjs/common'; +import { AdminService } from './providers/admin.service'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { Admin } from './entities/admin.entity'; +import { JwtModule } from '@nestjs/jwt'; +import { AdminRepository } from './repositories/admin.repository'; +import { Role } from '../roles/entities/role.entity'; +import { Permission } from '../roles/entities/permission.entity'; +import { RolePermission } from '../roles/entities/rolePermission.entity'; +import { AdminController } from './controllers/admin.controller'; +import { UtilsModule } from '../utils/utils.module'; +import { RestaurantsModule } from '../restaurants/restaurants.module'; +import { AdminRole } from './entities/adminRole.entity'; +import { AdminRoleRepository } from './repositories/admin-role.repository'; + +@Module({ + providers: [AdminService, AdminRepository, AdminRoleRepository], + controllers: [AdminController], + imports: [ + MikroOrmModule.forFeature([Admin, Role, Permission, RolePermission, AdminRole]), + JwtModule, + UtilsModule, + forwardRef(() => RestaurantsModule), + ], + exports: [AdminService, AdminRepository], +}) +export class AdminModule { } diff --git a/src/modules/admin/controllers/admin.controller.ts b/src/modules/admin/controllers/admin.controller.ts new file mode 100644 index 0000000..f621b7d --- /dev/null +++ b/src/modules/admin/controllers/admin.controller.ts @@ -0,0 +1,104 @@ +import { Controller, Post, Body, HttpCode, HttpStatus, Get, UseGuards, Patch, Param, Delete } from '@nestjs/common'; +import { AdminService } from '../providers/admin.service'; +import { CreateAdminDto } from '../dto/create-admin.dto'; +import { UpdateAdminDto } from '../dto/update-admin.dto'; +import { ApiTags, ApiOperation, ApiBody, ApiBearerAuth, ApiParam } from '@nestjs/swagger'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { SuperAdminAuthGuard } from 'src/modules/auth/guards/superAdminAuth.guard'; +import { RestId } from 'src/common/decorators'; +import { AdminId } from 'src/common/decorators/admin-id.decorator'; +import { Admin } from '../entities/admin.entity'; +import { Permission } from 'src/common/enums/permission.enum'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { CreateMyRestaurantAdminDto } from '../dto/create-my-restaurant-admin.dto'; + +@ApiBearerAuth() +@ApiTags('admin') +@Controller() +export class AdminController { + constructor(private readonly adminService: AdminService) { } + + @Get('admin/admins') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ADMINS) + getAll(@RestId() restId: string) { + return this.adminService.findAllByRestaurantId(restId); + } + + @Get('admin/admins/profile') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ADMINS) + getMe(@AdminId() adminId: string, @RestId() restId: string) { + return this.adminService.finAdminById(adminId, restId); + } + + @Post('admin/admins') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ADMINS) + @HttpCode(HttpStatus.CREATED) + @ApiOperation({ summary: 'Create a new admin' }) + @ApiBody({ type: CreateAdminDto }) + async create(@Body() dto: CreateAdminDto, @RestId() restId: string) { + const admin = await this.adminService.createAdminForMyRestaurant(restId, dto); + return admin; + } + + @Patch('admin/admins/:adminId') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ADMINS) + @ApiOperation({ summary: 'Update an admin' }) + @ApiParam({ name: 'adminId', description: 'Admin ID' }) + update(@Param('adminId') adminId: string, @Body() dto: UpdateAdminDto, + @RestId() restId: string) { + return this.adminService.update(adminId, restId, dto); + } + + @Get('admin/admins/:adminId') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ADMINS) + getById(@Param('adminId') adminId: string, @RestId() restId: string) { + return this.adminService.finAdminById(adminId, restId); + } + + @Delete('admin/admins/:adminId') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ADMINS) + @ApiOperation({ summary: 'Delete an admin by ID' }) + @ApiParam({ name: 'id', description: 'Admin ID' }) + deleteById(@Param('adminId') adminId: string, @RestId() restId: string) { + return this.adminService.remove(adminId, restId); + } + + /** Super Admin Endpoints */ + @UseGuards(SuperAdminAuthGuard) + @Get('super-admin/restaurants/:restaurantId/admins') + @ApiOperation({ summary: 'Get admins for a specific restaurant (Super Admin only)' }) + @ApiParam({ name: 'restaurantId', description: 'Restaurant ID' }) + getAdminForRestaurant(@Param('restaurantId') restaurantId: string) { + return this.adminService.getAdminsForRestaurantBySuperAdmin(restaurantId); + } + + @UseGuards(SuperAdminAuthGuard) + @Post('super-admin/restaurants/:restaurantId/admins') + @ApiOperation({ summary: 'Create admin for a specific restaurant (Super Admin only)' }) + @ApiParam({ name: 'restaurantId', description: 'Restaurant ID' }) + @ApiBody({ type: CreateMyRestaurantAdminDto }) + createAdminForRestaurant( + @Param('restaurantId') restaurantId: string, + @Body() dto: CreateMyRestaurantAdminDto, + ): Promise { + return this.adminService.createAdminForRestaurantBySuperAdmin(restaurantId, dto); + } + + @UseGuards(SuperAdminAuthGuard) + @Delete('super-admin/restaurants/:restaurantId/admins/:adminId') + @ApiOperation({ summary: 'Revoke admin role from a restaurant (Super Admin only)' }) + @ApiParam({ name: 'restaurantId', description: 'Restaurant ID' }) + @ApiParam({ name: 'adminId', description: 'Admin ID' }) + revokeAdminFromRestaurant( + @Param('restaurantId') restaurantId: string, + @Param('adminId') adminId: string, + ) { + return this.adminService.remove(adminId, restaurantId); + } +} diff --git a/src/modules/admin/dto/create-admin.dto.ts b/src/modules/admin/dto/create-admin.dto.ts new file mode 100644 index 0000000..8acff49 --- /dev/null +++ b/src/modules/admin/dto/create-admin.dto.ts @@ -0,0 +1,24 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsOptional, IsString } from 'class-validator'; + +export class CreateAdminDto { + @ApiProperty({ description: 'Mobile phone number' }) + @IsNotEmpty() + @IsString() + phone!: string; + + @ApiProperty({ description: 'First name', required: false }) + @IsOptional() + @IsString() + firstName?: string; + + @ApiProperty({ description: 'Last name', required: false }) + @IsOptional() + @IsString() + lastName?: string; + + @ApiProperty({ description: 'Role id for the admin' }) + @IsNotEmpty() + @IsString() + roleId!: string; +} diff --git a/src/modules/admin/dto/create-my-restaurant-admin.dto.ts b/src/modules/admin/dto/create-my-restaurant-admin.dto.ts new file mode 100644 index 0000000..9387a01 --- /dev/null +++ b/src/modules/admin/dto/create-my-restaurant-admin.dto.ts @@ -0,0 +1,24 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsOptional, IsString } from 'class-validator'; + +export class CreateMyRestaurantAdminDto { + @ApiProperty({ description: 'Mobile phone number' }) + @IsNotEmpty() + @IsString() + phone!: string; + + @ApiProperty({ description: 'First name', required: false }) + @IsOptional() + @IsString() + firstName?: string; + + @ApiProperty({ description: 'Last name', required: false }) + @IsOptional() + @IsString() + lastName?: string; + + @ApiProperty({ description: 'Role id for the admin' }) + @IsNotEmpty() + @IsString() + roleId!: string; +} diff --git a/src/modules/admin/dto/update-admin.dto.ts b/src/modules/admin/dto/update-admin.dto.ts new file mode 100644 index 0000000..5fec45b --- /dev/null +++ b/src/modules/admin/dto/update-admin.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateAdminDto } from './create-admin.dto'; + +export class UpdateAdminDto extends PartialType(CreateAdminDto) {} diff --git a/src/modules/admin/entities/admin.entity.ts b/src/modules/admin/entities/admin.entity.ts new file mode 100644 index 0000000..9ce3a28 --- /dev/null +++ b/src/modules/admin/entities/admin.entity.ts @@ -0,0 +1,31 @@ +import { Cascade, Collection, Entity, OneToMany, Property } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { AdminRole } from './adminRole.entity'; +import { normalizePhone } from '../../utils/phone.util'; + +@Entity({ tableName: 'admins' }) +export class Admin extends BaseEntity { + @Property({ nullable: true }) + firstName?: string; + + @Property({ nullable: true }) + lastName?: string; + + private _phone!: string; + + @Property({ unique: true }) + get phone(): string { + return this._phone; + } + + set phone(value: string) { + this._phone = normalizePhone(value); + } + + @OneToMany(() => AdminRole, adminRole => adminRole.admin, { + cascade: [Cascade.ALL], + orphanRemoval: true, + }) + roles = new Collection(this); + +} diff --git a/src/modules/admin/entities/adminRole.entity.ts b/src/modules/admin/entities/adminRole.entity.ts new file mode 100644 index 0000000..1e001c3 --- /dev/null +++ b/src/modules/admin/entities/adminRole.entity.ts @@ -0,0 +1,21 @@ +import { Entity, Index, ManyToOne, Unique } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Role } from '../../roles/entities/role.entity'; +import { Restaurant } from 'src/modules/restaurants/entities/restaurant.entity'; +import { Admin } from './admin.entity'; + +@Entity({ tableName: 'admin_roles' }) +@Unique({ properties: ['admin', 'restaurant'] }) +@Index({ properties: ['admin', 'restaurant'] }) +@Index({ properties: ['admin'] }) +@Index({ properties: ['restaurant'] }) +export class AdminRole extends BaseEntity { + @ManyToOne(() => Admin) + admin!: Admin; + + @ManyToOne(() => Role) + role!: Role; + + @ManyToOne(() => Restaurant, { nullable: true }) + restaurant?: Restaurant; +} diff --git a/src/modules/admin/providers/admin.service.ts b/src/modules/admin/providers/admin.service.ts new file mode 100644 index 0000000..9c5f803 --- /dev/null +++ b/src/modules/admin/providers/admin.service.ts @@ -0,0 +1,203 @@ +import { ConflictException, Injectable, NotFoundException } from '@nestjs/common'; +import { Admin } from '../entities/admin.entity'; +import { Role } from '../../roles/entities/role.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { wrap } from '@mikro-orm/core'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { CreateMyRestaurantAdminDto } from '../dto/create-my-restaurant-admin.dto'; +import { UpdateAdminDto } from '../dto/update-admin.dto'; +import { AdminRole } from '../entities/adminRole.entity'; +import { normalizePhone } from '../../utils/phone.util'; +import { AdminRepository } from '../repositories/admin.repository'; +import { AdminRoleRepository } from '../repositories/admin-role.repository'; + +@Injectable() +export class AdminService { + constructor( + private readonly adminRepository: AdminRepository, + private readonly adminRoleRepository: AdminRoleRepository, + private readonly em: EntityManager, + ) { } + + async findByPhone(phone: string) { + const normalizedPhone = normalizePhone(phone); + return this.adminRepository.findOne({ phone: normalizedPhone }); + } + + async finAdminById( + adminId: string, + restId: string, + ) { + const admin = await this.adminRepository.findOne( + { id: adminId, roles: { restaurant: { id: restId } } }, + { populate: ['roles'], exclude: ['roles'] }, + ); + if (!admin) { + throw new NotFoundException('Admin not found'); + } + const adminPlain = wrap(admin).toObject(); + const adminRole = await this.adminRoleRepository.findOne({ admin: admin, restaurant: { id: restId } }); + + return { ...adminPlain, role: adminRole?.role }; + } + + async findAllByRestaurantId(restId: string) { + return this.adminRepository.find({ roles: { restaurant: { id: restId } } }, { populate: ['roles', 'roles.role'] }); + } + + async createAdminForMyRestaurant(restId: string, dto: CreateMyRestaurantAdminDto) { + const { phone, firstName, lastName, roleId } = dto; + const normalizedPhone = normalizePhone(phone); + let admin: Admin | null = null; + admin = await this.adminRepository.findOne({ + phone: normalizedPhone, + }); + if (!admin) { + admin = this.adminRepository.create({ + phone: normalizedPhone, + firstName, + lastName, + }); + await this.em.persistAndFlush(admin); + } + const role = await this.em.findOne(Role, { id: roleId, isSystem: false }); + if (!role) throw new NotFoundException('Role not found'); + + const restaurant = await this.em.findOne(Restaurant, { id: restId }); + if (!restaurant) throw new NotFoundException('Restaurant not found'); + + let adminRole = await this.adminRoleRepository.findOne({ + admin: admin, + restaurant: restaurant, + }); + + if (!adminRole) { + adminRole = this.adminRoleRepository.create({ + admin: admin, + role, + restaurant, + }); + } else { + adminRole.role = role; + } + + await this.em.persistAndFlush(adminRole); + return admin; + } + + async createAdminForRestaurantBySuperAdmin(restId: string, dto: CreateMyRestaurantAdminDto) { + const { phone, firstName, lastName, roleId } = dto; + const normalizedPhone = normalizePhone(phone); + let admin: Admin | null = null; + admin = await this.adminRepository.findOne({ + phone: normalizedPhone, + }); + if (!admin) { + admin = this.adminRepository.create({ + phone: normalizedPhone, + firstName, + lastName, + }); + await this.em.persistAndFlush(admin); + } + const role = await this.em.findOne(Role, { id: roleId }); + if (!role) throw new NotFoundException('Role* not found' + roleId); + + const restaurant = await this.em.findOne(Restaurant, { id: restId }); + if (!restaurant) throw new NotFoundException('Restaurant not found'); + + let adminRole = await this.adminRoleRepository.findOne({ + admin: admin, + restaurant: restaurant, + }); + + if (!adminRole) { + adminRole = this.adminRoleRepository.create({ + admin: admin, + role, + restaurant, + }); + } else { + adminRole.role = role; + } + + await this.em.persistAndFlush(adminRole); + return admin; + } + + async getAdminsForRestaurantBySuperAdmin(restId: string) { + const restaurant = await this.em.findOne(Restaurant, { id: restId }); + if (!restaurant) throw new NotFoundException('Restaurant not found'); + + return this.adminRepository.find({ roles: { restaurant: restaurant } }, { populate: ['roles', 'roles.role'] }); + } + + async update(adminId: string, restId: string, dto: UpdateAdminDto) { + const admin = await this.adminRepository.findOne( + { id: adminId, roles: { restaurant: { id: restId } } }, + { populate: ['roles', 'roles.role', 'roles.restaurant'] }, + ); + + if (!admin) { + throw new NotFoundException('Admin not found'); + } + + const { roleId, ...rest } = dto; + + // Update scalar fields (firstName, lastName, phone) + if (rest.firstName !== undefined) { + admin.firstName = rest.firstName; + } + if (rest.lastName !== undefined) { + admin.lastName = rest.lastName; + } + if (rest.phone !== undefined && rest.phone !== admin.phone) { + const normalizedPhone = normalizePhone(rest.phone); + const exists = await this.adminRepository.findOne({ phone: normalizedPhone }); + if (exists) { + throw new ConflictException('This Phone Number is already taken'); + } + admin.phone = normalizedPhone; + } + + // Update role if roleId is provided + if (roleId) { + const role = await this.em.findOne(Role, { id: roleId, isSystem: false }); + if (!role) { + throw new NotFoundException('Role not found'); + } + + // Find existing AdminRole for this admin and restaurant + const existingAdminRole = await this.em.findOne(AdminRole, { + admin: { id: adminId }, + restaurant: { id: restId }, + }); + + if (existingAdminRole) { + // Update existing role + existingAdminRole.role = role; + } else { + const restaurant = await this.em.findOne(Restaurant, { id: restId }); + if (!restaurant) throw new NotFoundException('Restaurant not found'); + // Create new AdminRole + const newAdminRole = this.em.create(AdminRole, { + admin, + role, + restaurant, + }); + admin.roles.add(newAdminRole); + } + } + + await this.em.persistAndFlush(admin); + return admin; + } + + async remove(adminId: string, restId: string): Promise { + const adminRole = await this.adminRoleRepository.findOne({ admin: { id: adminId }, restaurant: { id: restId } }); + if (!adminRole) { + throw new NotFoundException('Admin role not found'); + } + return this.em.removeAndFlush(adminRole); + } +} diff --git a/src/modules/admin/repositories/admin-role.repository.ts b/src/modules/admin/repositories/admin-role.repository.ts new file mode 100644 index 0000000..8137d0c --- /dev/null +++ b/src/modules/admin/repositories/admin-role.repository.ts @@ -0,0 +1,13 @@ +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { AdminRole } from '../entities/adminRole.entity'; +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class AdminRoleRepository extends EntityRepository { + constructor( + readonly em: EntityManager, + ) { + super(em, AdminRole); + } + +} diff --git a/src/modules/admin/repositories/admin.repository.ts b/src/modules/admin/repositories/admin.repository.ts new file mode 100644 index 0000000..04868a5 --- /dev/null +++ b/src/modules/admin/repositories/admin.repository.ts @@ -0,0 +1,58 @@ +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { Admin } from '../entities/admin.entity'; +import { AdminRole } from '../entities/adminRole.entity'; +import { RestRepository } from '../../restaurants/repositories/rest.repository'; +import { Injectable } from '@nestjs/common'; +import { normalizePhone } from '../../utils/phone.util'; + +@Injectable() +export class AdminRepository extends EntityRepository { + constructor( + readonly em: EntityManager, + private readonly restRepository: RestRepository, + ) { + super(em, Admin); + } + + async findByPhoneAndRestaurantSlug(phone: string, slug: string): Promise { + console.log('phone', phone); + const normalizedPhone = normalizePhone(phone); + // First, find the restaurant by slug using the same repository as auth service + const restaurant = await this.restRepository.findOne({ slug }); + if (!restaurant) { + return null; + } + + // Find AdminRole that matches the admin phone and restaurant + const adminRole = await this.em.findOne( + AdminRole, + { + admin: { phone: normalizedPhone }, + restaurant: { id: restaurant.id }, + }, + { populate: ['admin', 'admin.roles', 'role', 'role.permissions', 'restaurant'] }, + ); + + if (!adminRole || !adminRole.admin) { + return null; + } + + // Ensure all roles are populated + await adminRole.admin.roles.loadItems(); + for (const role of adminRole.admin.roles.getItems()) { + if (role.role && role.role.permissions && !role.role.permissions.isInitialized()) { + await role.role.permissions.loadItems(); + } + } + + return adminRole.admin; + } + async findAdminsWithPermission(restaurantId: string, permission: string): Promise { + const admins = await this.em.find( + Admin, + { roles: { restaurant: { id: restaurantId }, role: { permissions: { name: permission } } } }, + { populate: ['roles', 'roles.role', 'roles.role.permissions'] }, + ); + return admins; + } +} diff --git a/src/modules/admin/transformers/admin-detail.transformer.ts b/src/modules/admin/transformers/admin-detail.transformer.ts new file mode 100644 index 0000000..ae694b7 --- /dev/null +++ b/src/modules/admin/transformers/admin-detail.transformer.ts @@ -0,0 +1,22 @@ +import type { Admin } from '../entities/admin.entity'; + +export interface AdminDetailResponse { + id: string; + firstName?: string; + lastName?: string; + phone: string; + role: { + id: string; + name: string; + }; + permissions: string[]; + restaurant?: { + id: string; + name: string; + slug: string; + }; +} + + + +// Extract permissions - ensure collection is loaded if needed diff --git a/src/modules/auth/auth.module.ts b/src/modules/auth/auth.module.ts new file mode 100644 index 0000000..ebb6d27 --- /dev/null +++ b/src/modules/auth/auth.module.ts @@ -0,0 +1,45 @@ +import { Module, forwardRef } from '@nestjs/common'; +import { AuthService } from './services/auth.service'; +import { AuthController } from './controllers/auth.controller'; +import { UtilsModule } from '../utils/utils.module'; +import { UserModule } from '../users/user.module'; +import { JwtModule } from '@nestjs/jwt'; +import { ConfigService } from '@nestjs/config'; +import { AdminModule } from '../admin/admin.module'; +import { TokensService } from './services/tokens.service'; +import { RestaurantsModule } from '../restaurants/restaurants.module'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { User } from '../users/entities/user.entity'; +import { AdminAuthGuard } from './guards/adminAuth.guard'; +import { RefreshToken } from './entities/refresh-token.entity'; +import { NotificationsModule } from '../notifications/notifications.module'; + +@Module({ + imports: [ + UtilsModule, + forwardRef(() => UserModule), + JwtModule.registerAsync({ + useFactory: (configService: ConfigService) => { + const expiresIn = configService.getOrThrow('JWT_EXPIRATION_TIME'); + return { + global: true, + secret: configService.getOrThrow('JWT_SECRET'), + signOptions: { + // Use string format with time unit for explicit expiration (value should be in seconds) + expiresIn: `${expiresIn}s`, + }, + }; + }, + inject: [ConfigService], + }), + forwardRef(() => AdminModule), + forwardRef(() => RestaurantsModule), + MikroOrmModule.forFeature([User, RefreshToken]), + forwardRef(() => NotificationsModule), + + ], + controllers: [AuthController], + providers: [AuthService, TokensService, AdminAuthGuard], + exports: [AdminAuthGuard], +}) +export class AuthModule {} diff --git a/src/modules/auth/controllers/auth.controller.ts b/src/modules/auth/controllers/auth.controller.ts new file mode 100644 index 0000000..6a4b7b9 --- /dev/null +++ b/src/modules/auth/controllers/auth.controller.ts @@ -0,0 +1,71 @@ +import { Controller, Post, Body, UseGuards } from '@nestjs/common'; +import { AuthService } from '../services/auth.service'; +import { RequestOtpDto } from '../dto/request-otp.dto'; +import { DirectLoginDto } from '../dto/direct-login.dto'; +import { ApiTags, ApiOperation, ApiBody } from '@nestjs/swagger'; +import { VerifyOtpDto } from '../dto/verify-otp.dto'; +import { Throttle } from '@nestjs/throttler'; +import { RefreshTokenRateLimit } from 'src/common/decorators/rate-limit.decorator'; +import { RefreshTokenDto } from '../dto/refresh-token.dto'; +import { SuperAdminAuthGuard } from '../guards/superAdminAuth.guard'; + +@ApiTags('auth') +@Controller() +export class AuthController { + constructor(private readonly authService: AuthService) { } + + @Throttle({ default: { limit: 3, ttl: 180_000 } }) + @Post('public/auth/otp/request') + @ApiOperation({ summary: 'Request OTP for login or signup' }) + @ApiBody({ type: RequestOtpDto, description: 'Mobile number to receive OTP' }) + otpRequest(@Body() dto: RequestOtpDto) { + return this.authService.requestOtp(dto, false); + } + + @Post('public/auth/otp/verify') + @ApiOperation({ summary: 'Verify OTP code' }) + @ApiBody({ type: VerifyOtpDto, description: 'Mobile number and OTP code' }) + otpVerify(@Body() dto: VerifyOtpDto) { + return this.authService.verifyOtp(dto.phone, dto.slug, dto.otp); // assuming dto has `otp` property + } + + @RefreshTokenRateLimit() + @ApiOperation({ summary: 'refresh the user access token / refresh token' }) + @Post('public/auth/refresh') + refreshToken(@Body() refreshTokenDto: RefreshTokenDto) { + return this.authService.refreshToken(refreshTokenDto.refreshToken); + } + + @Throttle({ default: { limit: 3, ttl: 180_000 } }) + @Post('admin/auth/otp/request') + @ApiOperation({ summary: 'Request OTP for login or signup' }) + @ApiBody({ type: RequestOtpDto, description: 'Mobile number to receive OTP' }) + otpRequestAdmin(@Body() dto: RequestOtpDto) { + return this.authService.requestOtp(dto, true); + } + + @Post('admin/auth/otp/verify') + @ApiOperation({ summary: 'Verify OTP code' }) + @ApiBody({ type: VerifyOtpDto, description: 'Mobile number and OTP code' }) + otpVerifyAdmin(@Body() dto: VerifyOtpDto) { + return this.authService.verifyOtpAdmin(dto.phone, dto.slug, dto.otp); + } + + @RefreshTokenRateLimit() + @ApiOperation({ summary: 'refresh the admin access token / refresh token' }) + @Post('admin/auth/refresh') + refreshTokenAdmin(@Body() refreshTokenDto: RefreshTokenDto) { + return this.authService.refreshToken(refreshTokenDto.refreshToken); + } + + //super admin routes + + @UseGuards(SuperAdminAuthGuard) + @Post('super-admin/auth/direct-login') + @ApiOperation({ summary: 'Direct login for DSC - returns login credentials' }) + @ApiBody({ type: DirectLoginDto, description: 'Phone number and restaurant slug for direct login' }) + directloginForDsc(@Body() dto: DirectLoginDto) { + return this.authService.loginAdminForDsc(dto.phone, dto.slug); + } + +} diff --git a/src/modules/auth/dto/direct-login.dto.ts b/src/modules/auth/dto/direct-login.dto.ts new file mode 100644 index 0000000..05833cd --- /dev/null +++ b/src/modules/auth/dto/direct-login.dto.ts @@ -0,0 +1,15 @@ +import { IsNotEmpty, IsString, IsMobilePhone } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; + +export class DirectLoginDto { + @IsNotEmpty() + @IsString() + @ApiProperty({ example: '09362532122', description: 'Mobile number' }) + @IsMobilePhone('fa-IR') + phone: string; + + @IsNotEmpty() + @IsString() + @ApiProperty({ example: 'zhivan', description: 'Restaurant slug' }) + slug: string; +} diff --git a/src/modules/auth/dto/refresh-token.dto.ts b/src/modules/auth/dto/refresh-token.dto.ts new file mode 100755 index 0000000..180bbaa --- /dev/null +++ b/src/modules/auth/dto/refresh-token.dto.ts @@ -0,0 +1,9 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsString } from 'class-validator'; + +export class RefreshTokenDto { + @ApiProperty({ description: 'Refresh token' }) + @IsString({ message: 'Refresh token must be a string' }) + @IsNotEmpty({ message: 'Refresh token is required' }) + refreshToken: string; +} diff --git a/src/modules/auth/dto/request-otp.dto.ts b/src/modules/auth/dto/request-otp.dto.ts new file mode 100644 index 0000000..83984af --- /dev/null +++ b/src/modules/auth/dto/request-otp.dto.ts @@ -0,0 +1,15 @@ +import { IsNotEmpty, IsString, IsMobilePhone } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; + +export class RequestOtpDto { + @IsNotEmpty() + @IsString() + @ApiProperty({ example: '09362532122', description: 'Mobile number' }) + @IsMobilePhone('fa-IR') + phone: string; + + @IsNotEmpty() + @IsString() + @ApiProperty({ example: 'zhivan', description: 'restaurant slug' }) + slug: string; +} diff --git a/src/modules/auth/dto/verify-otp.dto.ts b/src/modules/auth/dto/verify-otp.dto.ts new file mode 100644 index 0000000..ec1c6f1 --- /dev/null +++ b/src/modules/auth/dto/verify-otp.dto.ts @@ -0,0 +1,21 @@ +import { IsNotEmpty, IsString, Length, IsMobilePhone } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; + +export class VerifyOtpDto { + @IsNotEmpty() + @IsString() + @ApiProperty({ example: '09362532122', description: 'Mobile number' }) + @IsMobilePhone('fa-IR') + phone: string; + + @IsNotEmpty() + @IsString() + @ApiProperty({ example: '', description: 'Otp' }) + @Length(5) + otp: string; + + @IsNotEmpty() + @IsString() + @ApiProperty({ example: 'zhivan', description: 'restaurant slug' }) + slug: string; +} diff --git a/src/modules/auth/entities/refresh-token.entity.ts b/src/modules/auth/entities/refresh-token.entity.ts new file mode 100644 index 0000000..6ff4db1 --- /dev/null +++ b/src/modules/auth/entities/refresh-token.entity.ts @@ -0,0 +1,29 @@ +import { Entity, Enum, Index, Property } from '@mikro-orm/core'; + +import { BaseEntity } from '../../../common/entities/base.entity'; + +export enum RefreshTokenType { + USER = 'user', + ADMIN = 'admin', +} + +@Entity({ tableName: 'refreshtokens' }) +@Index({ properties: ['ownerId', 'restId', 'type'] }) +@Index({ properties: ['hashedToken'] }) +@Index({ properties: ['expiresAt'] }) +export class RefreshToken extends BaseEntity { + @Property({ type: 'varchar', length: 255 }) + hashedToken!: string; + + @Property() + ownerId!: string; + + @Property() + restId!: string; + + @Enum(() => RefreshTokenType) + type!: RefreshTokenType; + + @Property({ type: 'timestamptz' }) + expiresAt!: Date; +} diff --git a/src/modules/auth/guards/adminAuth.guard.ts b/src/modules/auth/guards/adminAuth.guard.ts new file mode 100644 index 0000000..1683ea9 --- /dev/null +++ b/src/modules/auth/guards/adminAuth.guard.ts @@ -0,0 +1,120 @@ +import { + CanActivate, + ExecutionContext, + Injectable, + UnauthorizedException, + Inject, + Logger, + ForbiddenException, +} from '@nestjs/common'; +import { Reflector } from '@nestjs/core'; +import { Request } from 'express'; +import { JwtService } from '@nestjs/jwt'; +import { ConfigService } from '@nestjs/config'; +import { IAdminTokenPayload } from '../interfaces/IToken-payload'; +import { PERMISSIONS_KEY } from '../../../common/decorators/permissions.decorator'; +import { PermissionsService } from 'src/modules/roles/providers/permissions.service'; + +export interface AdminAuthRequest extends Request { + adminId: string; + restId: string; +} + +@Injectable() +export class AdminAuthGuard implements CanActivate { + private readonly logger = new Logger(AdminAuthGuard.name); + + constructor( + @Inject(JwtService) + private readonly jwtService: JwtService, + @Inject(ConfigService) + private readonly configService: ConfigService, + private readonly permissionsService: PermissionsService, + private readonly reflector: Reflector, + ) { } + + async canActivate(context: ExecutionContext) { + const request = context.switchToHttp().getRequest(); + + const token = this.extractTokenFromHeader(request); + if (!token) { + this.logger.warn('No token provided', { + hasAuthHeader: !!request.headers.authorization, + authHeader: request.headers.authorization ? 'present' : 'missing', + headers: Object.keys(request.headers), + }); + throw new UnauthorizedException('No token provided'); + } + + try { + // Get the JWT secret from config + const secret = this.configService.getOrThrow('JWT_SECRET'); + + // Verify token with the secret + const payload = await this.jwtService.verifyAsync(token, { + secret, + }); + + if (!payload.adminId || !payload.restId) { + this.logger.error('Invalid token payload structure', payload); + throw new UnauthorizedException('Invalid token payload'); + } + + request['adminId'] = payload.adminId; + request['restId'] = payload.restId; + + // check if the user has the required permissions + const requiredPermissions = + this.reflector.getAllAndOverride(PERMISSIONS_KEY, [context.getHandler(), context.getClass()]) ?? []; + + if (!requiredPermissions || requiredPermissions.length === 0) { + return true; + } + + const adminPermission = await this.permissionsService.getAdminPermissions(payload.adminId, payload.restId); + if (!adminPermission || !Array.isArray(adminPermission)) { + this.logger.error('No permissions found', { adminId: payload.adminId, restId: payload.restId }); + throw new ForbiddenException('No permissions found'); + } + + const hasPermission = requiredPermissions.every(p => adminPermission.includes(p)); + + if (!hasPermission) { + this.logger.warn('Insufficient permissions', { + adminId: payload.adminId, + restId: payload.restId, + required: requiredPermissions, + has: adminPermission, + }); + throw new ForbiddenException('You are not authorized to access this resource'); + } + + return true; + } catch (err) { + if (err instanceof ForbiddenException || err instanceof UnauthorizedException) { + throw err; + } + const errorMessage = err instanceof Error ? err.message : 'Unknown error'; + const errorStack = err instanceof Error ? err.stack : undefined; + this.logger.error('Token verification error in AdminAuthGuard', { + error: errorMessage, + stack: errorStack, + }); + throw new UnauthorizedException('Invalid or expired token'); + } + } + + private extractTokenFromHeader(request: Request): string | undefined { + const authHeader = request.headers.authorization || request.headers['authorization']; + if (!authHeader) { + return undefined; + } + + const [type, token] = authHeader.split(' '); + if (type?.toLowerCase() !== 'bearer' || !token) { + return undefined; + } + + return token; + } +} diff --git a/src/modules/auth/guards/auth.guard.ts b/src/modules/auth/guards/auth.guard.ts new file mode 100644 index 0000000..c600f6d --- /dev/null +++ b/src/modules/auth/guards/auth.guard.ts @@ -0,0 +1,72 @@ +import { CanActivate, ExecutionContext, Injectable, UnauthorizedException, Inject, Logger } from '@nestjs/common'; +import { Request } from 'express'; +import { JwtService } from '@nestjs/jwt'; +import { ConfigService } from '@nestjs/config'; +import { ITokenPayload } from '../interfaces/IToken-payload'; + +export interface UserAuthRequest extends Request { + userId: string; + restId: string; +} + +@Injectable() +export class AuthGuard implements CanActivate { + private readonly logger = new Logger(AuthGuard.name); + + constructor( + @Inject(JwtService) + private readonly jwtService: JwtService, + @Inject(ConfigService) + private readonly configService: ConfigService, + ) {} + + async canActivate(context: ExecutionContext) { + const request = context.switchToHttp().getRequest(); + + try { + const secret = this.configService.getOrThrow('JWT_SECRET'); + const token = this.extractTokenFromHeader(request); + const slug = this.extractSlugFromHeader(request); + if (!slug) { + throw new UnauthorizedException('Slug is required'); + } + if (!token) { + throw new UnauthorizedException(); + } + + try { + const payload = await this.jwtService.verifyAsync(token, { + secret, + }); + if (!payload.userId || !payload.restId) { + this.logger.error('Invalid token payload structure', payload); + throw new UnauthorizedException('Invalid token payload'); + } + if (payload.slug !== slug) { + throw new UnauthorizedException('Invalid slug'); + } + request['userId'] = payload.userId; + request['restId'] = payload.restId; + } catch { + throw new UnauthorizedException(); + } + + return true; + } catch (err) { + if (err instanceof UnauthorizedException) { + throw err; + } + this.logger.error('error in AuthGuard', err); + throw new UnauthorizedException('Invalid or expired token'); + } + } + private extractTokenFromHeader(request: Request): string | undefined { + const [type, token] = request.headers.authorization?.split(' ') ?? []; + return type === 'Bearer' ? token : undefined; + } + private extractSlugFromHeader(request: Request): string | undefined { + // Fastify normalizes headers to lowercase, so check both cases + const slug = (request.headers['x-slug'] || request.headers['X-Slug']) as string; + return slug; + } +} diff --git a/src/modules/auth/guards/optinalAuth.guard.ts b/src/modules/auth/guards/optinalAuth.guard.ts new file mode 100644 index 0000000..2cb712b --- /dev/null +++ b/src/modules/auth/guards/optinalAuth.guard.ts @@ -0,0 +1,94 @@ +import { CanActivate, ExecutionContext, Injectable, Inject, Logger } from '@nestjs/common'; +import { Request } from 'express'; +import { JwtService } from '@nestjs/jwt'; +import { ConfigService } from '@nestjs/config'; +import { ITokenPayload } from '../interfaces/IToken-payload'; + +export interface UserOptionalAuthRequest extends Request { + userId?: string; + restId?: string; + slug?: string; +} + +@Injectable() +export class OptionalAuthGuard implements CanActivate { + private readonly logger = new Logger(OptionalAuthGuard.name); + + constructor( + @Inject(JwtService) + private readonly jwtService: JwtService, + @Inject(ConfigService) + private readonly configService: ConfigService, + ) {} + + async canActivate(context: ExecutionContext): Promise { + const request = context.switchToHttp().getRequest(); + const token = this.extractTokenFromHeader(request); + const slug = this.extractSlugFromHeader(request); + + // If no token is provided, allow the request without authentication + if (!slug) { + console.log('No slug provided'); + this.logger.warn('No slug provided'); + return false; + } + if (!token) { + request['slug'] = slug; + return true; + } + + // Try to verify the token if it exists + try { + const secret = this.configService.getOrThrow('JWT_SECRET'); + const payload = await this.jwtService.verifyAsync(token, { + secret, + }); + + // Validate payload structure + if (!payload.userId || !payload.restId) { + this.logger.warn('Invalid token payload structure', payload); + // Allow request but don't set user info + request['slug'] = slug; + return true; + } + + // Validate slug if provided + if (slug && payload.slug !== slug) { + this.logger.warn('Token slug does not match header slug', { + tokenSlug: payload.slug, + headerSlug: slug, + }); + // Allow request but don't set user info + request['slug'] = slug; + return true; + } + + // Token is valid, set user info + request['userId'] = payload.userId; + request['restId'] = payload.restId; + request['slug'] = slug; + return true; + } catch (err) { + // Token is invalid or expired, but allow the request anyway + this.logger.debug('Token verification failed in OptionalAuthGuard', { + error: err instanceof Error ? err.message : 'Unknown error', + }); + // Set restId from slug + + request['slug'] = slug; + + return true; + } + } + + private extractTokenFromHeader(request: Request): string | undefined { + const [type, token] = request.headers.authorization?.split(' ') ?? []; + return type === 'Bearer' ? token : undefined; + } + + private extractSlugFromHeader(request: Request): string | undefined { + // Fastify normalizes headers to lowercase, so check both cases + const slug = (request.headers['x-slug'] || request.headers['X-Slug']) as string; + return slug; + } +} diff --git a/src/modules/auth/guards/superAdminAuth.guard.ts b/src/modules/auth/guards/superAdminAuth.guard.ts new file mode 100644 index 0000000..8fc4ba3 --- /dev/null +++ b/src/modules/auth/guards/superAdminAuth.guard.ts @@ -0,0 +1,66 @@ +import { CanActivate, ExecutionContext, Injectable, UnauthorizedException, Inject, Logger } from '@nestjs/common'; +import { Request } from 'express'; +import { ConfigService } from '@nestjs/config'; + +@Injectable() +export class SuperAdminAuthGuard implements CanActivate { + private readonly logger = new Logger(SuperAdminAuthGuard.name); + + constructor( + @Inject(ConfigService) + private readonly configService: ConfigService, + ) {} + + canActivate(context: ExecutionContext): boolean { + const request = context.switchToHttp().getRequest(); + + try { + const credentials = this.extractBasicAuthCredentials(request); + if (!credentials) { + throw new UnauthorizedException('Basic authentication required'); + } + + const { username, password } = credentials; + const expectedUsername = this.configService.get('SUPER_ADMIN_USERNAME') ?? 'danak@dsc.com'; + const expectedPassword = this.configService.get('SUPER_ADMIN_PASSWORD') ?? 'DsCdAnAk?@ABC'; + if (username !== expectedUsername || password !== expectedPassword) { + this.logger.warn(`Invalid super admin credentials attempt for username: ${username}`); + throw new UnauthorizedException('Invalid credentials'); + } + + return true; + } catch (err) { + if (err instanceof UnauthorizedException) { + throw err; + } + this.logger.error('error in SuperAdminAuthGuard', err); + throw new UnauthorizedException('Authentication failed'); + } + } + + private extractBasicAuthCredentials(request: Request): { username: string; password: string } | null { + const authHeader = request.headers.authorization; + if (!authHeader) { + return null; + } + + const [type, encoded] = authHeader.split(' '); + if (type?.toLowerCase() !== 'basic' || !encoded) { + return null; + } + + try { + const decoded = Buffer.from(encoded, 'base64').toString('utf-8'); + const [username, password] = decoded.split(':'); + + if (!username || !password) { + return null; + } + + return { username, password }; + } catch (error) { + this.logger.error('Failed to decode Basic Auth credentials', error); + return null; + } + } +} diff --git a/src/modules/auth/interfaces/IToken-payload.ts b/src/modules/auth/interfaces/IToken-payload.ts new file mode 100755 index 0000000..457b2ca --- /dev/null +++ b/src/modules/auth/interfaces/IToken-payload.ts @@ -0,0 +1,10 @@ +export interface ITokenPayload { + userId: string; + restId: string; + slug: string; +} + +export interface IAdminTokenPayload { + adminId: string; + restId: string; +} diff --git a/src/modules/auth/services/auth.service.ts b/src/modules/auth/services/auth.service.ts new file mode 100644 index 0000000..fb18bfa --- /dev/null +++ b/src/modules/auth/services/auth.service.ts @@ -0,0 +1,144 @@ +import { Injectable, BadRequestException } from '@nestjs/common'; +import { RequestOtpDto } from '../dto/request-otp.dto'; +import { CacheService } from '../../utils/cache.service'; +import { SmsService } from '../../notifications/services/sms.service'; +import { UserService } from '../../users/providers/user.service'; +import { randomInt } from 'crypto'; +import { TokensService } from './tokens.service'; +import { RestRepository } from 'src/modules/restaurants/repositories/rest.repository'; +import { AuthMessage, RestMessage } from 'src/common/enums/message.enum'; +import { AdminRepository } from 'src/modules/admin/repositories/admin.repository'; +import { AdminLoginTransformer } from '../transformers/admin-login.transformer'; +import { UserLoginTransformer } from '../transformers/user-login.transformer'; +import { ConfigService } from '@nestjs/config'; +import { normalizePhone } from '../../utils/phone.util'; + +@Injectable() +export class AuthService { + readonly ADMIN_PERMISSIONS_KEY = 'admin-perms'; + private OTP_EXPIRATION_TIME: number; + constructor( + private readonly cacheService: CacheService, + private readonly smsService: SmsService, + private readonly userService: UserService, + private readonly tokensService: TokensService, + private readonly restRepository: RestRepository, + private readonly adminRepository: AdminRepository, + private readonly configService: ConfigService, + ) { + this.OTP_EXPIRATION_TIME = this.configService.get('OTP_EXPIRATION_TIME') ?? 240; + } + + private userOtpKey(restaurantSlug: string, phone: string) { + return `otp:${restaurantSlug}:${phone}`; + } + + private adminOtpKey(restaurantSlug: string, phone: string) { + return `otp-admin:${restaurantSlug}:${phone}`; + } + + async requestOtp(dto: RequestOtpDto, isAdmin: boolean) { + const { phone, slug } = dto; + const normalizedPhone = normalizePhone(phone); + + if (isAdmin) { + const admin = await this.adminRepository.findByPhoneAndRestaurantSlug(normalizedPhone, slug); + if (!admin) { + throw new BadRequestException(AuthMessage.ADMIN_NOT_FOUND); + } + } + const code = this.generateOtpCode(); + const key = isAdmin ? this.adminOtpKey(slug, normalizedPhone) : this.userOtpKey(slug, normalizedPhone); + await this.cacheService.set(key, code, this.OTP_EXPIRATION_TIME); + + await this.smsService.sendotp(normalizedPhone, code); + + return { code: null }; + } + + async verifyOtp(phone: string, slug: string, code: string) { + const normalizedPhone = normalizePhone(phone); + const key = this.userOtpKey(slug, normalizedPhone); + const cachedCode = await this.cacheService.get(key); + if (!cachedCode) throw new BadRequestException('OTP expired or not found'); + if (cachedCode !== code) throw new BadRequestException('Invalid OTP'); + + await this.cacheService.del(key); + + const user = await this.userService.findOrCreateByPhone(normalizedPhone); + + const rest = await this.restRepository.findOne({ slug }); + + if (!rest) { + throw new BadRequestException(RestMessage.NOT_FOUND); + } + + const tokens = await this.tokensService.generateAccessAndRefreshToken(user.id, rest.id, false, slug); + + const userResponse = UserLoginTransformer.transform(user, rest); + + return { tokens, user: userResponse }; + } + + async verifyOtpAdmin(phone: string, slug: string, code: string) { + const normalizedPhone = normalizePhone(phone); + const key = this.adminOtpKey(slug, normalizedPhone); + const cachedCode = await this.cacheService.get(key); + + if (!cachedCode) throw new BadRequestException('OTP expired or not found'); + + if (cachedCode !== code) throw new BadRequestException('Invalid OTP'); + await this.cacheService.del(key); + + const admin = await this.adminRepository.findByPhoneAndRestaurantSlug(normalizedPhone, slug); + + if (!admin) { + throw new BadRequestException(AuthMessage.ADMIN_NOT_FOUND); + } + + const rest = await this.restRepository.findOne({ slug }); + + if (!rest) { + throw new BadRequestException(RestMessage.NOT_FOUND); + } + + const tokens = await this.tokensService.generateAccessAndRefreshToken(admin.id, rest.id, true, slug); + + const adminResponse = await AdminLoginTransformer.transform(admin, rest); + + return { tokens, admin: adminResponse }; + } + /** + * + to use for login directly from DSC + */ + async loginAdminForDsc(phone: string, slug: string) { + const normalizedPhone = normalizePhone(phone); + const admin = await this.adminRepository.findByPhoneAndRestaurantSlug(normalizedPhone, slug); + + if (!admin) { + throw new BadRequestException(AuthMessage.ADMIN_NOT_FOUND); + } + + const rest = await this.restRepository.findOne({ slug }); + + if (!rest) { + throw new BadRequestException(RestMessage.NOT_FOUND); + } + + const tokens = await this.tokensService.generateAccessAndRefreshToken(admin.id, rest.id, true, slug); + + const adminResponse = await AdminLoginTransformer.transform(admin, rest); + + return { tokens, admin: adminResponse }; + } + + private generateOtpCode(): string { + const code = randomInt(10000, 100000); + return code.toString(); + } + + refreshToken(oldRefreshToken: string) { + return this.tokensService.refreshToken(oldRefreshToken); + } +} diff --git a/src/modules/auth/services/tokens.service.ts b/src/modules/auth/services/tokens.service.ts new file mode 100755 index 0000000..69a0412 --- /dev/null +++ b/src/modules/auth/services/tokens.service.ts @@ -0,0 +1,145 @@ +import { createHash, randomBytes } from 'node:crypto'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { LockMode } from '@mikro-orm/core'; +import { Injectable, Logger, UnauthorizedException } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { JwtService } from '@nestjs/jwt'; +import dayjs from 'dayjs'; + +import { AuthMessage } from '../../../common/enums/message.enum'; +import { RefreshToken, RefreshTokenType } from '../entities/refresh-token.entity'; +import { IAdminTokenPayload, ITokenPayload } from '../interfaces/IToken-payload'; +import { Restaurant } from 'src/modules/restaurants/entities/restaurant.entity'; + +@Injectable() +export class TokensService { + private readonly logger = new Logger(TokensService.name); + constructor( + private readonly configService: ConfigService, + private readonly jwtService: JwtService, + private readonly em: EntityManager, + ) {} + + async generateAccessAndRefreshToken( + ownerId: string, + restaurantId: string, + isAdmin: boolean, + slug: string, + em?: EntityManager, + ) { + const refreshExpire = this.configService.getOrThrow('REFRESH_TOKEN_EXPIRE'); + const accessExpire = this.configService.getOrThrow('JWT_EXPIRATION_TIME'); + + const payload: ITokenPayload | IAdminTokenPayload = isAdmin + ? { adminId: ownerId, restId: restaurantId } + : { userId: ownerId, restId: restaurantId, slug }; + + const accessToken = await this.generateAccessToken(payload, accessExpire); + const refreshToken = this.generateRefreshToken(); + const type = isAdmin ? RefreshTokenType.ADMIN : RefreshTokenType.USER; + + // Only pass em if it's a transaction manager (not this.em), otherwise pass undefined to trigger flush + await this.storeRefreshToken(ownerId, restaurantId, refreshToken, type, em); + + return { + accessToken: { token: accessToken, expire: dayjs().add(accessExpire, 'seconds').valueOf() }, + refreshToken: { token: refreshToken, expire: dayjs().add(refreshExpire, 'day').valueOf() }, + }; + } + + private generateAccessToken(payload: ITokenPayload | IAdminTokenPayload, expiresIn: number) { + // Ensure expiresIn is passed as a string with time unit for reliability + // JWT library accepts: number (seconds) or string with unit (e.g., "3600s", "1h") + // Using string format is more explicit and prevents unit confusion + return this.jwtService.signAsync(payload, { expiresIn: `${expiresIn}s` }); + } + + async storeRefreshToken( + ownerId: string, + restId: string, + refreshToken: string, + type: RefreshTokenType, + em?: EntityManager, + ) { + const entityManager = em || this.em; + const refreshExpire = this.configService.getOrThrow('REFRESH_TOKEN_EXPIRE'); + const expiresAt = dayjs().add(refreshExpire, 'day').toDate(); + + const hashedToken = this.hashToken(refreshToken); + + const token = entityManager.create(RefreshToken, { + hashedToken, + ownerId, + restId, + type, + expiresAt, + }); + + if (em) { + // Within transaction, just persist (flush will be called by transaction) + entityManager.persist(token); + } else { + // Outside transaction, persist and flush immediately + await entityManager.persistAndFlush(token); + } + } + + async refreshToken(oldRefreshToken: string) { + const hashedToken = this.hashToken(oldRefreshToken); + + // Use transaction to ensure atomicity and prevent race conditions + return this.em.transactional(async em => { + // Lock the token row to prevent concurrent refresh attempts + // Using pessimistic write lock (FOR UPDATE) to prevent race conditions + const token = await em.findOne(RefreshToken, { hashedToken }, { lockMode: LockMode.PESSIMISTIC_WRITE }); + + if (!token) { + throw new UnauthorizedException(AuthMessage.INVALID_REFRESH_TOKEN); + } + + // Check expiration + if (dayjs(token.expiresAt).isBefore(dayjs())) { + em.remove(token); + await em.flush(); + throw new UnauthorizedException(AuthMessage.REFRESH_TOKEN_EXPIRED); + } + + // Store token data before removal + const ownerId = token.ownerId; + const restId = token.restId; + const isAdmin = token.type === RefreshTokenType.ADMIN; + + // Verify restaurant still exists + const restaurant = await em.findOne(Restaurant, { id: restId }); + if (!restaurant) { + throw new UnauthorizedException(AuthMessage.INVALID_REFRESH_TOKEN); + } + + try { + // Generate new tokens first (before removing old token) + // Pass the transaction EntityManager to ensure operations are within the transaction + const tokens = await this.generateAccessAndRefreshToken(ownerId, restaurant.id, isAdmin, restaurant.slug, em); + + // Remove old token only after new token is created + em.remove(token); + + // Persist changes atomically + await em.flush(); + + return tokens; + } catch (error) { + this.logger.error('Failed to generate new tokens after refresh', error); + // Transaction will rollback automatically, preserving the old token + throw new UnauthorizedException('Failed to refresh token'); + } + }); + } + + private generateRefreshToken() { + return randomBytes(32).toString('hex'); + } + + private hashToken(token: string): string { + return createHash('sha256').update(token).digest('hex'); + } +} diff --git a/src/modules/auth/transformers/admin-login.transformer.ts b/src/modules/auth/transformers/admin-login.transformer.ts new file mode 100644 index 0000000..c58ed4b --- /dev/null +++ b/src/modules/auth/transformers/admin-login.transformer.ts @@ -0,0 +1,93 @@ +import type { Admin } from '../../admin/entities/admin.entity'; +import type { Restaurant } from '../../restaurants/entities/restaurant.entity'; + +export interface AdminLoginResponse { + id: string; + firstName?: string; + lastName?: string; + phone: string; + role: string; + permissions: string[]; + restaurant?: { + id: string; + name: string; + slug: string; + }; +} + +export class AdminLoginTransformer { + static async transform(admin: Admin, restaurant?: Restaurant): Promise { + // Find the AdminRole that matches the restaurant (or get the first one) + let adminRole = admin.roles.getItems().find(r => (restaurant ? r.restaurant?.id === restaurant.id : true)); + + // If no match found, get the first one + if (!adminRole && admin.roles.getItems().length > 0) { + adminRole = admin.roles.getItems()[0]; + } + + if (!adminRole) { + return { + id: admin.id, + firstName: admin.firstName, + lastName: admin.lastName, + phone: admin.phone, + role: '', + permissions: [], + restaurant: restaurant + ? { + id: restaurant.id, + name: restaurant.name, + slug: restaurant.slug, + } + : undefined, + }; + } + + // Get the role from AdminRole + const role = adminRole.role; + if (!role) { + return { + id: admin.id, + firstName: admin.firstName, + lastName: admin.lastName, + phone: admin.phone, + role: '', + permissions: [], + restaurant: restaurant + ? { + id: restaurant.id, + name: restaurant.name, + slug: restaurant.slug, + } + : undefined, + }; + } + + // Extract permissions - ensure collection is loaded if needed + let permissions: string[] = []; + if (role.permissions) { + if (role.permissions.isInitialized()) { + permissions = role.permissions.getItems().map(p => p.name); + } else { + await role.permissions.loadItems(); + permissions = role.permissions.getItems().map(p => p.name); + } + } + + return { + id: admin.id, + firstName: admin.firstName, + lastName: admin.lastName, + phone: admin.phone, + role: role.name, + permissions, + restaurant: restaurant + ? { + id: restaurant.id, + name: restaurant.name, + slug: restaurant.slug, + } + : undefined, + }; + } +} diff --git a/src/modules/auth/transformers/user-login.transformer.ts b/src/modules/auth/transformers/user-login.transformer.ts new file mode 100644 index 0000000..6148def --- /dev/null +++ b/src/modules/auth/transformers/user-login.transformer.ts @@ -0,0 +1,33 @@ +import type { User } from '../../users/entities/user.entity'; +import type { Restaurant } from '../../restaurants/entities/restaurant.entity'; + +export interface UserLoginResponse { + id: string; + firstName: string; + lastName?: string; + phone: string; + + isActive?: boolean; + restaurant: { + id: string; + name: string; + slug: string; + }; +} + +export class UserLoginTransformer { + static transform(user: User, restaurant: Restaurant): UserLoginResponse { + return { + id: user.id, + firstName: user.firstName, + lastName: user.lastName, + phone: user.phone, + isActive: user.isActive, + restaurant: { + id: restaurant.id, + name: restaurant.name, + slug: restaurant.slug, + }, + }; + } +} diff --git a/src/modules/cart/cart.module.ts b/src/modules/cart/cart.module.ts new file mode 100644 index 0000000..0549845 --- /dev/null +++ b/src/modules/cart/cart.module.ts @@ -0,0 +1,53 @@ +import { Module } from '@nestjs/common'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { CartService } from './providers/cart.service'; +import { CartController } from './controllers/cart.controller'; +import { Food } from '../foods/entities/food.entity'; +import { Restaurant } from '../restaurants/entities/restaurant.entity'; +import { PaymentMethod } from '../payments/entities/payment-method.entity'; +import { UserAddress } from '../users/entities/user-address.entity'; +import { User } from '../users/entities/user.entity'; +import { Delivery } from '../delivery/entities/delivery.entity'; +import { Order } from '../orders/entities/order.entity'; +import { AuthModule } from '../auth/auth.module'; +import { UserModule } from '../users/user.module'; +import { JwtModule } from '@nestjs/jwt'; +import { UtilsModule } from '../utils/utils.module'; +import { CouponModule } from '../coupons/coupon.module'; +import { CartRepository } from './repositories/cart.repository'; +import { CartValidationService } from './providers/cart-validation.service'; +import { CartCalculationService } from './providers/cart-calculation.service'; +import { CartItemService } from './providers/cart-item.service'; +import { PointTransaction } from '../users/entities/point-transaction.entity'; +import { WalletTransaction } from '../users/entities/wallet-transaction.entity'; + +@Module({ + imports: [ + MikroOrmModule.forFeature([ + Food, + Restaurant, + PaymentMethod, + UserAddress, + User, + PointTransaction, + WalletTransaction, + Delivery, + Order, + ]), + AuthModule, + UserModule, + JwtModule, + UtilsModule, + CouponModule, + ], + controllers: [CartController], + providers: [ + CartService, + CartRepository, + CartValidationService, + CartCalculationService, + CartItemService, + ], + exports: [CartService], +}) +export class CartModule { } diff --git a/src/modules/cart/controllers/cart.controller.ts b/src/modules/cart/controllers/cart.controller.ts new file mode 100644 index 0000000..59ce4bf --- /dev/null +++ b/src/modules/cart/controllers/cart.controller.ts @@ -0,0 +1,92 @@ +import { Controller, Get, Post, Body, Patch, Delete, UseGuards, Param } from '@nestjs/common'; +import { CartService } from '../providers/cart.service'; +import { BulkAddItemsToCartDto } from '../dto/bulk-add-items.dto'; +import { ApplyCouponDto } from '../dto/apply-coupon.dto'; +import { ApiTags, ApiOperation, ApiBearerAuth, ApiBody, ApiParam, ApiHeader } from '@nestjs/swagger'; +import { AuthGuard } from '../../auth/guards/auth.guard'; +import { UserId } from 'src/common/decorators/user-id.decorator'; +import { RestId } from 'src/common/decorators/rest-id.decorator'; +import { SetAllCartParmsDto } from '../dto/set-all-cart-params.dto'; +import { API_HEADER_SLUG } from 'src/common/constants/index'; + +@UseGuards(AuthGuard) +@ApiBearerAuth() +@ApiTags('cart') +@Controller('public/cart') +export class CartController { + constructor(private readonly cartService: CartService) {} + + @Get() + @ApiOperation({ summary: 'Get cart for current user and restaurant' }) + @ApiHeader(API_HEADER_SLUG) + async findOne(@UserId() userId: string, @RestId() restaurantId: string) { + return this.cartService.getOrCreateCart(userId, restaurantId); + } + + @Post('items/:foodId/increment') + @ApiOperation({ summary: 'Increment item quantity in cart by 1' }) + @ApiHeader(API_HEADER_SLUG) + @ApiParam({ name: 'foodId', description: 'Food ID to increment in cart' }) + async incrementItem(@UserId() userId: string, @RestId() restaurantId: string, @Param('foodId') foodId: string) { + return this.cartService.incrementItem(userId, restaurantId, foodId, 1); + } + + @Post('items/:foodId/decrement') + @ApiOperation({ summary: 'Decrement item quantity in cart by 1 (removes item if quantity reaches 0)' }) + @ApiHeader(API_HEADER_SLUG) + @ApiParam({ name: 'foodId', description: 'Food ID to decrement in cart' }) + async decrementItem(@UserId() userId: string, @RestId() restaurantId: string, @Param('foodId') foodId: string) { + return this.cartService.decrementItem(userId, restaurantId, foodId); + } + + @Post('items/bulk') + @ApiOperation({ summary: 'Bulk add items to cart (increments quantity if items exist)' }) + @ApiHeader(API_HEADER_SLUG) + @ApiBody({ type: BulkAddItemsToCartDto }) + bulkAddItems( + @UserId() userId: string, + @RestId() restaurantId: string, + @Body() bulkAddItemsDto: BulkAddItemsToCartDto, + ) { + return this.cartService.bulkAddItems(userId, restaurantId, bulkAddItemsDto); + } + + @Delete('items/:foodId') + @ApiOperation({ summary: 'Remove item from cart' }) + @ApiHeader(API_HEADER_SLUG) + @ApiParam({ name: 'foodId', description: 'Food ID in the cart' }) + async removeItem(@UserId() userId: string, @RestId() restaurantId: string, @Param('foodId') foodId: string) { + return this.cartService.removeItem(userId, restaurantId, foodId); + } + + @Delete() + @ApiOperation({ summary: 'Clear entire cart' }) + @ApiHeader(API_HEADER_SLUG) + async clearCart(@UserId() userId: string, @RestId() restaurantId: string) { + return this.cartService.clearCart(userId, restaurantId); + } + + @Post('apply-coupon') + @ApiOperation({ summary: 'Apply coupon to cart' }) + @ApiHeader(API_HEADER_SLUG) + @ApiBody({ type: ApplyCouponDto }) + async applyCoupon(@UserId() userId: string, @RestId() restaurantId: string, @Body() applyCouponDto: ApplyCouponDto) { + return this.cartService.applyCoupon(userId, restaurantId, applyCouponDto); + } + + @Delete('coupon') + @ApiOperation({ summary: 'Remove coupon from cart' }) + @ApiHeader(API_HEADER_SLUG) + async removeCoupon(@UserId() userId: string, @RestId() restaurantId: string) { + return this.cartService.removeCoupon(userId, restaurantId); + } + + + @Patch('all') + @ApiOperation({ summary: 'Set all cart params' }) + @ApiHeader(API_HEADER_SLUG) + @ApiBody({ type: SetAllCartParmsDto }) + setAllCartParams(@UserId() userId: string, @RestId() restaurantId: string, @Body() dto: SetAllCartParmsDto) { + return this.cartService.setAllCartParams(userId, restaurantId, dto); + } +} diff --git a/src/modules/cart/dto/apply-coupon.dto.ts b/src/modules/cart/dto/apply-coupon.dto.ts new file mode 100644 index 0000000..cb182a0 --- /dev/null +++ b/src/modules/cart/dto/apply-coupon.dto.ts @@ -0,0 +1,9 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsString } from 'class-validator'; + +export class ApplyCouponDto { + @ApiProperty({ description: 'Coupon code', example: 'DISCOUNT10' }) + @IsNotEmpty() + @IsString() + code!: string; +} diff --git a/src/modules/cart/dto/bulk-add-items.dto.ts b/src/modules/cart/dto/bulk-add-items.dto.ts new file mode 100644 index 0000000..71ac392 --- /dev/null +++ b/src/modules/cart/dto/bulk-add-items.dto.ts @@ -0,0 +1,34 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsArray, ValidateNested, ArrayMinSize, IsInt, Min, IsString } from 'class-validator'; +import { Type } from 'class-transformer'; + +class AddItemToCartDto { + @ApiProperty({ description: 'Quantity of the food item', example: 1, minimum: 1 }) + @IsNotEmpty() + @Type(() => Number) + @IsInt() + @Min(1) + quantity!: number; + + @ApiProperty({ description: 'Food ID' }) + @IsNotEmpty() + @IsString() + foodId!: string; +} + +export class BulkAddItemsToCartDto { + @ApiProperty({ + description: 'Array of items to add to cart', + type: [AddItemToCartDto], + example: [ + { foodId: 'food-123', quantity: 2 }, + { foodId: 'food-456', quantity: 1 }, + ], + }) + @IsNotEmpty() + @IsArray() + @ArrayMinSize(1, { message: 'At least one item is required' }) + @ValidateNested({ each: true }) + @Type(() => AddItemToCartDto) + items!: AddItemToCartDto[]; +} diff --git a/src/modules/cart/dto/create-cart.dto.ts b/src/modules/cart/dto/create-cart.dto.ts new file mode 100644 index 0000000..ec5763b --- /dev/null +++ b/src/modules/cart/dto/create-cart.dto.ts @@ -0,0 +1,29 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsString, IsArray, ValidateNested, IsInt, Min } from 'class-validator'; +import { Type } from 'class-transformer'; + +export class CartItemDto { + @ApiProperty({ description: 'Food ID' }) + @IsNotEmpty() + @IsString() + foodId!: string; + + @ApiProperty({ description: 'Quantity of the food item', example: 2, minimum: 1 }) + @IsNotEmpty() + @Type(() => Number) + @IsInt() + @Min(1) + quantity!: number; +} + +export class CreateCartDto { + @ApiProperty({ + description: 'List of cart items', + type: [CartItemDto], + }) + @IsNotEmpty() + @IsArray() + @ValidateNested({ each: true }) + @Type(() => CartItemDto) + items!: CartItemDto[]; +} diff --git a/src/modules/cart/dto/set-all-cart-params.dto.ts b/src/modules/cart/dto/set-all-cart-params.dto.ts new file mode 100644 index 0000000..d329a51 --- /dev/null +++ b/src/modules/cart/dto/set-all-cart-params.dto.ts @@ -0,0 +1,40 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsObject, IsOptional, IsString } from 'class-validator'; +import { SetCarDeliveryDto } from './set-car-delivery.dto'; + + +export class SetAllCartParmsDto { + @ApiProperty({ + description: 'Cart description or notes', + required: false, + example: 'Please deliver to the back door', + }) + @IsOptional() + @IsString() + description?: string; + + @ApiProperty({ description: 'Delivery method ID', example: '01ARZ3NDEKTSV4RRFFQ69G5FAV' }) + @IsNotEmpty() + @IsString() + deliveryMethodId!: string; + + @ApiProperty({ description: 'User address ID', example: '01ARZ3NDEKTSV4RRFFQ69G5FAV' }) + @IsOptional() + @IsString() + addressId?: string; + + @ApiProperty({ description: 'Payment method ID', example: '01ARZ3NDEKTSV4RRFFQ69G5FAV' }) + @IsNotEmpty() + @IsString() + paymentMethodId!: string; + + @ApiProperty({ description: 'Table number for dine-in orders', example: '5', required: false }) + @IsOptional() + @IsString() + tableNumber?: string; + + @ApiProperty() + @IsOptional() + @IsObject() + carAddress?: SetCarDeliveryDto; +} diff --git a/src/modules/cart/dto/set-car-delivery.dto.ts b/src/modules/cart/dto/set-car-delivery.dto.ts new file mode 100644 index 0000000..61c44dc --- /dev/null +++ b/src/modules/cart/dto/set-car-delivery.dto.ts @@ -0,0 +1,19 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsString } from 'class-validator'; + +export class SetCarDeliveryDto { + @ApiProperty({ description: 'Car model', example: 'Toyota Camry' }) + @IsNotEmpty() + @IsString() + carModel!: string; + + @ApiProperty({ description: 'Car color', example: 'White' }) + @IsNotEmpty() + @IsString() + carColor!: string; + + @ApiProperty({ description: 'License plate number', example: '12ABC345' }) + @IsNotEmpty() + @IsString() + plateNumber!: string; +} diff --git a/src/modules/cart/dto/update-cart.dto.ts b/src/modules/cart/dto/update-cart.dto.ts new file mode 100644 index 0000000..b70b562 --- /dev/null +++ b/src/modules/cart/dto/update-cart.dto.ts @@ -0,0 +1,9 @@ +import { PartialType, ApiProperty } from '@nestjs/swagger'; +import { CreateCartDto, CartItemDto } from './create-cart.dto'; + +export class UpdateCartItemDto extends PartialType(CartItemDto) {} + +export class UpdateCartDto { + @ApiProperty({ description: 'List of cart items to update', type: [UpdateCartItemDto], required: false }) + items?: UpdateCartItemDto[]; +} diff --git a/src/modules/cart/interfaces/cart.interface.ts b/src/modules/cart/interfaces/cart.interface.ts new file mode 100644 index 0000000..b281661 --- /dev/null +++ b/src/modules/cart/interfaces/cart.interface.ts @@ -0,0 +1,38 @@ +import type { OrderCouponDetail, OrderUserAddress, OrderCarAddress } from 'src/modules/orders/interface/order.interface'; + +export interface CartItem { + foodId: string; + foodTitle?: string; + quantity: number; + price: number; + discount: number; + totalPrice: number; +} + +export interface Cart { + userId: string; + restaurantId: string; + restaurantName?: string; + + items: CartItem[]; + coupon?: OrderCouponDetail; + paymentMethodId?: string; + deliveryMethodId?: string; + description?: string; + tableNumber?: string; + + deliveryFee: number; + subTotal: number; + tax: number; + couponDiscount: number; + itemsDiscount: number; + totalDiscount: number; + total: number; + + carAddress?: OrderCarAddress | null; + userAddress?: OrderUserAddress | null; + + totalItems: number; + createdAt: string; + updatedAt: string; +} diff --git a/src/modules/cart/providers/cart-calculation.service.ts b/src/modules/cart/providers/cart-calculation.service.ts new file mode 100644 index 0000000..bd2e714 --- /dev/null +++ b/src/modules/cart/providers/cart-calculation.service.ts @@ -0,0 +1,244 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { Delivery } from '../../delivery/entities/delivery.entity'; +import { DeliveryFeeTypeEnum } from '../../delivery/interface/delivery'; +import { CouponType } from '../../coupons/interface/coupon'; +import { Food } from '../../foods/entities/food.entity'; +import { Cart } from '../interfaces/cart.interface'; +import { CouponService } from '../../coupons/providers/coupon.service'; +import { GeographicUtils } from '../utils/geographic.utils'; + +@Injectable() +export class CartCalculationService { + constructor( + private readonly em: EntityManager, + private readonly couponService: CouponService, + ) {} + + /** + * Calculate total price for a cart item + */ + calculateItemTotalPrice(unitPrice: number, unitDiscount: number, quantity: number): number { + const safeUnitPrice = Number(unitPrice) || 0; + const safeUnitDiscount = Math.min(Number(unitDiscount) || 0, safeUnitPrice); + const itemTotalPrice = safeUnitPrice * quantity; + const itemTotalDiscount = safeUnitDiscount * quantity; + return itemTotalPrice - itemTotalDiscount; + } + + /** + * Calculate items totals (subtotal, items discount, total items) + */ + calculateItemsTotals(cart: Cart): { subTotal: number; itemsDiscount: number; totalItems: number } { + let subTotal = 0; + let itemsDiscount = 0; + let totalItems = 0; + + for (const item of cart.items) { + const unitPrice = Number(item.price) || 0; + const unitDiscount = Math.min(Number(item.discount) || 0, unitPrice); + const itemPrice = unitPrice * item.quantity; + const itemDiscount = unitDiscount * item.quantity; + subTotal += itemPrice; + itemsDiscount += itemDiscount; + totalItems += item.quantity; + item.totalPrice = itemPrice - itemDiscount; + } + + return { subTotal, itemsDiscount, totalItems }; + } + + /** + * Calculate coupon discount + */ + async calculateCouponDiscount(cart: Cart, subTotal: number, itemsDiscount: number): Promise { + if (!cart.coupon) return 0; + + const coupon = await this.getCouponRestrictionsOrClear(cart); + if (!cart.coupon || !coupon) return 0; + + const hasCategoryRestriction = (coupon.foodCategories?.length ?? 0) > 0; + const hasFoodRestriction = (coupon.foods?.length ?? 0) > 0; + + let eligibleItemsTotal = subTotal; + let eligibleItemsDiscount = itemsDiscount; + + if (hasCategoryRestriction || hasFoodRestriction) { + eligibleItemsTotal = 0; + eligibleItemsDiscount = 0; + + const foodMap = await this.getFoodsInCartWithCategories(cart); + + for (const item of cart.items) { + const food = foodMap.get(item.foodId); + if (!food) continue; + + const matchesCategory = + hasCategoryRestriction && food.category && (coupon.foodCategories ?? []).includes(food.category.id); + const matchesFood = hasFoodRestriction && (coupon.foods ?? []).includes(food.id); + + if (matchesCategory || matchesFood) { + const unitPrice = Number(item.price) || 0; + const unitDiscount = Math.min(Number(item.discount) || 0, unitPrice); + eligibleItemsTotal += unitPrice * item.quantity; + eligibleItemsDiscount += unitDiscount * item.quantity; + } + } + } + + const priceAfterItemDiscount = Math.max(0, eligibleItemsTotal - eligibleItemsDiscount); + + if (cart.coupon.type === CouponType.PERCENTAGE) { + let discount = (priceAfterItemDiscount * cart.coupon.value) / 100; + if (cart.coupon.maxDiscount && discount > cart.coupon.maxDiscount) { + discount = cart.coupon.maxDiscount; + } + return discount; + } + + return Math.min(cart.coupon.value, priceAfterItemDiscount); + } + + /** + * Calculate tax + */ + async calculateTax(restaurantId: string, amountAfterDiscounts: number): Promise { + const restaurant = await this.em.findOne(Restaurant, { id: restaurantId }); + const vat = restaurant?.vat ? Number(restaurant.vat) : 0; + if (!vat || vat <= 0) return 0; + return (Math.max(0, amountAfterDiscounts) * vat) / 100; + } + + /** + * Calculate delivery fee + */ + async calculateDeliveryFee(cart: Cart): Promise { + const deliveryMethodId = cart.deliveryMethodId; + if (!deliveryMethodId) return 0; + + const deliveryMethod = await this.em.findOne(Delivery, { id: deliveryMethodId }, { populate: ['restaurant'] }); + if (!deliveryMethod || !deliveryMethod.enabled) return 0; + + // If not distance based, return fixed delivery fee + if (deliveryMethod.deliveryFeeType !== DeliveryFeeTypeEnum.DISTANCE_BASED) { + return Number(deliveryMethod.deliveryFee) || 0; + } + + // For distance based calculation we need restaurant and user coordinates + const restaurant = (deliveryMethod as any).restaurant as Restaurant | undefined; + const userAddr = cart.userAddress; + + if (!restaurant || restaurant.latitude == null || restaurant.longitude == null) { + // fallback to configured fixed fee when coordinates are missing + return Number(deliveryMethod.deliveryFee) || 0; + } + + if (!userAddr || userAddr.latitude == null || userAddr.longitude == null) { + return Number(deliveryMethod.deliveryFee) || 0; + } + + const restLat = Number(restaurant.latitude); + const restLng = Number(restaurant.longitude); + const userLat = Number(userAddr.latitude); + const userLng = Number(userAddr.longitude); + + const distanceKm = GeographicUtils.getDistanceKmRounded(restLat, restLng, userLat, userLng); + + // Try to read either possible property names (legacy vs new) + const perKm = Number(deliveryMethod.perKilometerFee); + const minFee = Number(deliveryMethod.distanceBasedMinCost); + + let fee = 0; + if (perKm <= 0) { + fee = Number(deliveryMethod.deliveryFee) || 0; + } else { + fee = distanceKm * perKm; + } + + if (minFee > 0 && fee < minFee) fee = minFee; + + return Math.max(0, Number(fee)); + } + + /** + * Recalculate cart totals (including coupon discount and tax) + */ + async recalculateCartTotals(cart: Cart): Promise { + const { subTotal, itemsDiscount, totalItems } = this.calculateItemsTotals(cart); + cart.subTotal = subTotal; + cart.itemsDiscount = itemsDiscount; + + const couponDiscount = await this.calculateCouponDiscount(cart, subTotal, itemsDiscount); + cart.couponDiscount = couponDiscount; + cart.totalDiscount = couponDiscount + itemsDiscount; + + cart.tax = await this.calculateTax(cart.restaurantId, Math.max(0, subTotal - cart.totalDiscount)); + cart.deliveryFee = await this.calculateDeliveryFee(cart); + + // total = subtotal – totalDiscount + tax + deliveryFee + cart.total = Math.max(0, subTotal - cart.totalDiscount) + cart.tax + cart.deliveryFee; + cart.totalItems = totalItems; + cart.updatedAt = this.nowIso(); + } + + /** + * Get coupon restrictions or clear if invalid + */ + private async getCouponRestrictionsOrClear(cart: Cart): Promise<{ + isActive?: boolean; + startDate?: Date; + endDate?: Date; + foodCategories?: string[]; + foods?: string[]; + } | null> { + if (!cart.coupon) return null; + + try { + const c = await this.couponService.findById(cart.coupon.couponId); + const now = new Date(); + if (c.isActive === false) { + cart.coupon = undefined; + return null; + } + if (c.startDate && now < c.startDate) { + cart.coupon = undefined; + return null; + } + if (c.endDate && now > c.endDate) { + cart.coupon = undefined; + return null; + } + + return { + isActive: c.isActive, + startDate: c.startDate, + endDate: c.endDate, + foodCategories: c.foodCategories, + foods: c.foods, + }; + } catch { + cart.coupon = undefined; + return null; + } + } + + /** + * Get foods in cart with categories + */ + private async getFoodsInCartWithCategories(cart: Cart): Promise> { + const foodIds = cart.items.map(item => item.foodId); + if (foodIds.length === 0) return new Map(); + + const foods = await this.em.find(Food, { id: { $in: foodIds } }, { populate: ['category'] }); + return new Map(foods.map(f => [f.id, f])); + } + + /** + * Get current ISO timestamp + */ + private nowIso(): string { + return new Date().toISOString(); + } +} + diff --git a/src/modules/cart/providers/cart-item.service.ts b/src/modules/cart/providers/cart-item.service.ts new file mode 100644 index 0000000..d513016 --- /dev/null +++ b/src/modules/cart/providers/cart-item.service.ts @@ -0,0 +1,113 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { Food } from '../../foods/entities/food.entity'; +import { Cart, CartItem } from '../interfaces/cart.interface'; +import { CartValidationService } from './cart-validation.service'; +import { CartCalculationService } from './cart-calculation.service'; +import { CartMessage } from 'src/common/enums/message.enum'; + +@Injectable() +export class CartItemService { + constructor( + private readonly validationService: CartValidationService, + private readonly calculationService: CartCalculationService, + ) {} + + /** + * Create a new cart item from food + */ + createCartItem(food: Food, quantity: number): CartItem { + const itemPrice = food.price || 0; + const itemDiscount = food.discount || 0; + + return { + foodId: food.id, + foodTitle: food.title, + quantity, + price: itemPrice, + discount: itemDiscount, + totalPrice: this.calculationService.calculateItemTotalPrice(itemPrice, itemDiscount, quantity), + }; + } + + /** + * Build cart item from food (updating existing item if provided) + */ + buildCartItemFromFood(food: Food, quantity: number, previous?: CartItem): CartItem { + const itemPrice = food.price || 0; + const itemDiscount = food.discount || 0; + return { + ...(previous ?? ({} as CartItem)), + foodId: food.id, + foodTitle: food.title, + quantity, + price: itemPrice, + discount: itemDiscount, + totalPrice: this.calculationService.calculateItemTotalPrice(itemPrice, itemDiscount, quantity), + }; + } + + /** + * Get item index in cart + */ + getItemIndex(cart: Cart, foodId: string): number { + return cart.items.findIndex(item => item.foodId === foodId); + } + + /** + * Add or increment item in cart + */ + async addOrIncrementItem(cart: Cart, foodId: string, restaurantId: string, quantityToAdd: number): Promise { + const food = await this.validationService.validateAndGetFood(foodId, restaurantId, quantityToAdd); + + // Validate meal type compatibility + this.validationService.assertMealTypeCompatibility(food); + + // Validate weekday compatibility + this.validationService.assertWeekdayCompatibility(food); + + const index = this.getItemIndex(cart, food.id); + + if (index < 0) { + cart.items.push(this.createCartItem(food, quantityToAdd)); + return; + } + + const existingItem = cart.items[index]; + const newQuantity = existingItem.quantity + quantityToAdd; + this.validationService.validateStock(food, newQuantity); + cart.items[index] = this.buildCartItemFromFood(food, newQuantity, existingItem); + } + + /** + * Remove item from cart + */ + removeItemOrFail(cart: Cart, foodId: string): void { + const itemIndex = this.getItemIndex(cart, foodId); + if (itemIndex < 0) { + throw new NotFoundException(CartMessage.ITEM_NOT_FOUND); + } + cart.items.splice(itemIndex, 1); + } + + /** + * Decrement item quantity or remove if quantity reaches 0 + */ + async decrementOrRemoveItem(cart: Cart, foodId: string): Promise { + const itemIndex = this.getItemIndex(cart, foodId); + if (itemIndex < 0) { + throw new NotFoundException(CartMessage.ITEM_NOT_FOUND); + } + + const existingItem = cart.items[itemIndex]; + const newQuantity = existingItem.quantity - 1; + + if (newQuantity <= 0) { + cart.items.splice(itemIndex, 1); + return; + } + + const food = await this.validationService.getFoodOrFail(foodId); + cart.items[itemIndex] = this.buildCartItemFromFood(food, newQuantity, existingItem); + } +} + diff --git a/src/modules/cart/providers/cart-validation.service.ts b/src/modules/cart/providers/cart-validation.service.ts new file mode 100644 index 0000000..6af1065 --- /dev/null +++ b/src/modules/cart/providers/cart-validation.service.ts @@ -0,0 +1,422 @@ +import { Injectable, NotFoundException, BadRequestException } from '@nestjs/common'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { Food } from '../../foods/entities/food.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { UserAddress } from '../../users/entities/user-address.entity'; +import { User } from '../../users/entities/user.entity'; +import { PaymentMethod } from '../../payments/entities/payment-method.entity'; +import { Delivery } from '../../delivery/entities/delivery.entity'; +import { DeliveryMethodEnum } from '../../delivery/interface/delivery'; +import { PointTransaction } from '../../users/entities/point-transaction.entity'; +import { Order } from '../../orders/entities/order.entity'; +import { OrderStatus } from '../../orders/interface/order.interface'; +import { Cart } from '../interfaces/cart.interface'; +import { GeographicUtils } from '../utils/geographic.utils'; +import { MealType } from '../../foods/interface/food.interface'; +import { CartMessage } from 'src/common/enums/message.enum'; +import { WalletTransactionRepository } from 'src/modules/users/repositories/wallet-transaction.repository'; + +@Injectable() +export class CartValidationService { + constructor( + private readonly em: EntityManager, + private readonly walletTransactionRepository: WalletTransactionRepository, + ) { } + + /** + * Validate food exists, belongs to restaurant, has inventory, and check stock + */ + async validateAndGetFood(foodId: string, restaurantId: string, quantity: number): Promise { + const food = await this.em.findOne(Food, { id: foodId }, { populate: ['restaurant', 'inventory'] }); + if (!food) { + throw new NotFoundException(CartMessage.FOOD_NOT_FOUND); + } + + if (food.restaurant.id !== restaurantId) { + throw new BadRequestException(CartMessage.FOOD_NOT_BELONGS_TO_RESTAURANT); + } + + if (!food.inventory) { + throw new BadRequestException(CartMessage.FOOD_NO_INVENTORY); + } + + this.validateStock(food, quantity); + return food; + } + + /** + * Validate stock availability for food + */ + validateStock(food: Food, quantity: number): void { + const availableStock = food.inventory!.availableStock; + if (availableStock < quantity) { + throw new BadRequestException(CartMessage.INSUFFICIENT_STOCK + food.title); + } + } + + /** + * Get user or throw if not found + */ + async getUserOrFail(userId: string): Promise { + const user = await this.em.findOne(User, { id: userId }); + if (!user) { + throw new NotFoundException(CartMessage.USER_NOT_FOUND); + } + return user; + } + + /** + * Get user address or throw if not found + */ + async getUserAddressOrFail(addressId: string): Promise { + const address = await this.em.findOne(UserAddress, { id: addressId }, { populate: ['user'] }); + if (!address) { + throw new NotFoundException(CartMessage.ADDRESS_NOT_FOUND); + } + return address; + } + + /** + * Get food or throw if not found + */ + async getFoodOrFail(foodId: string): Promise { + const food = await this.em.findOne(Food, { id: foodId }); + if (!food) { + throw new NotFoundException(CartMessage.FOOD_NOT_FOUND); + } + return food; + } + + /** + * Get restaurant or throw if not found + */ + async getRestaurantOrFail(restaurantId: string): Promise { + const restaurant = await this.em.findOne(Restaurant, { id: restaurantId }); + if (!restaurant) { + throw new NotFoundException(CartMessage.RESTAURANT_NOT_FOUND); + } + return restaurant; + } + + /** + * Validate address belongs to user + */ + validateAddressOwnership(address: UserAddress, userId: string): void { + if (address.user.id !== userId) { + throw new BadRequestException(CartMessage.ADDRESS_NOT_BELONGS_TO_USER); + } + } + + /** + * Assert address is inside restaurant service area + */ + async assertAddressInsideServiceArea( + restaurantId: string, + latitude?: number | null, + longitude?: number | null, + ): Promise { + if (latitude === undefined || latitude === null || longitude === undefined || longitude === null) { + throw new BadRequestException(CartMessage.ADDRESS_NO_COORDINATES); + } + + const restaurant = await this.getRestaurantOrFail(restaurantId); + + const serviceArea = restaurant.serviceArea; + // If no service area is defined, assume service is available everywhere + if (!serviceArea || !serviceArea.coordinates || !Array.isArray(serviceArea.coordinates)) return; + + // GeoJSON coordinates: [ [ [lng, lat], ... ] ] -> take first ring + const rings = serviceArea.coordinates; + if (!rings || rings.length === 0 || !Array.isArray(rings[0])) return; + + const ring = rings[0]; + const point: [number, number] = [Number(longitude), Number(latitude)]; + + // Ensure polygon has the correct tuple typing ([lng, lat] pairs) + const polygon: [number, number][] = ring.map( + coord => [Number(coord[0] ?? 0), Number(coord[1] ?? 0)] as [number, number], + ); + + if (!GeographicUtils.isPointInPolygon(point, polygon)) { + throw new BadRequestException(CartMessage.ADDRESS_OUTSIDE_SERVICE_AREA); + } + } + + /** + * Get delivery method for restaurant or throw if not found + */ + async getDeliveryMethodForRestaurantOrFail( + restaurantId: string, + deliveryMethodId: string, + ): Promise { + const deliveryMethod = await this.em.findOne(Delivery, { + id: deliveryMethodId, + restaurant: { id: restaurantId }, + }); + + if (!deliveryMethod) { + throw new NotFoundException(CartMessage.DELIVERY_METHOD_NOT_FOUND_FOR_RESTAURANT); + } + + return deliveryMethod; + } + + /** + * Get enabled delivery method or throw if not found or disabled + */ + async getEnabledDeliveryMethodOrFail(restaurantId: string, deliveryMethodId: string): Promise { + const deliveryMethod = await this.em.findOne( + Delivery, + { id: deliveryMethodId, restaurant: { id: restaurantId } }, + { populate: ['restaurant'] }, + ); + if (!deliveryMethod) { + throw new NotFoundException(CartMessage.DELIVERY_METHOD_NOT_FOUND); + } + if (!deliveryMethod.enabled) { + throw new BadRequestException(CartMessage.DELIVERY_METHOD_NOT_ENABLED); + } + return deliveryMethod; + } + + /** + * Assert delivery method matches expected type + */ + assertDeliveryMethod(actual: DeliveryMethodEnum, expected: DeliveryMethodEnum, message: string): void { + if (actual !== expected) { + throw new BadRequestException(message); + } + } + + /** + * Require delivery method ID or throw + */ + requireDeliveryMethodId(cart: Cart, message: string): string { + if (!cart.deliveryMethodId) { + throw new BadRequestException(message); + } + return cart.deliveryMethodId; + } + + /** + * Get enabled payment method or throw if not found or disabled + */ + async getEnabledPaymentMethodOrFail(restaurantId: string, paymentMethodId: string): Promise { + const paymentMethod = await this.em.findOne( + PaymentMethod, + { id: paymentMethodId, restaurant: { id: restaurantId } }, + { populate: ['restaurant'] }, + ); + if (!paymentMethod) { + throw new NotFoundException(CartMessage.PAYMENT_METHOD_NOT_FOUND); + } + if (!paymentMethod.enabled) { + throw new BadRequestException(CartMessage.PAYMENT_METHOD_NOT_ENABLED); + } + return paymentMethod; + } + + /** + * Assert wallet has enough balance + */ + async assertWalletHasEnoughBalance(userId: string, restaurantId: string, amount: number): Promise { + const balance = await this.walletTransactionRepository.getCurrentWalletBalance(userId, restaurantId); + + if (balance < amount) { + throw new BadRequestException(CartMessage.WALLET_INSUFFICIENT); + } + } + + /** + * Assert coupon usage limit + */ + async assertCouponUsageLimit(userId: string, couponId: string, maxUsesPerUser?: number): Promise { + if (!maxUsesPerUser) return; + + const ordersThatUsedTheCouponCount = await this.em.count(Order, { + user: { id: userId }, + couponDetail: { couponId: couponId }, + status: { $ne: OrderStatus.CANCELED }, + deletedAt: null, + }); + + if (ordersThatUsedTheCouponCount >= maxUsesPerUser) { + throw new BadRequestException(CartMessage.COUPON_MAX_USES_REACHED); + } + } + + /** + * Assert coupon matches cart if restricted + */ + async assertCouponMatchesCartIfRestricted( + cart: Cart, + foodCategories?: string[] | null, + foods?: string[] | null, + ): Promise { + const categoryRestriction = foodCategories?.filter(Boolean) ?? []; + const foodRestriction = foods?.filter(Boolean) ?? []; + const hasCategoryRestriction = categoryRestriction.length > 0; + const hasFoodRestriction = foodRestriction.length > 0; + if (!hasCategoryRestriction && !hasFoodRestriction) return; + + const foodMap = await this.getFoodsInCartWithCategories(cart); + + for (const item of cart.items) { + const food = foodMap.get(item.foodId); + if (!food) continue; + + const matchesCategory = hasCategoryRestriction && food.category && categoryRestriction.includes(food.category.id); + const matchesFood = hasFoodRestriction && foodRestriction.includes(food.id); + if (matchesCategory || matchesFood) return; + } + + throw new BadRequestException(CartMessage.COUPON_CANNOT_BE_APPLIED); + } + + /** + * Get foods in cart with categories + */ + async getFoodsInCartWithCategories(cart: Cart): Promise> { + const foodIds = cart.items.map(item => item.foodId); + if (foodIds.length === 0) return new Map(); + + const foods = await this.em.find(Food, { id: { $in: foodIds } }, { populate: ['category'] }); + return new Map(foods.map(f => [f.id, f])); + } + + /** + * Assert all foods in cart have pickupServe true when delivery method is courier + */ + async assertAllFoodsHavePickupServeForCourier(cart: Cart, deliveryMethod: DeliveryMethodEnum): Promise { + if (deliveryMethod !== DeliveryMethodEnum.DeliveryCourier) { + return; + } + + if (cart.items.length === 0) { + return; + } + + const foodIds = cart.items.map(item => item.foodId); + const foods = await this.em.find(Food, { id: { $in: foodIds } }); + + const foodsWithoutPickupServe = foods.filter(food => !food.pickupServe); + + if (foodsWithoutPickupServe.length > 0) { + const foodTitles = foodsWithoutPickupServe.map(f => f.title || f.id).join(', '); + throw new BadRequestException( + CartMessage.FOODS_MUST_HAVE_PICKUP_SERVE_FOR_COURIER.replace('[foodTitles]', foodTitles), + ); + } + } + + /** + * Get current Iran time context (weekday and meal type) + */ + private getCurrentIranTimeContext(): { iranWeekDay: number; mealType: MealType | null } { + const nowInIran = new Date(new Date().toLocaleString('en-US', { timeZone: 'Asia/Tehran' })); + const weekDay = nowInIran.getDay(); // 0 = Sunday, 6 = Saturday + const currentHour = nowInIran.getHours(); + + // Convert to Iran weekday: Saturday=0, Sunday=1, ..., Friday=6 + // JavaScript: Sunday=0, Monday=1, ..., Saturday=6 + // Iran week: Saturday=0, Sunday=1, ..., Friday=6 + const iranWeekDay = (weekDay + 1) % 7; + + const mealType = this.getMealTypeByHour(currentHour); + + return { iranWeekDay, mealType }; + } + + /** + * Determine meal type based on current hour in Iran timezone. + * @param hour - Current hour (0-23) + * @returns Meal type or null if outside meal hours + */ + private getMealTypeByHour(hour: number): MealType | null { + const MEAL_TIME_RANGES = { + BREAKFAST: { start: 6, end: 11 }, + LUNCH: { start: 11, end: 15 }, + SNACK: { start: 15, end: 19 }, + DINNER: { start: 19, end: 24 }, + } as const; + + if (hour >= MEAL_TIME_RANGES.BREAKFAST.start && hour < MEAL_TIME_RANGES.BREAKFAST.end) { + return MealType.BREAKFAST; + } + if (hour >= MEAL_TIME_RANGES.LUNCH.start && hour < MEAL_TIME_RANGES.LUNCH.end) { + return MealType.LUNCH; + } + if (hour >= MEAL_TIME_RANGES.SNACK.start && hour < MEAL_TIME_RANGES.SNACK.end) { + return MealType.SNACK; + } + if (hour >= MEAL_TIME_RANGES.DINNER.start && hour < MEAL_TIME_RANGES.DINNER.end) { + return MealType.DINNER; + } + + return null; + } + + /** + * Assert meal type compatibility - if food has mealTypes, current meal time must be in that array + */ + assertMealTypeCompatibility(food: Food): void { + // If food has no meal type restrictions, allow it + if (!food.mealTypes || food.mealTypes.length === 0) { + return; + } + + const { mealType } = this.getCurrentIranTimeContext(); + + // If current time is outside meal hours, throw error + if (mealType === null) { + const foodTitle = food.title || food.id; + throw new BadRequestException( + CartMessage.FOOD_ONLY_AVAILABLE_DURING_MEAL_TIMES.replace('[foodTitle]', foodTitle), + ); + } + + // Check if current meal type is in food's allowed meal types + if (!food.mealTypes.includes(mealType)) { + const foodTitle = food.title || food.id; + const mealTypeMap: Record = { + [MealType.BREAKFAST]: 'صبحانه', + [MealType.LUNCH]: 'ناهار', + [MealType.SNACK]: 'عصرانه', + [MealType.DINNER]: 'شام', + }; + const allowedMealTypes = food.mealTypes.map(mt => mealTypeMap[mt]).join(', '); + const currentMealType = mealType ? mealTypeMap[mealType] : mealType; + throw new BadRequestException( + CartMessage.FOOD_ONLY_AVAILABLE_FOR_MEAL_TYPES.replace('[foodTitle]', foodTitle) + .replace('[allowedMealTypes]', allowedMealTypes) + .replace('[mealType]', currentMealType), + ); + } + } + + /** + * Assert weekday compatibility - current weekday must be in food's weekDays array + */ + assertWeekdayCompatibility(food: Food): void { + // If food has no weekday restrictions (empty array or all days), allow it + if (!food.weekDays || food.weekDays.length === 0 || food.weekDays.length === 7) { + return; + } + + const { iranWeekDay } = this.getCurrentIranTimeContext(); + + // Check if current weekday is in food's allowed weekdays + if (!food.weekDays.includes(iranWeekDay)) { + const dayNames = ['شنبه', 'یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنج‌شنبه', 'جمعه']; + const currentDayName = dayNames[iranWeekDay]; + const allowedDays = food.weekDays.map(day => dayNames[day]).join(', '); + const foodTitle = food.title || food.id; + throw new BadRequestException( + CartMessage.FOOD_ONLY_AVAILABLE_ON_DAYS.replace('[foodTitle]', foodTitle) + .replace('[allowedDays]', allowedDays) + .replace('[currentDay]', currentDayName), + ); + } + } +} + diff --git a/src/modules/cart/providers/cart.service.ts b/src/modules/cart/providers/cart.service.ts new file mode 100644 index 0000000..e791c62 --- /dev/null +++ b/src/modules/cart/providers/cart.service.ts @@ -0,0 +1,487 @@ +import { Injectable, NotFoundException, BadRequestException } from '@nestjs/common'; +import { DeliveryMethodEnum } from '../../delivery/interface/delivery'; +import { PaymentMethodEnum } from '../../payments/interface/payment'; +import { OrderCouponDetail } from '../../orders/interface/order.interface'; +import { Cart } from '../interfaces/cart.interface'; +import { BulkAddItemsToCartDto } from '../dto/bulk-add-items.dto'; +import { ApplyCouponDto } from '../dto/apply-coupon.dto'; + import { SetAllCartParmsDto } from '../dto/set-all-cart-params.dto'; +import { CouponService } from '../../coupons/providers/coupon.service'; +import { CartRepository } from '../repositories/cart.repository'; +import { CartValidationService } from './cart-validation.service'; +import { CartCalculationService } from './cart-calculation.service'; +import { CartItemService } from './cart-item.service'; +import { SetCarDeliveryDto } from '../dto/set-car-delivery.dto'; +import { CartMessage } from 'src/common/enums/message.enum'; + +@Injectable() +export class CartService { + constructor( + private readonly cartRepository: CartRepository, + private readonly validationService: CartValidationService, + private readonly calculationService: CartCalculationService, + private readonly itemService: CartItemService, + private readonly couponService: CouponService, + ) { } + + /** + * Set all cart parameters at once + */ + async setAllCartParams(userId: string, restaurantId: string, params: SetAllCartParmsDto): Promise { + const { deliveryMethodId, paymentMethodId, addressId, carAddress, description, tableNumber } = params; + + // get existing cart (or throw) + const cart = await this.findOneOrFail(userId, restaurantId); + + // Validate and get delivery method + const deliveryMethod = await this.validationService.getEnabledDeliveryMethodOrFail( + restaurantId, + deliveryMethodId, + ); + cart.deliveryMethodId = deliveryMethodId; + + // Handle each delivery method with its specific requirements + switch (deliveryMethod.method) { + case DeliveryMethodEnum.DineIn: + // DineIn requires table number and clears incompatible fields + if (!tableNumber) { + throw new BadRequestException(CartMessage.TABLE_NUMBER_REQUIRED); + } + this.clearFieldsIncompatibleWithDeliveryMethod(cart, DeliveryMethodEnum.DineIn); + cart.tableNumber = tableNumber; + break; + + case DeliveryMethodEnum.CustomerPickup: + // CustomerPickup just clears incompatible fields + this.clearFieldsIncompatibleWithDeliveryMethod(cart, DeliveryMethodEnum.CustomerPickup); + break; + + case DeliveryMethodEnum.DeliveryCar: + // DeliveryCar requires carAddress and clears incompatible fields + if (!carAddress) { + throw new BadRequestException(CartMessage.CAR_ADDRESS_REQUIRED); + } + this.clearFieldsIncompatibleWithDeliveryMethod(cart, DeliveryMethodEnum.DeliveryCar); + const user = await this.validationService.getUserOrFail(userId); + cart.carAddress = { + carModel: carAddress.carModel, + carColor: carAddress.carColor, + plateNumber: carAddress.plateNumber, + phone: user.phone, + }; + break; + + case DeliveryMethodEnum.DeliveryCourier: + // DeliveryCourier requires addressId and clears incompatible fields + if (!addressId) { + throw new BadRequestException(CartMessage.ADDRESS_REQUIRED); + } + this.clearFieldsIncompatibleWithDeliveryMethod(cart, DeliveryMethodEnum.DeliveryCourier); + const address = await this.validationService.getUserAddressOrFail(addressId); + this.validationService.validateAddressOwnership(address, userId); + + // ensure address is within restaurant service area + await this.validationService.assertAddressInsideServiceArea( + restaurantId, + address.latitude, + address.longitude, + ); + + cart.userAddress = { + address: address.address, + latitude: address.latitude, + longitude: address.longitude, + city: address.city, + province: address.province || '', + postalCode: address.postalCode || undefined, + fullName: `${address.user.firstName || ''} ${address.user.lastName || ''}`.trim(), + phone: address.user.phone, + }; + break; + } + + // Validate and set payment method + const paymentMethod = await this.validationService.getEnabledPaymentMethodOrFail( + restaurantId, + paymentMethodId, + ); + + // Recalculate totals first so wallet check uses up-to-date total (delivery method may have changed above). + await this.calculationService.recalculateCartTotals(cart); + + if (paymentMethod.method === PaymentMethodEnum.Wallet) { + await this.validationService.assertWalletHasEnoughBalance(userId, restaurantId, cart.total); + } + + cart.paymentMethodId = paymentMethodId; + + // Set description (if provided) + if (description !== undefined) { + cart.description = description; + } + + // Final validation: if effective delivery method is courier, ensure all foods have pickupServe + await this.validationService.assertAllFoodsHavePickupServeForCourier(cart, deliveryMethod.method); + + // Final recalculation + save and return cart + return this.recalculateAndSaveCart(cart); + } + + /** + * Get or create cart for user and restaurant + */ + async getOrCreateCart(userId: string, restaurantId: string): Promise { + const existingCart = await this.cartRepository.findByUserAndRestaurant(userId, restaurantId); + if (existingCart) { + return existingCart; + } + + // Find restaurant + const restaurant = await this.validationService.getRestaurantOrFail(restaurantId); + + // Create new cart + const now = this.nowIso(); + const cart: Cart = { + userId, + restaurantId, + restaurantName: restaurant.name, + items: [], + deliveryFee: 0, + subTotal: 0, + itemsDiscount: 0, + couponDiscount: 0, + totalDiscount: 0, + tax: 0, + total: 0, + totalItems: 0, + createdAt: now, + updatedAt: now, + }; + + await this.cartRepository.save(cart); + return cart; + } + + /** + * Find cart by user and restaurant + */ + async findOneOrFail(userId: string, restaurantId: string): Promise { + const cart = await this.cartRepository.findByUserAndRestaurant(userId, restaurantId); + if (!cart) { + throw new NotFoundException(CartMessage.NOT_FOUND); + } + return cart; + } + + /** + * Increment item quantity in cart + */ + async incrementItem(userId: string, restaurantId: string, foodId: string, quantity: number): Promise { + const cart = await this.getOrCreateCart(userId, restaurantId); + await this.itemService.addOrIncrementItem(cart, foodId, restaurantId, quantity); + return this.recalculateAndSaveCart(cart); + } + + /** + * Decrement item quantity in cart by 1 (removes item if quantity reaches 0) + */ + async decrementItem(userId: string, restaurantId: string, foodId: string): Promise { + const cart = await this.findOneOrFail(userId, restaurantId); + await this.itemService.decrementOrRemoveItem(cart, foodId); + return this.recalculateAndSaveCart(cart); + } + + /** + * Bulk add items to cart (increments quantity if items exist) + */ + async bulkAddItems(userId: string, restaurantId: string, bulkAddItemsDto: BulkAddItemsToCartDto): Promise { + const cart = await this.getOrCreateCart(userId, restaurantId); + + for (const addItemDto of bulkAddItemsDto.items) { + await this.itemService.addOrIncrementItem(cart, addItemDto.foodId, restaurantId, addItemDto.quantity); + } + + return this.recalculateAndSaveCart(cart); + } + + /** + * Remove item from cart + */ + async removeItem(userId: string, restaurantId: string, foodId: string): Promise { + const cart = await this.findOneOrFail(userId, restaurantId); + this.itemService.removeItemOrFail(cart, foodId); + return this.recalculateAndSaveCart(cart); + } + + /** + * Apply coupon to cart + */ + async applyCoupon(userId: string, restaurantId: string, applyCouponDto: ApplyCouponDto): Promise { + const cart = await this.findOneOrFail(userId, restaurantId); + + const orderAmount = cart.subTotal - cart.itemsDiscount; + const user = await this.validationService.getUserOrFail(userId); + // check if coupon is valid and belong to the restaurant + const { valid, coupon, message } = await this.couponService.validateCoupon( + applyCouponDto.code, + restaurantId, + Number(orderAmount), + user.phone, + ); + + if (!valid) { + throw new BadRequestException(message || CartMessage.COUPON_NOT_FOUND); + } + + if (!coupon) { + throw new BadRequestException(CartMessage.COUPON_NOT_FOUND); + } + + // Check maxUsesPerUser limit by counting how many orders this user has with this coupon + await this.validationService.assertCouponUsageLimit(userId, coupon.id, coupon.maxUsesPerUser); + await this.validationService.assertCouponMatchesCartIfRestricted( + cart, + coupon.foodCategories, + coupon.foods, + ); + + const couponDetail: OrderCouponDetail = { + couponId: coupon.id, + couponName: coupon.name, + couponCode: coupon.code, + type: coupon.type, + value: coupon.value, + maxDiscount: coupon.maxDiscount, + }; + + cart.coupon = couponDetail; + return this.recalculateAndSaveCart(cart); + } + + /** + * Remove coupon from cart + */ + async removeCoupon(userId: string, restaurantId: string): Promise { + const cart = await this.findOneOrFail(userId, restaurantId); + + cart.coupon = undefined; + return this.recalculateAndSaveCart(cart); + } + + /** + * Set address for cart + */ + async setAddress(userId: string, restaurantId: string, addressId: string): Promise { + const cart = await this.findOneOrFail(userId, restaurantId); + + const deliveryMethodId = this.validationService.requireDeliveryMethodId( + cart, + 'Delivery method must be set before setting address', + ); + const deliveryMethod = await this.validationService.getDeliveryMethodForRestaurantOrFail( + restaurantId, + deliveryMethodId, + ); + this.validationService.assertDeliveryMethod( + deliveryMethod.method, + DeliveryMethodEnum.DeliveryCourier, + 'Delivery method must be DeliveryCourier', + ); + + // Find and validate address belongs to user + const address = await this.validationService.getUserAddressOrFail(addressId); + + // Verify address belongs to the user + this.validationService.validateAddressOwnership(address, userId); + + // ensure address is within restaurant service area + await this.validationService.assertAddressInsideServiceArea( + restaurantId, + address.latitude, + address.longitude, + ); + + this.clearFieldsIncompatibleWithDeliveryMethod(cart, DeliveryMethodEnum.DeliveryCourier); + cart.userAddress = { + address: address.address, + latitude: address.latitude, + longitude: address.longitude, + city: address.city, + province: address.province || '', + postalCode: address.postalCode || undefined, + fullName: `${address.user.firstName || ''} ${address.user.lastName || ''}`.trim(), + phone: address.user.phone, + }; + return this.saveTouchedCart(cart); + } + + /** + * Set payment method for cart + */ + async setPaymentMethod( + userId: string, + restaurantId: string, + paymentMethodId: string, + ): Promise { + const cart = await this.findOneOrFail(userId, restaurantId); + + const paymentMethod = await this.validationService.getEnabledPaymentMethodOrFail( + restaurantId, + paymentMethodId, + ); + if (paymentMethod.method === PaymentMethodEnum.Wallet) { + await this.validationService.assertWalletHasEnoughBalance(userId, restaurantId, cart.total); + } + cart.paymentMethodId = paymentMethodId; + return this.recalculateAndSaveCart(cart); + } + + /** + * Set delivery method for cart + */ + async setDeliveryMethod( + userId: string, + restaurantId: string, + deliveryMethodId: string, + ): Promise { + const cart = await this.findOneOrFail(userId, restaurantId); + + const deliveryMethod = await this.validationService.getEnabledDeliveryMethodOrFail( + restaurantId, + deliveryMethodId, + ); + + cart.deliveryMethodId = deliveryMethodId; + this.clearFieldsIncompatibleWithDeliveryMethod(cart, deliveryMethod.method); + + return this.recalculateAndSaveCart(cart); + } + + /** + * Set description for cart + */ + async setDescription(userId: string, restaurantId: string, description: string): Promise { + const cart = await this.findOneOrFail(userId, restaurantId); + + cart.description = description; + return this.saveTouchedCart(cart); + } + + /** + * Set table number for cart + */ + async setTableNumber(userId: string, restaurantId: string, tableNumber: string): Promise { + const cart = await this.findOneOrFail(userId, restaurantId); + + const deliveryMethodId = this.validationService.requireDeliveryMethodId( + cart, + 'Delivery method must be set before setting table number', + ); + const deliveryMethod = await this.validationService.getDeliveryMethodForRestaurantOrFail( + restaurantId, + deliveryMethodId, + ); + this.validationService.assertDeliveryMethod( + deliveryMethod.method, + DeliveryMethodEnum.DineIn, + 'Delivery method must be DineIn', + ); + + this.clearFieldsIncompatibleWithDeliveryMethod(cart, DeliveryMethodEnum.DineIn); + cart.tableNumber = tableNumber; + return this.saveTouchedCart(cart); + } + + /** + * Set car delivery for cart + */ + async setCarDelivery(userId: string, restaurantId: string, setCarDeliveryDto: SetCarDeliveryDto): Promise { + const cart = await this.findOneOrFail(userId, restaurantId); + + const deliveryMethodId = this.validationService.requireDeliveryMethodId( + cart, + 'Delivery method must be set before setting car delivery', + ); + const deliveryMethod = await this.validationService.getDeliveryMethodForRestaurantOrFail( + restaurantId, + deliveryMethodId, + ); + this.validationService.assertDeliveryMethod( + deliveryMethod.method, + DeliveryMethodEnum.DeliveryCar, + 'Delivery method must be DeliveryCar', + ); + const user = await this.validationService.getUserOrFail(userId); + + this.clearFieldsIncompatibleWithDeliveryMethod(cart, DeliveryMethodEnum.DeliveryCar); + cart.carAddress = { + carModel: setCarDeliveryDto.carModel, + carColor: setCarDeliveryDto.carColor, + plateNumber: setCarDeliveryDto.plateNumber, + phone: user.phone, + }; + return this.saveTouchedCart(cart); + } + + /** + * Clear cart from cache + */ + async clearCart(userId: string, restaurantId: string): Promise { + return this.cartRepository.delete(userId, restaurantId); + } + + /** + * Clears cart fields that are not applicable for a given delivery method. + */ + private clearFieldsIncompatibleWithDeliveryMethod(cart: Cart, method: DeliveryMethodEnum): void { + if (method === DeliveryMethodEnum.DineIn) { + cart.userAddress = null; + cart.carAddress = null; + return; + } + + if (method === DeliveryMethodEnum.CustomerPickup) { + cart.userAddress = null; + cart.carAddress = null; + cart.tableNumber = undefined; + return; + } + + if (method === DeliveryMethodEnum.DeliveryCourier) { + cart.carAddress = null; + cart.tableNumber = undefined; + return; + } + + if (method === DeliveryMethodEnum.DeliveryCar) { + cart.userAddress = null; + cart.tableNumber = undefined; + return; + } + } + + /** + * Save cart with updated timestamp + */ + private async saveTouchedCart(cart: Cart): Promise { + cart.updatedAt = this.nowIso(); + await this.cartRepository.save(cart); + return cart; + } + + /** + * Recalculate cart totals and save + */ + private async recalculateAndSaveCart(cart: Cart): Promise { + await this.calculationService.recalculateCartTotals(cart); + await this.cartRepository.save(cart); + return cart; + } + + /** + * Get current ISO timestamp + */ + private nowIso(): string { + return new Date().toISOString(); + } +} diff --git a/src/modules/cart/repositories/cart.repository.ts b/src/modules/cart/repositories/cart.repository.ts new file mode 100644 index 0000000..4c1a6f4 --- /dev/null +++ b/src/modules/cart/repositories/cart.repository.ts @@ -0,0 +1,81 @@ +import { Injectable } from '@nestjs/common'; +import { CacheService } from '../../utils/cache.service'; +import { Cart } from '../interfaces/cart.interface'; + +@Injectable() +export class CartRepository { + private readonly CART_TTL = 3600; // 1 hour in seconds + private readonly CART_KEY_PREFIX = 'cart'; + + constructor(private readonly cacheService: CacheService) {} + + /** + * Get cart by user and restaurant + */ + async findByUserAndRestaurant(userId: string, restaurantId: string): Promise { + const cacheKey = this.getCacheKey(userId, restaurantId); + const cachedCart = await this.cacheService.get(cacheKey); + + if (cachedCart) { + try { + const parsed: unknown = JSON.parse(cachedCart); + if (this.isCart(parsed) && parsed.userId === userId && parsed.restaurantId === restaurantId) { + return parsed; + } + } catch { + // If parsing fails, return null + } + } + + return null; + } + + /** + * Save cart to cache + */ + async save(cart: Cart): Promise { + const cacheKey = this.getCacheKey(cart.userId, cart.restaurantId); + await this.cacheService.set(cacheKey, JSON.stringify(cart), this.CART_TTL); + } + + /** + * Delete cart from cache + */ + async delete(userId: string, restaurantId: string): Promise { + const cacheKey = this.getCacheKey(userId, restaurantId); + await this.cacheService.del(cacheKey); + } + + /** + * Generate cache key for cart + */ + private getCacheKey(userId: string, restaurantId: string): string { + return `${this.CART_KEY_PREFIX}:${userId}:${restaurantId}`; + } + + /** + * Type guard to check if an object is a Cart + */ + private isCart(obj: unknown): obj is Cart { + if (typeof obj !== 'object' || obj === null) { + return false; + } + const cart = obj as Record; + return ( + typeof cart.userId === 'string' && + typeof cart.restaurantId === 'string' && + Array.isArray(cart.items) && + typeof cart.subTotal === 'number' && + typeof cart.itemsDiscount === 'number' && + typeof cart.couponDiscount === 'number' && + typeof cart.totalDiscount === 'number' && + typeof cart.tax === 'number' && + typeof cart.deliveryFee === 'number' && + typeof cart.total === 'number' && + typeof cart.totalItems === 'number' && + typeof cart.createdAt === 'string' && + typeof cart.updatedAt === 'string' + ); + } +} + diff --git a/src/modules/cart/utils/geographic.utils.ts b/src/modules/cart/utils/geographic.utils.ts new file mode 100644 index 0000000..8b2d888 --- /dev/null +++ b/src/modules/cart/utils/geographic.utils.ts @@ -0,0 +1,68 @@ +/** + * Utility class for geographic calculations + */ +export class GeographicUtils { + /** + * Check if a point is inside a polygon using ray-casting algorithm + * @param point - [longitude, latitude] + * @param polygon - Array of [longitude, latitude] pairs + */ + static isPointInPolygon(point: [number, number], polygon: [number, number][]): boolean { + const x = point[0]; + const y = point[1]; + let inside = false; + + for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) { + const xi = polygon[i][0]; + const yi = polygon[i][1]; + const xj = polygon[j][0]; + const yj = polygon[j][1]; + + const intersect = + yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi + Number.EPSILON) + xi; + if (intersect) inside = !inside; + } + + return inside; + } + + /** + * Convert degrees to radians + */ + private static toRad(value: number): number { + return (value * Math.PI) / 180; + } + + /** + * Calculate distance between two points in kilometers using Haversine formula + */ + static getDistanceKm(lat1: number, lng1: number, lat2: number, lng2: number): number { + const R = 6371; // Earth radius in KM + + const dLat = this.toRad(lat2 - lat1); + const dLng = this.toRad(lng2 - lng1); + + const a = + Math.sin(dLat / 2) ** 2 + + Math.cos(this.toRad(lat1)) * Math.cos(this.toRad(lat2)) * Math.sin(dLng / 2) ** 2; + + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + + return R * c; + } + + /** + * Calculate distance between two points in kilometers (rounded) + */ + static getDistanceKmRounded( + lat1: number, + lng1: number, + lat2: number, + lng2: number, + precision = 2, + ): number { + const distance = this.getDistanceKm(lat1, lng1, lat2, lng2); + return Number(distance.toFixed(precision)); + } +} + diff --git a/src/modules/contact/contact.module.ts b/src/modules/contact/contact.module.ts new file mode 100644 index 0000000..aee946f --- /dev/null +++ b/src/modules/contact/contact.module.ts @@ -0,0 +1,15 @@ +import { Module } from '@nestjs/common'; +import { ContactService } from './providers/contact.service'; +import { ContactController } from './controllers/contact.controller'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { Contact } from './entities/contact.entity'; +import { ContactRepository } from './repositories/contact.repository'; +import { JwtModule } from '@nestjs/jwt'; + +@Module({ + imports: [MikroOrmModule.forFeature([Contact]), JwtModule], + controllers: [ContactController], + providers: [ContactService, ContactRepository], + exports: [ContactRepository], +}) +export class ContactModule {} diff --git a/src/modules/contact/controllers/contact.controller.ts b/src/modules/contact/controllers/contact.controller.ts new file mode 100644 index 0000000..83736fa --- /dev/null +++ b/src/modules/contact/controllers/contact.controller.ts @@ -0,0 +1,108 @@ +import { + Controller, + Get, + Post, + Body, + Patch, + Param, + Query, + UseGuards, + Delete, +} from '@nestjs/common'; +import { ContactService } from '../providers/contact.service'; +import { CreateContactDto } from '../dto/create-contact.dto'; +import { FindContactsDto } from '../dto/find-contacts.dto'; +import { UpdateContactStatusDto } from '../dto/update-contact-status.dto'; +import { ApiTags, ApiOperation, ApiBearerAuth, ApiParam, ApiQuery, ApiHeader } from '@nestjs/swagger'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { SuperAdminAuthGuard } from 'src/modules/auth/guards/superAdminAuth.guard'; +import { OptionalAuthGuard } from 'src/modules/auth/guards/optinalAuth.guard'; +import { API_HEADER_SLUG } from 'src/common/constants'; +import { Permission } from 'src/common/enums/permission.enum'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { RestId } from 'src/common/decorators/rest-id.decorator'; +import { RestSlug } from 'src/common/decorators/rest-slug.decorator'; + +@ApiTags('contact') +@Controller() +export class ContactController { + constructor(private readonly contactService: ContactService) { } + + @UseGuards(OptionalAuthGuard) + @Post('public/contact') + @ApiOperation({ summary: 'Create a new contact (public endpoint)' }) + @ApiHeader(API_HEADER_SLUG) + async create(@Body() createContactDto: CreateContactDto, @RestSlug() slug: string, @RestId() restId?: string) { + return this.contactService.create(createContactDto, restId, slug); + } + + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_CONTACTS) + @Get('admin/contact') + @ApiOperation({ summary: 'Get paginated list of contacts (admin only)' }) + @ApiQuery({ name: 'page', required: false, type: Number }) + @ApiQuery({ name: 'limit', required: false, type: Number }) + @ApiQuery({ name: 'search', required: false, type: String }) + @ApiQuery({ name: 'orderBy', required: false, type: String }) + @ApiQuery({ name: 'order', required: false, enum: ['asc', 'desc'] }) + @ApiQuery({ name: 'status', required: false, enum: ['new', 'seen'] }) + async findAllPaginated(@RestId() restId: string, @Query() dto: FindContactsDto) { + return this.contactService.findAllPaginatedAdmin(dto, restId); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_CONTACTS) + @Get('admin/contact/:id') + @ApiOperation({ summary: 'Get contact details by ID (admin only)' }) + @ApiParam({ name: 'id', description: 'Contact ID' }) + async findOne(@RestId() restId: string, @Param('id') id: string) { + return this.contactService.findOne(id, restId); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_CONTACTS) + @Patch('admin/contact/:id/status') + @ApiOperation({ summary: 'Update contact status (admin only)' }) + @ApiParam({ name: 'id', description: 'Contact ID' }) + async updateStatus(@RestId() restId: string, @Param('id') id: string, @Body() dto: UpdateContactStatusDto) { + return this.contactService.updateStatus(id, dto, restId); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_CONTACTS) + @Delete('admin/contact/:id') + @ApiOperation({ summary: 'Hard delete a contact (admin only)' }) + @ApiParam({ name: 'id', description: 'Contact ID' }) + async remove(@RestId() restId: string, @Param('id') id: string) { + await this.contactService.remove(id, restId); + } + + /*** Super Admin ***/ + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @Get('super-admin/contact') + @ApiOperation({ summary: 'Get paginated list of contacts (admin only)' }) + @ApiQuery({ name: 'page', required: false, type: Number }) + @ApiQuery({ name: 'limit', required: false, type: Number }) + @ApiQuery({ name: 'search', required: false, type: String }) + @ApiQuery({ name: 'orderBy', required: false, type: String }) + @ApiQuery({ name: 'order', required: false, enum: ['asc', 'desc'] }) + @ApiQuery({ name: 'status', required: false, enum: ['new', 'seen'] }) + async findAllPaginatedForSuper(@Query() dto: FindContactsDto) { + return this.contactService.findAllPaginatedSuper(dto); + } + + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @Get('super-admin/contact/:id') + @ApiOperation({ summary: 'Get contact details by ID (admin only)' }) + @ApiParam({ name: 'id', description: 'Contact ID' }) + async findOneForSuper(@Param('id') id: string) { + return this.contactService.findOne(id); + } +} diff --git a/src/modules/contact/dto/create-contact.dto.ts b/src/modules/contact/dto/create-contact.dto.ts new file mode 100644 index 0000000..134bd54 --- /dev/null +++ b/src/modules/contact/dto/create-contact.dto.ts @@ -0,0 +1,26 @@ +import { IsNotEmpty, IsString, IsOptional, IsMobilePhone, IsEnum } from 'class-validator'; +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; +import { ContactScope } from '../interface/interface'; + +export class CreateContactDto { + @IsOptional() + @IsString() + @ApiPropertyOptional({ example: 'Question about menu', description: 'Contact subject' }) + subject?: string; + + @IsNotEmpty() + @IsString() + @ApiProperty({ example: 'I have a question about your menu items', description: 'Contact content/message' }) + content!: string; + + @IsNotEmpty() + @IsEnum(['application', 'restaurant']) + @ApiProperty({ description: 'Contact Scope' }) + scope!: ContactScope; + + @IsOptional() + @IsString() + @IsMobilePhone('fa-IR') + @ApiPropertyOptional({ example: '09362532122', description: 'Phone number' }) + phone?: string; +} diff --git a/src/modules/contact/dto/find-contacts.dto.ts b/src/modules/contact/dto/find-contacts.dto.ts new file mode 100644 index 0000000..4a662bd --- /dev/null +++ b/src/modules/contact/dto/find-contacts.dto.ts @@ -0,0 +1,42 @@ +import { IsOptional, IsNumber, IsString, IsIn, IsEnum } from 'class-validator'; +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; +import { ContactStatusEnum } from '../interface/interface'; + +const sortOrderOptions = ['asc', 'desc'] as const; +type SortOrder = (typeof sortOrderOptions)[number]; + +export class FindContactsDto { + @IsOptional() + @IsNumber() + @Type(() => Number) + @ApiPropertyOptional({ example: 1, description: 'Page number', minimum: 1, default: 1 }) + page?: number = 1; + + @IsOptional() + @IsNumber() + @Type(() => Number) + @ApiPropertyOptional({ example: 10, description: 'Items per page', minimum: 1, default: 10 }) + limit?: number = 10; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ example: 'menu', description: 'Search in subject, content, or phone' }) + search?: string; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ example: 'createdAt', description: 'Field to sort by', default: 'createdAt' }) + orderBy?: string = 'createdAt'; + + @IsOptional() + @IsIn(sortOrderOptions) + @ApiPropertyOptional({ example: 'desc', enum: sortOrderOptions, default: 'desc' }) + order?: SortOrder = 'desc'; + + @IsOptional() + @IsEnum(ContactStatusEnum) + @ApiPropertyOptional({ enum: ContactStatusEnum, description: 'Filter by status' }) + status?: ContactStatusEnum; + +} diff --git a/src/modules/contact/dto/update-contact-status.dto.ts b/src/modules/contact/dto/update-contact-status.dto.ts new file mode 100644 index 0000000..c68ced2 --- /dev/null +++ b/src/modules/contact/dto/update-contact-status.dto.ts @@ -0,0 +1,10 @@ +import { IsEnum, IsNotEmpty } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; +import { ContactStatusEnum } from '../interface/interface'; + +export class UpdateContactStatusDto { + @IsNotEmpty() + @IsEnum(ContactStatusEnum) + @ApiProperty({ enum: ContactStatusEnum, description: 'New status for the contact' }) + status!: ContactStatusEnum; +} diff --git a/src/modules/contact/dto/update-contact.dto.ts b/src/modules/contact/dto/update-contact.dto.ts new file mode 100644 index 0000000..366df50 --- /dev/null +++ b/src/modules/contact/dto/update-contact.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateContactDto } from './create-contact.dto'; + +export class UpdateContactDto extends PartialType(CreateContactDto) {} diff --git a/src/modules/contact/entities/contact.entity.ts b/src/modules/contact/entities/contact.entity.ts new file mode 100644 index 0000000..281855c --- /dev/null +++ b/src/modules/contact/entities/contact.entity.ts @@ -0,0 +1,26 @@ +import { Entity, Enum, ManyToOne, Property } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { ContactScope, ContactStatusEnum } from '../interface/interface'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; + +@Entity({ tableName: 'contacts' }) +export class Contact extends BaseEntity { + @Property({ nullable: true }) + subject?: string | null = null; + + @Property() + content!: string; + + @Property({ nullable: true }) + phone?: string | null = null; + + @Enum(() => ContactScope) + scope: ContactScope + + @ManyToOne(() => Restaurant, { nullable: true }) + restaurant?: Restaurant | null = null; + + + @Property({ default: ContactStatusEnum.New }) + status: ContactStatusEnum = ContactStatusEnum.New; +} diff --git a/src/modules/contact/interface/interface.ts b/src/modules/contact/interface/interface.ts new file mode 100644 index 0000000..70cb107 --- /dev/null +++ b/src/modules/contact/interface/interface.ts @@ -0,0 +1,9 @@ +export enum ContactStatusEnum { + New = 'new', + Seen = 'seen', +} + +export enum ContactScope { + APPLICATION = 'application', + RESTAURANT = 'restaurant', +} diff --git a/src/modules/contact/providers/contact.service.ts b/src/modules/contact/providers/contact.service.ts new file mode 100644 index 0000000..48fad03 --- /dev/null +++ b/src/modules/contact/providers/contact.service.ts @@ -0,0 +1,108 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { CreateContactDto } from '../dto/create-contact.dto'; +import { FindContactsDto } from '../dto/find-contacts.dto'; +import { UpdateContactStatusDto } from '../dto/update-contact-status.dto'; +import { ContactRepository } from '../repositories/contact.repository'; +import { Contact } from '../entities/contact.entity'; +import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; +import { ContactStatusEnum } from '../interface/interface'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { ContactScope } from '../interface/interface'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; + +@Injectable() +export class ContactService { + constructor( + private readonly contactRepository: ContactRepository, + private readonly em: EntityManager, + ) { } + + async create(dto: CreateContactDto, restId?: string, slug?: string): Promise { + + + let restaurant: Restaurant | null = null; + + if ((restId || slug) && dto.scope === ContactScope.RESTAURANT) { + restaurant = await this.em.findOne(Restaurant, { + ...(restId ? { id: restId } : {}) + , ...(slug ? { slug: slug } : {}) + }); + if (!restaurant) { + throw new NotFoundException(`Restaurant with ID ${restId} not found`); + } + } + + const contact = this.contactRepository.create({ + ...dto, + status: ContactStatusEnum.New, + restaurant, + }); + await this.em.persistAndFlush(contact); + return contact; + } + + async findAllPaginatedAdmin(dto: FindContactsDto, restaurantId?: string): Promise> { + return this.contactRepository.findAllPaginated({ + page: dto.page, + limit: dto.limit, + search: dto.search, + orderBy: dto.orderBy, + order: dto.order, + status: dto.status, + scope: ContactScope.RESTAURANT, + restaurantId + }); + } + async findAllPaginatedSuper(dto: FindContactsDto): Promise> { + return this.contactRepository.findAllPaginated({ + page: dto.page, + limit: dto.limit, + search: dto.search, + orderBy: dto.orderBy, + order: dto.order, + status: dto.status, + scope: ContactScope.APPLICATION + }); + } + + async findOne(id: string, restaurantId?: string): Promise { + const where: any = { id }; + if (restaurantId) { + where.restaurant = restaurantId; + } + + const contact = await this.contactRepository.findOne(where); + if (!contact) { + throw new NotFoundException(`Contact with ID ${id} not found`); + } + return contact; + } + + async updateStatus(id: string, dto: UpdateContactStatusDto, restaurantId?: string): Promise { + const where: any = { id }; + if (restaurantId) { + where.restaurant = restaurantId; + } + + const contact = await this.contactRepository.findOne(where); + if (!contact) { + throw new NotFoundException(`Contact with ID ${id} not found`); + } + contact.status = dto.status; + await this.em.persistAndFlush(contact); + return contact; + } + + async remove(id: string, restaurantId?: string): Promise { + const where: any = { id }; + if (restaurantId) { + where.restaurant = restaurantId; + } + + const contact = await this.contactRepository.findOne(where); + if (!contact) { + throw new NotFoundException(`Contact with ID ${id} not found`); + } + await this.em.removeAndFlush(contact); + } +} diff --git a/src/modules/contact/repositories/contact.repository.ts b/src/modules/contact/repositories/contact.repository.ts new file mode 100644 index 0000000..01f6278 --- /dev/null +++ b/src/modules/contact/repositories/contact.repository.ts @@ -0,0 +1,69 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { FilterQuery } from '@mikro-orm/core'; +import { Contact } from '../entities/contact.entity'; +import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; +import { ContactScope, ContactStatusEnum } from '../interface/interface'; + +type FindContactsOpts = { + page?: number; + limit?: number; + search?: string; + orderBy?: string; + order?: 'asc' | 'desc'; + status?: ContactStatusEnum; + scope?: ContactScope; + restaurantId?: string; +}; + +@Injectable() +export class ContactRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Contact); + } + + /** + * Find contacts with pagination and optional filters. + * Supports: search (subject/content/phone), status, ordering. + */ + async findAllPaginated(opts: FindContactsOpts = {}): Promise> { + const { page = 1, limit = 10, search, scope, orderBy = 'createdAt', order = 'desc', status, restaurantId } = opts; + + const offset = (page - 1) * limit; + + const where: FilterQuery = {}; + + if (status) { + where.status = status; + } + if (scope) { + where.scope = scope; + } + if (restaurantId) { + where.restaurant = restaurantId; + } + + if (search) { + const pattern = `%${search}%`; + where.$or = [{ subject: { $ilike: pattern } }, { content: { $ilike: pattern } }, { phone: { $ilike: pattern } }]; + } + + const [data, total] = await this.findAndCount(where, { + limit, + offset, + orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' }, + }); + + const totalPages = Math.ceil(total / limit); + + return { + data, + meta: { + total, + page, + limit, + totalPages, + }, + }; + } +} diff --git a/src/modules/coupons/controllers/coupon.controller.ts b/src/modules/coupons/controllers/coupon.controller.ts new file mode 100644 index 0000000..ca54469 --- /dev/null +++ b/src/modules/coupons/controllers/coupon.controller.ts @@ -0,0 +1,112 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete, Query, UseGuards } from '@nestjs/common'; +import { CouponService } from '../providers/coupon.service'; +import { CreateCouponDto } from '../dto/create-coupon.dto'; +import { UpdateCouponDto } from '../dto/update-coupon.dto'; +import { FindCouponsDto } from '../dto/find-coupons.dto'; +import { + ApiTags, + ApiOperation, + ApiCreatedResponse, + ApiOkResponse, + ApiNotFoundResponse, + ApiQuery, + ApiBody, + ApiParam, + ApiBearerAuth, + ApiHeader, +} from '@nestjs/swagger'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { RestId } from 'src/common/decorators'; +import { AuthGuard } from 'src/modules/auth/guards/auth.guard'; +import { API_HEADER_SLUG } from 'src/common/constants'; +import { Permission } from 'src/common/enums/permission.enum'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; + +@ApiTags('coupons') +@Controller() +export class CouponController { + constructor(private readonly couponService: CouponService) { } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Get('public/coupons/me') + @ApiOperation({ summary: 'Get paginated list of restaurant coupons' }) + @ApiHeader(API_HEADER_SLUG) + @ApiQuery({ name: 'page', required: false, type: Number }) + @ApiQuery({ name: 'limit', required: false, type: Number }) + @ApiQuery({ name: 'search', required: false, type: String }) + @ApiQuery({ name: 'orderBy', required: false, type: String }) + @ApiQuery({ name: 'order', required: false, enum: ['asc', 'desc'] }) + @ApiQuery({ name: 'type', required: false, enum: ['PERCENTAGE', 'FIXED'] }) + @ApiQuery({ name: 'isActive', required: false, type: Boolean }) + getMyCoupons(@Query() dto: FindCouponsDto, @RestId() restId: string) { + return this.couponService.findAll(restId, dto); + } + /*** Admin ***/ + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_COUPONS) + @Post('admin/coupons') + @ApiOperation({ summary: 'Create a new coupon' }) + @ApiCreatedResponse({ description: 'The coupon has been successfully created.', type: CreateCouponDto }) + @ApiBody({ type: CreateCouponDto }) + create(@Body() createCouponDto: CreateCouponDto, @RestId() restId: string) { + return this.couponService.create(restId, createCouponDto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_COUPONS) + @Get('admin/coupons') + @ApiOperation({ summary: 'Get a paginated list of coupons' }) + @ApiQuery({ name: 'page', required: false, type: Number }) + @ApiQuery({ name: 'limit', required: false, type: Number }) + @ApiQuery({ name: 'search', required: false, type: String }) + @ApiQuery({ name: 'orderBy', required: false, type: String }) + @ApiQuery({ name: 'order', required: false, enum: ['asc', 'desc'] }) + @ApiQuery({ name: 'type', required: false, enum: ['PERCENTAGE', 'FIXED'] }) + @ApiQuery({ name: 'isActive', required: false, type: Boolean }) + findAll(@Query() dto: FindCouponsDto, @RestId() restId: string) { + return this.couponService.findAll(restId, dto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_COUPONS) + @Get('admin/coupons/:id') + @ApiOperation({ summary: 'Get a coupon by id' }) + @ApiParam({ name: 'id', required: true }) + findById(@Param('id') id: string) { + return this.couponService.findById(id); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_COUPONS) + @Patch('admin/coupons/:id') + @ApiOperation({ summary: 'Update a coupon' }) + @ApiParam({ name: 'id', required: true }) + @ApiBody({ type: UpdateCouponDto }) + update(@Param('id') id: string, @Body() updateCouponDto: UpdateCouponDto) { + return this.couponService.update(id, updateCouponDto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_COUPONS) + @Delete('admin/coupons/:id') + @ApiOperation({ summary: 'Delete (soft) a coupon' }) + @ApiParam({ name: 'id', required: true }) + remove(@Param('id') id: string) { + return this.couponService.remove(id); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_COUPONS) + @Get('admin/coupons/generate-code') + @ApiOperation({ summary: 'generate a coupon code' }) + generateCouponCode(@RestId() restId: string) { + return this.couponService.generateCouponCode(restId); + } +} diff --git a/src/modules/coupons/coupon.module.ts b/src/modules/coupons/coupon.module.ts new file mode 100644 index 0000000..6e65e47 --- /dev/null +++ b/src/modules/coupons/coupon.module.ts @@ -0,0 +1,17 @@ +import { Module } from '@nestjs/common'; +import { CouponService } from './providers/coupon.service'; +import { CouponController } from './controllers/coupon.controller'; +import { CouponRepository } from './repositories/coupon.repository'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { Coupon } from './entities/coupon.entity'; +import { RestaurantsModule } from '../restaurants/restaurants.module'; +import { AuthModule } from '../auth/auth.module'; +import { JwtModule } from '@nestjs/jwt'; + +@Module({ + imports: [MikroOrmModule.forFeature([Coupon]), RestaurantsModule, AuthModule, JwtModule], + controllers: [CouponController], + providers: [CouponService, CouponRepository], + exports: [CouponRepository, CouponService], +}) +export class CouponModule {} diff --git a/src/modules/coupons/dto/create-coupon.dto.ts b/src/modules/coupons/dto/create-coupon.dto.ts new file mode 100644 index 0000000..05e2174 --- /dev/null +++ b/src/modules/coupons/dto/create-coupon.dto.ts @@ -0,0 +1,115 @@ +import { + IsNotEmpty, + IsString, + IsEnum, + IsNumber, + IsOptional, + IsBoolean, + IsDateString, + Min, + IsArray, +} from 'class-validator'; +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; +import { CouponType } from '../interface/coupon'; + +export class CreateCouponDto { + @IsNotEmpty() + @IsString() + @ApiProperty({ example: 'DISCOUNT10', description: 'Unique coupon code' }) + code!: string; + + @IsNotEmpty() + @IsString() + @ApiProperty({ example: '10% Off', description: 'Coupon name' }) + name!: string; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ example: 'Get 10% off on your order', description: 'Coupon description' }) + description?: string; + + @IsNotEmpty() + @IsEnum(CouponType) + @ApiProperty({ enum: CouponType, example: CouponType.PERCENTAGE, description: 'Coupon type' }) + type!: CouponType; + + @IsNotEmpty() + @IsNumber() + @Min(0) + @Type(() => Number) + @ApiProperty({ example: 10, description: 'Discount value (amount or percentage)' }) + value!: number; + + @IsOptional() + @IsNumber() + @Min(0) + @Type(() => Number) + @ApiPropertyOptional({ example: 50000, description: 'Maximum discount amount (for percentage coupons)' }) + maxDiscount?: number; + + @IsOptional() + @IsNumber() + @Min(0) + @Type(() => Number) + @ApiPropertyOptional({ example: 100000, description: 'Minimum order amount to use coupon' }) + minOrderAmount?: number; + + @IsOptional() + @IsNumber() + @Min(1) + @Type(() => Number) + @ApiPropertyOptional({ example: 100, description: 'Maximum number of times coupon can be used' }) + maxUses?: number; + + @IsOptional() + @IsNumber() + @Min(1) + @Type(() => Number) + @ApiPropertyOptional({ example: 1, description: 'Maximum uses per user' }) + maxUsesPerUser?: number; + + @IsOptional() + @IsDateString() + @ApiPropertyOptional({ example: '2024-01-01T00:00:00Z', description: 'Coupon validity start date' }) + startDate?: string; + + @IsOptional() + @IsDateString() + @ApiPropertyOptional({ example: '2024-12-31T23:59:59Z', description: 'Coupon validity end date' }) + endDate?: string; + + @IsOptional() + @IsBoolean() + @Type(() => Boolean) + @ApiPropertyOptional({ example: true, description: 'Whether coupon is active' }) + isActive?: boolean; + + @IsOptional() + @IsArray() + @IsString({ each: true }) + @ApiPropertyOptional({ + example: ['category-id-1', 'category-id-2'], + description: 'Array of food category IDs. If empty, coupon applies to all categories.', + type: [String], + }) + foodCategories?: string[]; + + @IsOptional() + @IsArray() + @IsString({ each: true }) + @ApiPropertyOptional({ + example: ['food-id-1', 'food-id-2'], + description: 'Array of food IDs. If empty, coupon applies to all foods.', + type: [String], + }) + foods?: string[]; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ + example: '09123456789', + description: 'Phone number of the user who can use this coupon. If empty, coupon can be used by any user.', + }) + userPhone?: string; +} diff --git a/src/modules/coupons/dto/find-coupons.dto.ts b/src/modules/coupons/dto/find-coupons.dto.ts new file mode 100644 index 0000000..3aadf98 --- /dev/null +++ b/src/modules/coupons/dto/find-coupons.dto.ts @@ -0,0 +1,44 @@ +import { IsOptional, IsString, IsBoolean, IsNumber, IsEnum } from 'class-validator'; +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; +import { CouponType } from '../interface/coupon'; + +export class FindCouponsDto { + @IsOptional() + @IsNumber() + @Type(() => Number) + @ApiPropertyOptional({ example: 1, description: 'Page number' }) + page?: number; + + @IsOptional() + @IsNumber() + @Type(() => Number) + @ApiPropertyOptional({ example: 10, description: 'Items per page' }) + limit?: number; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ example: 'DISCOUNT', description: 'Search term for code or name' }) + search?: string; + + @IsOptional() + @IsEnum(CouponType) + @ApiPropertyOptional({ enum: CouponType, description: 'Filter by coupon type' }) + type?: CouponType; + + @IsOptional() + @IsBoolean() + @Type(() => Boolean) + @ApiPropertyOptional({ example: true, description: 'Filter by active status' }) + isActive?: boolean; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ example: 'createdAt', description: 'Field to order by' }) + orderBy?: string; + + @IsOptional() + @IsEnum(['asc', 'desc']) + @ApiPropertyOptional({ enum: ['asc', 'desc'], example: 'desc', description: 'Sort order' }) + order?: 'asc' | 'desc'; +} diff --git a/src/modules/coupons/dto/update-coupon.dto.ts b/src/modules/coupons/dto/update-coupon.dto.ts new file mode 100644 index 0000000..deca52b --- /dev/null +++ b/src/modules/coupons/dto/update-coupon.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateCouponDto } from './create-coupon.dto'; + +export class UpdateCouponDto extends PartialType(CreateCouponDto) {} diff --git a/src/modules/coupons/dto/validate-coupon.dto.ts b/src/modules/coupons/dto/validate-coupon.dto.ts new file mode 100644 index 0000000..2ee78e7 --- /dev/null +++ b/src/modules/coupons/dto/validate-coupon.dto.ts @@ -0,0 +1,21 @@ +import { IsNotEmpty, IsString, IsNumber, IsOptional } from 'class-validator'; +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; + +export class ValidateCouponDto { + @IsNotEmpty() + @IsString() + @ApiProperty({ example: 'DISCOUNT10', description: 'Coupon code to validate' }) + code!: string; + + @IsOptional() + @IsNumber() + @Type(() => Number) + @ApiPropertyOptional({ example: 150000, description: 'Order total amount for validation' }) + orderAmount?: number; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ example: 'user-id', description: 'User ID for per-user usage limits' }) + userId?: string; +} diff --git a/src/modules/coupons/entities/coupon.entity.ts b/src/modules/coupons/entities/coupon.entity.ts new file mode 100644 index 0000000..ab708c9 --- /dev/null +++ b/src/modules/coupons/entities/coupon.entity.ts @@ -0,0 +1,71 @@ +import { Entity, Index, ManyToOne, Property, Enum, Unique } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { normalizePhone } from '../../utils/phone.util'; +import { CouponType } from '../interface/coupon'; + +@Entity({ tableName: 'coupons' }) +@Unique({ properties: ['code', 'restaurant'] }) +@Index({ properties: ['restaurant', 'code', 'isActive'] }) +@Index({ properties: ['restaurant', 'isActive'] }) +@Index({ properties: ['code'] }) +export class Coupon extends BaseEntity { + @ManyToOne(() => Restaurant) + restaurant!: Restaurant; + + @Property() + code!: string; + + @Property() + name!: string; + + @Property({ type: 'text', nullable: true }) + description?: string; + + @Enum(() => CouponType) + type!: CouponType; + + @Property({ type: 'decimal', precision: 10, scale: 2 }) + value!: number; // Discount amount or percentage + + @Property({ type: 'decimal', precision: 10, scale: 2, nullable: true }) + maxDiscount?: number; // Maximum discount for percentage coupons + + @Property({ type: 'decimal', precision: 10, scale: 2, nullable: true }) + minOrderAmount?: number; // Minimum order amount to use coupon + + @Property({ type: 'int', nullable: true }) + maxUses?: number; // Maximum number of times coupon can be used + + @Property({ type: 'int', default: 0 }) + usedCount: number = 0; // Number of times coupon has been used + + @Property({ type: 'int', nullable: true }) + maxUsesPerUser?: number; // Maximum uses per user + + @Property({ type: 'timestamptz', nullable: true }) + startDate?: Date; // Coupon validity start date + + @Property({ type: 'timestamptz', nullable: true }) + endDate?: Date; // Coupon validity end date + + @Property({ type: 'boolean', default: true }) + isActive: boolean = true; + + @Property({ type: 'json', nullable: true }) + foodCategories?: string[]; // Array of category IDs + + @Property({ type: 'json', nullable: true }) + foods?: string[]; // Array of food IDs + + private _userPhone?: string; + + @Property({ nullable: true }) + get userPhone(): string | undefined { + return this._userPhone; + } + + set userPhone(value: string | undefined) { + this._userPhone = value ? normalizePhone(value) : undefined; + } +} diff --git a/src/modules/coupons/interface/coupon.ts b/src/modules/coupons/interface/coupon.ts new file mode 100644 index 0000000..098f26a --- /dev/null +++ b/src/modules/coupons/interface/coupon.ts @@ -0,0 +1,4 @@ +export enum CouponType { + PERCENTAGE = 'PERCENTAGE', + FIXED = 'FIXED', +} diff --git a/src/modules/coupons/providers/coupon.service.ts b/src/modules/coupons/providers/coupon.service.ts new file mode 100644 index 0000000..dc69a57 --- /dev/null +++ b/src/modules/coupons/providers/coupon.service.ts @@ -0,0 +1,271 @@ +import { Injectable, NotFoundException, BadRequestException } from '@nestjs/common'; +import { CreateCouponDto } from '../dto/create-coupon.dto'; +import { UpdateCouponDto } from '../dto/update-coupon.dto'; +import { FindCouponsDto } from '../dto/find-coupons.dto'; +import { CouponRepository } from '../repositories/coupon.repository'; +import { RestRepository } from '../../restaurants/repositories/rest.repository'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { RequiredEntityData } from '@mikro-orm/core'; +import { Coupon } from '../entities/coupon.entity'; +import { CouponType } from '../interface/coupon'; +import { CouponMessage, RestMessage } from 'src/common/enums/message.enum'; +import { randomBytes } from 'node:crypto'; + +@Injectable() +export class CouponService { + constructor( + private readonly couponRepository: CouponRepository, + private readonly restRepository: RestRepository, + private readonly em: EntityManager, + ) { } + + async create(restId: string, createCouponDto: CreateCouponDto): Promise { + const restaurant = await this.restRepository.findOne({ id: restId }); + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + + // Check if code already exists + const existingCoupon = await this.couponRepository.findOne({ code: createCouponDto.code }); + if (existingCoupon) { + throw new BadRequestException(CouponMessage.CODE_ALREADY_EXISTS); + } + + // Validate dates + if (createCouponDto.startDate && createCouponDto.endDate) { + const startDate = new Date(createCouponDto.startDate); + const endDate = new Date(createCouponDto.endDate); + if (endDate <= startDate) { + throw new BadRequestException(CouponMessage.END_DATE_MUST_BE_AFTER_START_DATE); + } + } + + // Validate percentage coupon + if (createCouponDto.type === CouponType.PERCENTAGE) { + if (createCouponDto.value < 0 || createCouponDto.value > 100) { + throw new BadRequestException(CouponMessage.PERCENTAGE_MUST_BE_BETWEEN_0_AND_100); + } + } + + const data: RequiredEntityData = { + restaurant, + code: createCouponDto.code, + name: createCouponDto.name, + description: createCouponDto.description, + type: createCouponDto.type, + value: createCouponDto.value, + maxDiscount: createCouponDto.maxDiscount, + minOrderAmount: createCouponDto.minOrderAmount, + maxUses: createCouponDto.maxUses, + maxUsesPerUser: createCouponDto.maxUsesPerUser, + startDate: createCouponDto.startDate ? new Date(createCouponDto.startDate) : undefined, + endDate: createCouponDto.endDate ? new Date(createCouponDto.endDate) : undefined, + isActive: createCouponDto.isActive ?? true, + usedCount: 0, + foodCategories: createCouponDto.foodCategories, + foods: createCouponDto.foods, + userPhone: createCouponDto.userPhone, + }; + + const coupon = this.couponRepository.create(data); + if (!coupon) { + throw new Error('Failed to create coupon entity'); + } + + await this.em.persistAndFlush(coupon); + return coupon; + } + + findAll(restId: string, dto: FindCouponsDto) { + return this.couponRepository.findAllPaginated(restId, dto); + } + + async findById(id: string): Promise { + const coupon = await this.couponRepository.findOne({ id }, { populate: ['restaurant'] }); + if (!coupon) { + throw new NotFoundException(CouponMessage.NOT_FOUND); + } + return coupon; + } + + async findByCode(code: string, restId: string): Promise { + const coupon = await this.couponRepository.findOne({ code, restaurant: { id: restId } }); + if (!coupon) { + throw new NotFoundException(CouponMessage.NOT_FOUND); + } + return coupon; + } + + async update(id: string, dto: UpdateCouponDto): Promise { + const coupon = await this.couponRepository.findOne({ id }); + if (!coupon) { + throw new NotFoundException(CouponMessage.NOT_FOUND); + } + + // Check if code is being changed and if it already exists + if (dto.code && dto.code !== coupon.code) { + const existingCoupon = await this.couponRepository.findOne({ code: dto.code }); + if (existingCoupon) { + throw new BadRequestException(CouponMessage.CODE_ALREADY_EXISTS); + } + } + + // Validate dates + const startDate = dto.startDate ? new Date(dto.startDate) : coupon.startDate; + const endDate = dto.endDate ? new Date(dto.endDate) : coupon.endDate; + if (startDate && endDate && endDate <= startDate) { + throw new BadRequestException(CouponMessage.END_DATE_MUST_BE_AFTER_START_DATE); + } + + // Validate percentage coupon + if (dto.type === CouponType.PERCENTAGE || coupon.type === CouponType.PERCENTAGE) { + const value = dto.value ?? coupon.value; + if (value < 0 || value > 100) { + throw new BadRequestException(CouponMessage.PERCENTAGE_MUST_BE_BETWEEN_0_AND_100); + } + } + + // Update fields + if (dto.code) coupon.code = dto.code; + if (dto.name) coupon.name = dto.name; + if (dto.description !== undefined) coupon.description = dto.description; + if (dto.type) coupon.type = dto.type; + if (dto.value !== undefined) coupon.value = dto.value; + if (dto.maxDiscount !== undefined) coupon.maxDiscount = dto.maxDiscount; + if (dto.minOrderAmount !== undefined) coupon.minOrderAmount = dto.minOrderAmount; + if (dto.maxUses !== undefined) coupon.maxUses = dto.maxUses; + if (dto.maxUsesPerUser !== undefined) coupon.maxUsesPerUser = dto.maxUsesPerUser; + if (dto.startDate !== undefined) coupon.startDate = dto.startDate ? new Date(dto.startDate) : undefined; + if (dto.endDate !== undefined) coupon.endDate = dto.endDate ? new Date(dto.endDate) : undefined; + if (dto.isActive !== undefined) coupon.isActive = dto.isActive; + if (dto.foodCategories !== undefined) coupon.foodCategories = dto.foodCategories; + if (dto.foods !== undefined) coupon.foods = dto.foods; + if (dto.userPhone !== undefined) coupon.userPhone = dto.userPhone; + + await this.em.persistAndFlush(coupon); + return coupon; + } + + async remove(id: string) { + const coupon = await this.couponRepository.findOne({ id }); + if (!coupon) { + throw new NotFoundException(CouponMessage.NOT_FOUND); + } + coupon.deletedAt = new Date(); + await this.em.persistAndFlush(coupon); + } + + /** + * Validate coupon + */ + async validateCoupon( + code: string, + restId: string, + orderAmount: number, + userPhone: string, + ): Promise<{ + valid: boolean; + coupon?: Coupon; + message?: string; + }> { + const coupon = await this.couponRepository.findOne( + { code, restaurant: { id: restId } }, + { populate: ['restaurant'] }, + ); + + if (!coupon) { + return { + valid: false, + message: CouponMessage.NOT_FOUND, + }; + } + + if (coupon.userPhone) { + if (userPhone !== coupon.userPhone) { + return { + valid: false, + message: CouponMessage.COUPON_RESTRICTED_TO_USER, + }; + } + } + // Check if coupon is active + if (!coupon.isActive) { + return { + valid: false, + message: CouponMessage.COUPON_INACTIVE, + }; + } + + // Check date validity + const now = new Date(); + if (coupon.startDate && now < coupon.startDate) { + return { + valid: false, + message: CouponMessage.COUPON_NOT_STARTED, + }; + } + + if (coupon.endDate && now > coupon.endDate) { + return { + valid: false, + message: CouponMessage.COUPON_EXPIRED, + }; + } + + // Check max uses + if (coupon.maxUses && coupon.usedCount >= coupon.maxUses) { + return { + valid: false, + message: CouponMessage.COUPON_MAX_USES_REACHED, + }; + } + + // Check minimum order amount + if (coupon.minOrderAmount && orderAmount < coupon.minOrderAmount) { + return { + valid: false, + message: CouponMessage.MIN_ORDER_AMOUNT_NOT_MET, + }; + } + + return { + valid: true, + coupon, + }; + } + + /** + * Increment coupon usage count + */ + async incrementUsage(id: string): Promise { + const coupon = await this.couponRepository.findOne({ id }); + if (coupon) { + coupon.usedCount += 1; + await this.em.persistAndFlush(coupon); + } + } + + generateShortCode(restaurantSlug: string, length = 5) { + const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + const bytes = randomBytes(length); + let result = ''; + + for (let i = 0; i < bytes.length; i++) { + result += chars[bytes[i] % chars.length]; + } + const prefix = restaurantSlug.slice(0, 2).toUpperCase(); + return prefix + '-' + result; + } + + async generateCouponCode(restId: string): Promise<{ code: string }> { + const restaurant = await this.restRepository.findOne({ id: restId }); + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + const code = this.generateShortCode(restaurant.slug); + const existing = await this.couponRepository.findOne({ code, restaurant: { id: restId } }); + + if (existing) return this.generateCouponCode(restId); + return { code }; + } +} diff --git a/src/modules/coupons/repositories/coupon.repository.ts b/src/modules/coupons/repositories/coupon.repository.ts new file mode 100644 index 0000000..221b3b1 --- /dev/null +++ b/src/modules/coupons/repositories/coupon.repository.ts @@ -0,0 +1,66 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { FilterQuery } from '@mikro-orm/core'; +import { Coupon } from '../entities/coupon.entity'; +import { CouponType } from '../interface/coupon'; +import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; + +type FindCouponsOpts = { + page?: number; + limit?: number; + search?: string; + orderBy?: string; + order?: 'asc' | 'desc'; + type?: CouponType; + isActive?: boolean; +}; + +@Injectable() +export class CouponRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Coupon); + } + + /** + * Find coupons with pagination and optional filters. + * Supports: search (code/name), type, isActive, ordering. + */ + async findAllPaginated(restId: string, opts: FindCouponsOpts = {}): Promise> { + const { page = 1, limit = 10, search, orderBy = 'createdAt', order = 'desc', type, isActive } = opts; + + const offset = (page - 1) * limit; + + const where: FilterQuery = { restaurant: { id: restId } }; + + if (typeof isActive === 'boolean') { + where.isActive = isActive; + } + + if (type) { + where.type = type; + } + + if (search) { + const pattern = `%${search}%`; + where.$or = [{ code: { $ilike: pattern } }, { name: { $ilike: pattern } }]; + } + + const [data, total] = await this.findAndCount(where, { + limit, + offset, + orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' }, + }); + + const totalPages = Math.ceil(total / limit); + + return { + data, + meta: { + total, + page, + limit, + totalPages, + }, + }; + } +} diff --git a/src/modules/delivery/controllers/delivery.controller.ts b/src/modules/delivery/controllers/delivery.controller.ts new file mode 100644 index 0000000..c2ece7c --- /dev/null +++ b/src/modules/delivery/controllers/delivery.controller.ts @@ -0,0 +1,88 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards } from '@nestjs/common'; +import { + ApiTags, + ApiOperation, + ApiCreatedResponse, + ApiOkResponse, + ApiNotFoundResponse, + ApiParam, + ApiBody, + ApiBearerAuth, + ApiHeader, +} from '@nestjs/swagger'; +import { DeliveryService } from '../providers/delivery.service'; +import { CreateDeliveryDto } from '../dto/create-delivery.dto'; +import { UpdateDeliveryDto } from '../dto/update-delivery.dto'; +import { RestId } from 'src/common/decorators/rest-id.decorator'; +import { AuthGuard } from 'src/modules/auth/guards/auth.guard'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { Delivery } from '../entities/delivery.entity'; +import { API_HEADER_SLUG } from 'src/common/constants'; +import { Permission } from 'src/common/enums/permission.enum'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; + +@ApiTags('Delivery') +@Controller() +export class DeliveryController { + constructor(private readonly deliveryService: DeliveryService) {} + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Get('public/delivery-methods/restaurant') + @ApiOperation({ summary: 'Get restaurant delivery methods' }) + @ApiHeader(API_HEADER_SLUG) + findAllDeliveryMethods(@RestId() restId: string) { + return this.deliveryService.findAllForRestaurantId(restId); + } + + /*** Admin ***/ + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_DELIVERY) + @Post('admin/delivery-methods/restaurant') + @ApiOperation({ summary: 'Create a delivery method for a restaurant' }) + @ApiBody({ type: CreateDeliveryDto }) + create(@Body() createDto: CreateDeliveryDto, @RestId() restId: string) { + return this.deliveryService.create(restId, createDto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_DELIVERY) + @Get('admin/delivery-methods/restaurant') + @ApiOperation({ summary: 'Get the restaurant delivery methods' }) + findRestaurantDeliveryMethods(@RestId() restId: string) { + return this.deliveryService.findAllForRestaurantId(restId); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_DELIVERY) + @Get('admin/delivery-methods/restaurant/:deliveryId') + @ApiOperation({ summary: 'Get a restaurant delivery method by delivery ID' }) + @ApiParam({ name: 'deliveryId', description: 'Delivery method ID' }) + findOne(@Param('deliveryId') deliveryId: string, @RestId() restId: string) { + return this.deliveryService.findOne(restId, deliveryId); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_DELIVERY) + @Patch('admin/delivery-methods/restaurant/:deliveryId') + @ApiOperation({ summary: 'Update a restaurant delivery method' }) + @ApiParam({ name: 'deliveryId', description: 'Delivery method ID' }) + @ApiBody({ type: UpdateDeliveryDto }) + update(@Param('deliveryId') deliveryId: string, @Body() updateDto: UpdateDeliveryDto, @RestId() restId: string) { + return this.deliveryService.update(restId, deliveryId, updateDto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_DELIVERY) + @Delete('admin/delivery-methods/restaurant/:deliveryId') + @ApiOperation({ summary: 'Delete a restaurant delivery method' }) + @ApiParam({ name: 'deliveryId', description: 'Delivery method ID' }) + remove(@Param('deliveryId') deliveryId: string, @RestId() restId: string) { + return this.deliveryService.remove(restId, deliveryId); + } +} diff --git a/src/modules/delivery/delivery.module.ts b/src/modules/delivery/delivery.module.ts new file mode 100644 index 0000000..bdf933a --- /dev/null +++ b/src/modules/delivery/delivery.module.ts @@ -0,0 +1,16 @@ +import { Module } from '@nestjs/common'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { JwtModule } from '@nestjs/jwt'; +import { DeliveryController } from './controllers/delivery.controller'; +import { DeliveryService } from './providers/delivery.service'; +import { RestaurantsModule } from '../restaurants/restaurants.module'; +import { Delivery } from './entities/delivery.entity'; +import { DeliveryRepository } from './repositories/delivery.repository'; + +@Module({ + controllers: [DeliveryController], + providers: [DeliveryService, DeliveryRepository], + exports: [DeliveryService, DeliveryRepository], + imports: [MikroOrmModule.forFeature([Delivery]), JwtModule, RestaurantsModule], +}) +export class DeliveryModule {} diff --git a/src/modules/delivery/dto/create-delivery.dto.ts b/src/modules/delivery/dto/create-delivery.dto.ts new file mode 100644 index 0000000..cabdb1b --- /dev/null +++ b/src/modules/delivery/dto/create-delivery.dto.ts @@ -0,0 +1,60 @@ +import { IsNumber, IsBoolean, IsOptional, IsString, Min, IsEnum } from 'class-validator'; +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; +import { DeliveryFeeTypeEnum, DeliveryMethodEnum } from '../interface/delivery'; + +export class CreateDeliveryDto { + @ApiProperty({ example: 'dineIn', description: 'Delivery method name', enum: DeliveryMethodEnum }) + @IsEnum(DeliveryMethodEnum) + method!: DeliveryMethodEnum; + + @ApiProperty({ example: 5000, description: 'Delivery fee' }) + @IsNumber() + @Min(0) + @Type(() => Number) + deliveryFee!: number; + + @ApiProperty({ example: 100000, description: 'Minimum order price for free delivery' }) + @IsNumber() + @Min(0) + @Type(() => Number) + minOrderPrice!: number; + + @ApiPropertyOptional({ example: 'توضیحات روش ارسال', description: 'Delivery method description' }) + @IsOptional() + @IsString() + description?: string; + + @ApiPropertyOptional({ example: true, description: 'Is this delivery method enabled?' }) + @IsOptional() + @IsBoolean() + @Type(() => Boolean) + enabled?: boolean; + + @ApiPropertyOptional({ example: 0, description: 'Display order for sorting delivery methods' }) + @IsOptional() + @IsNumber() + @Type(() => Number) + order?: number; + + @ApiPropertyOptional({ example: 0, description: 'Kilometer number' }) + @IsOptional() + @IsNumber() + @Type(() => Number) + distanceBasedMinCost?: number; + + @ApiPropertyOptional({ example: 0, description: 'Delivery fee per kilometer' }) + @IsOptional() + @IsNumber() + @Type(() => Number) + perKilometerFee?: number; + + @ApiPropertyOptional({ + example: DeliveryFeeTypeEnum.FIXED, + description: 'Delivery fee type', + enum: DeliveryFeeTypeEnum, + }) + @IsOptional() + @IsEnum(DeliveryFeeTypeEnum) + deliveryFeeType!: DeliveryFeeTypeEnum; +} diff --git a/src/modules/delivery/dto/update-delivery.dto.ts b/src/modules/delivery/dto/update-delivery.dto.ts new file mode 100644 index 0000000..90c5b6a --- /dev/null +++ b/src/modules/delivery/dto/update-delivery.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateDeliveryDto } from './create-delivery.dto'; + +export class UpdateDeliveryDto extends PartialType(CreateDeliveryDto) {} diff --git a/src/modules/delivery/entities/delivery.entity.ts b/src/modules/delivery/entities/delivery.entity.ts new file mode 100644 index 0000000..c96e8b9 --- /dev/null +++ b/src/modules/delivery/entities/delivery.entity.ts @@ -0,0 +1,37 @@ +import { Entity, Property, Enum, ManyToOne } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { DeliveryFeeTypeEnum, DeliveryMethodEnum } from '../interface/delivery'; + +@Entity({ tableName: 'deliveries' }) +export class Delivery extends BaseEntity { + @Enum(() => DeliveryMethodEnum) + method!: DeliveryMethodEnum; + + @ManyToOne(() => Restaurant) + restaurant!: Restaurant; + + @Property({ type: 'number', default: 0 }) + deliveryFee: number = 0; + + @Enum(() => DeliveryFeeTypeEnum) + deliveryFeeType: DeliveryFeeTypeEnum = DeliveryFeeTypeEnum.FIXED; + + @Property({ type: 'number', default: 0 }) + perKilometerFee: number | null = null; + + @Property({ type: 'number', default: 0 }) + distanceBasedMinCost: number | null = null; + + @Property({ type: 'number', default: 0 }) + minOrderPrice: number = 0; + + @Property({ nullable: true }) + description?: string; + + @Property({ default: true }) + enabled: boolean = true; + + @Property({ type: 'integer', default: 0 }) + order: number = 0; +} diff --git a/src/modules/delivery/interface/delivery.ts b/src/modules/delivery/interface/delivery.ts new file mode 100644 index 0000000..c8b756d --- /dev/null +++ b/src/modules/delivery/interface/delivery.ts @@ -0,0 +1,11 @@ +export enum DeliveryMethodEnum { + DineIn = 'dineIn', + CustomerPickup = 'customerPickup', + DeliveryCar = 'deliveryCar', + DeliveryCourier = 'deliveryCourier', +} + +export enum DeliveryFeeTypeEnum { + FIXED = 'fixed', + DISTANCE_BASED = 'distanceBased', +} diff --git a/src/modules/delivery/providers/delivery.service.ts b/src/modules/delivery/providers/delivery.service.ts new file mode 100644 index 0000000..b9b266c --- /dev/null +++ b/src/modules/delivery/providers/delivery.service.ts @@ -0,0 +1,115 @@ +import { Injectable, NotFoundException, ConflictException } from '@nestjs/common'; +import { EntityManager, RequiredEntityData } from '@mikro-orm/postgresql'; +import { Delivery } from '../entities/delivery.entity'; +import { DeliveryRepository } from '../repositories/delivery.repository'; +import { CreateDeliveryDto } from '../dto/create-delivery.dto'; +import { UpdateDeliveryDto } from '../dto/update-delivery.dto'; +import { RestRepository } from '../../restaurants/repositories/rest.repository'; +import { DeliveryMethodEnum } from '../interface/delivery'; +import { DeliveryMessage } from 'src/common/enums/message.enum'; + +@Injectable() +export class DeliveryService { + constructor( + private readonly deliveryRepository: DeliveryRepository, + private readonly restRepository: RestRepository, + private readonly em: EntityManager, + ) {} + + async create(restId: string, createDto: CreateDeliveryDto): Promise { + const restaurant = await this.restRepository.findOne({ id: restId }); + if (!restaurant) { + throw new NotFoundException(DeliveryMessage.RESTAURANT_NOT_FOUND); + } + + // Check if the delivery method with the same name already exists for this restaurant + const existing = await this.deliveryRepository.findOne({ + restaurant: { id: restId }, + method: createDto.method, + }); + + if (existing) { + throw new ConflictException('این روش ارسال قبلاً برای این رستوران ثبت شده است.'); + } + + const data: RequiredEntityData = { + restaurant, + method: createDto.method, + deliveryFee: createDto.deliveryFee, + minOrderPrice: createDto.minOrderPrice, + description: createDto.description, + enabled: createDto.enabled ?? true, + order: createDto.order ?? 0, + deliveryFeeType: createDto.deliveryFeeType, + perKilometerFee: createDto.perKilometerFee ?? null, + distanceBasedMinCost: createDto.distanceBasedMinCost ?? null, + }; + + const delivery = this.deliveryRepository.create(data); + await this.em.persistAndFlush(delivery); + return delivery; + } + + async findAllForRestaurantId(restId: string): Promise { + return this.deliveryRepository.find({ restaurant: { id: restId } }, { orderBy: { order: 'asc' } }); + } + + async findOne(restId: string, deliveryId: string): Promise { + const delivery = await this.deliveryRepository.findOne({ + id: deliveryId, + restaurant: { id: restId }, + }); + + if (!delivery) { + throw new NotFoundException(DeliveryMessage.DELIVERY_METHOD_NOT_FOUND); + } + + return delivery; + } + + async update(restId: string, deliveryId: string, updateDto: UpdateDeliveryDto): Promise { + const delivery = await this.deliveryRepository.findOne({ + restaurant: { id: restId }, + id: deliveryId, + }); + + if (!delivery) { + throw new NotFoundException(DeliveryMessage.DELIVERY_METHOD_NOT_FOUND); + } + + // If method is being updated, check for conflicts + if (updateDto.method !== undefined && updateDto.method !== delivery.method) { + const existing = await this.deliveryRepository.findOne({ + restaurant: { id: restId }, + method: updateDto.method, + id: { $ne: deliveryId }, + }); + + if (existing) { + throw new ConflictException('این روش ارسال قبلاً برای این رستوران ثبت شده است.'); + } + } + + this.em.assign(delivery, updateDto); + await this.em.persistAndFlush(delivery); + + return delivery; + } + + async remove(restId: string, deliveryId: string): Promise { + const delivery = await this.deliveryRepository.findOne({ + restaurant: { id: restId }, + id: deliveryId, + }); + + if (!delivery) { + throw new NotFoundException(DeliveryMessage.DELIVERY_METHOD_NOT_FOUND); + } + + await this.em.removeAndFlush(delivery); + } + + findAll(): DeliveryMethodEnum[] { + return Object.values(DeliveryMethodEnum); + } +} diff --git a/src/modules/delivery/repositories/delivery.repository.ts b/src/modules/delivery/repositories/delivery.repository.ts new file mode 100644 index 0000000..84f205e --- /dev/null +++ b/src/modules/delivery/repositories/delivery.repository.ts @@ -0,0 +1,10 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { Delivery } from '../entities/delivery.entity'; + +@Injectable() +export class DeliveryRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Delivery); + } +} diff --git a/src/modules/foods/controllers/category.controller.ts b/src/modules/foods/controllers/category.controller.ts new file mode 100644 index 0000000..9360e58 --- /dev/null +++ b/src/modules/foods/controllers/category.controller.ts @@ -0,0 +1,89 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; +import { CategoryService } from '../providers/category.service'; +import { CreateCategoryDto } from '../dto/create-category.dto'; +import { UpdateCategoryDto } from '../dto/update-category.dto'; +import { + ApiTags, + ApiOperation, + ApiCreatedResponse, + ApiOkResponse, + ApiNotFoundResponse, + ApiParam, + ApiBody, + ApiBearerAuth, + ApiHeader, +} from '@nestjs/swagger'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { UseGuards } from '@nestjs/common'; +import { RestId } from 'src/common/decorators'; +import { Permission } from 'src/common/enums/permission.enum'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { API_HEADER_SLUG } from 'src/common/constants'; + +@ApiTags('category') +@Controller() +export class CategoryController { + constructor(private readonly categoryService: CategoryService) { } + + @Get('public/categories/restaurant/:slug') + @ApiOperation({ summary: 'Get all categories by restaurant slug' }) + @ApiHeader(API_HEADER_SLUG) + @ApiParam({ name: 'slug', required: true, description: 'Restaurant Slug' }) + @ApiOkResponse({ description: 'List of all categories for the restaurant' }) + findAllByRestaurant(@Param('slug') slug: string) { + return this.categoryService.findAllByRestaurant(slug); + } + + /*** Admin ***/ + + @ApiOperation({ summary: 'Create category' }) + @ApiBody({ type: CreateCategoryDto }) + @Permissions(Permission.MANAGE_CATEGORIES) + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Post('admin/categories') + create(@Body() dto: CreateCategoryDto, @RestId() restId: string) { + return this.categoryService.create(restId, dto); + } + @Permissions(Permission.MANAGE_CATEGORIES) + @ApiOperation({ summary: 'my restaurant categories' }) + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Get('admin/categories') + findAll(@RestId() restId: string) { + return this.categoryService.findAllByRestaurantId(restId); + } + + @Permissions(Permission.MANAGE_CATEGORIES) + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Get('admin/categories/:id') + @ApiOperation({ summary: 'Get category' }) + @ApiParam({ name: 'id', required: true, type: String }) + findOne(@Param('id') id: string, @RestId() restId: string) { + return this.categoryService.findOne(restId, id); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_CATEGORIES) + @Patch('admin/categories/:id') + @ApiOperation({ summary: 'Update category' }) + @ApiParam({ name: 'id' }) + @ApiBody({ type: UpdateCategoryDto }) + update(@Param('id') id: string, @Body() dto: UpdateCategoryDto, @RestId() restId: string) { + return this.categoryService.update(restId, id, dto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_CATEGORIES) + @Delete('admin/categories/:id') + @ApiOperation({ summary: 'Delete category' }) + @ApiParam({ name: 'id' }) + @ApiOkResponse({ description: 'Deleted' }) + remove(@Param('id') id: string, @RestId() restId: string) { + return this.categoryService.remove(restId, id); + } + +} diff --git a/src/modules/foods/controllers/food.controller.ts b/src/modules/foods/controllers/food.controller.ts new file mode 100644 index 0000000..097bd7a --- /dev/null +++ b/src/modules/foods/controllers/food.controller.ts @@ -0,0 +1,123 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete, Query, UseGuards } from '@nestjs/common'; +import { FoodService } from '../providers/food.service'; +import { CreateFoodDto } from '../dto/create-food.dto'; +import { UpdateFoodDto } from '../dto/update-food.dto'; +import { FindFoodsDto } from '../dto/find-foods.dto'; +import { + ApiTags, + ApiOperation, + ApiQuery, + ApiBody, + ApiParam, + ApiBearerAuth, + ApiHeader, +} from '@nestjs/swagger'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { RestId, UserId } from 'src/common/decorators'; +import { AuthGuard } from 'src/modules/auth/guards/auth.guard'; +import { OptionalAuthGuard } from 'src/modules/auth/guards/optinalAuth.guard'; +import { API_HEADER_SLUG } from 'src/common/constants'; +import { Permission } from 'src/common/enums/permission.enum'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; + +@ApiTags('foods') +@Controller() +export class FoodController { + constructor(private readonly foodsService: FoodService) { } + + @Get('public/foods/restaurant/:slug') + @ApiOperation({ summary: 'Get all foods by restaurant slug' }) + @ApiHeader(API_HEADER_SLUG) + @ApiParam({ name: 'slug', required: true, description: 'Restaurant Slug' }) + findAllByRestaurant(@Param('slug') slug: string) { + return this.foodsService.findByWeekDateAndMealType(slug); + } + + @Get('public/foods/:foodId') + @UseGuards(OptionalAuthGuard) + @ApiHeader(API_HEADER_SLUG) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get a food by id' }) + @ApiParam({ name: 'foodId', required: true }) + findPublicFoodById(@Param('foodId') foodId: string, @UserId() userId?: string): Promise { + const a = this.foodsService.findPublicById(foodId, userId); + return a; + } + + @Post('public/foods/favorite/:foodId') + @UseGuards(AuthGuard) + @ApiHeader(API_HEADER_SLUG) + @ApiBearerAuth() + @ApiOperation({ summary: 'toggle a food as favorite' }) + @ApiParam({ name: 'foodId', required: true }) + setAsFavorute(@Param('foodId') foodId: string, @UserId() userId: string) { + return this.foodsService.toggleFavorite(userId, foodId); + } + + @Get('public/foods/favorite') + @UseGuards(AuthGuard) + @ApiHeader(API_HEADER_SLUG) + @ApiBearerAuth() + @ApiOperation({ summary: 'get my favorites' }) + getMyFavorites(@UserId() userId: string, @RestId() restId: string) { + return this.foodsService.getMyFavorites(userId, restId); + } + + /* ---------------------------------- Admin ---------------------------------- */ + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_FOODS) + @Post('admin/foods') + @ApiOperation({ summary: 'Create a new food' }) + @ApiBody({ type: CreateFoodDto }) + create(@Body() createFoodDto: CreateFoodDto, @RestId() restId: string) { + return this.foodsService.create(restId, createFoodDto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_FOODS) + @Get('admin/foods') + @ApiOperation({ summary: 'Get a paginated list of foods' }) + @ApiQuery({ name: 'page', required: false, type: Number }) + @ApiQuery({ name: 'limit', required: false, type: Number }) + @ApiQuery({ name: 'search', required: false, type: String }) + @ApiQuery({ name: 'orderBy', required: false, type: String }) + @ApiQuery({ name: 'order', required: false, enum: ['asc', 'desc'] }) + @ApiQuery({ name: 'categoryId', required: false, type: String }) + @ApiQuery({ name: 'isActive', required: false, type: Boolean }) + async findAll(@Query() dto: FindFoodsDto, @RestId() restId: string) { + const result = await this.foodsService.findAll(restId, dto); + return result; + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_FOODS) + @Get('admin/foods/:id') + @ApiOperation({ summary: 'Get a food by id' }) + @ApiParam({ name: 'id', required: true }) + findById(@Param('id') id: string, @RestId() restId: string) { + return this.foodsService.findAdminById(restId, id); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_FOODS) + @Patch('admin/foods/:id') + @ApiOperation({ summary: 'Update a food' }) + @ApiParam({ name: 'id', required: true }) + @ApiBody({ type: UpdateFoodDto }) + update(@Param('id') id: string, @Body() updateFoodDto: UpdateFoodDto, @RestId() restId: string) { + return this.foodsService.update(restId, id, updateFoodDto); + } + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_FOODS) + @Delete('admin/foods/:id') + @ApiOperation({ summary: 'Delete (soft) a food' }) + @ApiParam({ name: 'id', required: true }) + remove(@Param('id') id: string, @RestId() restId: string) { + return this.foodsService.remove(restId, id); + } +} diff --git a/src/modules/foods/crone/food.crone.ts b/src/modules/foods/crone/food.crone.ts new file mode 100644 index 0000000..5749702 --- /dev/null +++ b/src/modules/foods/crone/food.crone.ts @@ -0,0 +1,45 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { Cron } from '@nestjs/schedule'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { Inventory } from '../../inventory/entities/inventory.entity'; + +@Injectable() +export class FoodStockCrone { + private readonly logger = new Logger(FoodStockCrone.name); + + constructor(private readonly em: EntityManager) {} + + // run every day at 00:03 + @Cron('3 0 * * *', { + name: 'resetAvailableStock', + timeZone: 'UTC', + }) + async handleCron() { + try { + this.logger.debug('Starting daily inventory reset (availableStock = totalStock)'); + + const inventories = await this.em.find(Inventory, {}); + if (!inventories || inventories.length === 0) { + this.logger.debug('No inventory records found to reset'); + return; + } + + this.logger.log(`Resetting available stock for ${inventories.length} inventory records`); + + await this.em.transactional(async em => { + for (const inv of inventories) { + // reload inside transaction to avoid concurrency issues + const record = await em.findOne(Inventory, { id: inv.id }); + if (!record) continue; + record.availableStock = record.totalStock; + em.persist(record); + } + await em.flush(); + }); + + this.logger.log('Daily inventory reset completed'); + } catch (err) { + this.logger.error(`FoodStockCrone failed: ${err?.message}`, err); + } + } +} diff --git a/src/modules/foods/dto/create-category.dto.ts b/src/modules/foods/dto/create-category.dto.ts new file mode 100644 index 0000000..8646850 --- /dev/null +++ b/src/modules/foods/dto/create-category.dto.ts @@ -0,0 +1,27 @@ +import { IsString, IsOptional, IsBoolean, IsInt, Min } from 'class-validator'; +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; + +export class CreateCategoryDto { + @IsString() + @ApiPropertyOptional({ example: 'ایرانی' }) + title!: string; + + @IsOptional() + @IsBoolean() + @Type(() => Boolean) + @ApiPropertyOptional({ example: true }) + isActive?: boolean; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ example: 'https://cdn.example.com/avatar.png' }) + avatarUrl?: string; + + @IsOptional() + @IsInt() + @Min(0) + @Type(() => Number) + @ApiPropertyOptional({ example: 1 }) + order?: number; +} diff --git a/src/modules/foods/dto/create-food.dto.ts b/src/modules/foods/dto/create-food.dto.ts new file mode 100644 index 0000000..988ee06 --- /dev/null +++ b/src/modules/foods/dto/create-food.dto.ts @@ -0,0 +1,122 @@ +import { Type } from 'class-transformer'; +import { + ArrayUnique, + IsArray, + IsBoolean, + IsEnum, + IsInt, + IsNotEmpty, + IsNumber, + IsOptional, + IsString, + Max, + Min, +} from 'class-validator'; +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; +import { MealType } from '../interface/food.interface'; + +export class CreateFoodDto { + @IsNotEmpty() + @IsString() + @ApiProperty() + categoryId: string; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ example: 'قرمه سبزی' }) + title?: string; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ example: 'توضیحات غذا' }) + desc?: string; + + @IsOptional() + @IsArray() + @IsString({ each: true }) + @ApiPropertyOptional({ type: [String] }) + content?: string[]; + + @IsOptional() + @IsArray() + @ArrayUnique() + @IsInt({ each: true }) + @Min(0, { each: true }) + @Max(6, { each: true }) + @Type(() => Number) + @ApiPropertyOptional({ type: [Number], example: [0, 1, 2, 3, 4, 5, 6] }) + weekDays?: number[]; + + @IsOptional() + @IsArray() + @ArrayUnique() + @IsEnum(MealType, { each: true }) + @ApiPropertyOptional({ enum: MealType, isArray: true }) + mealTypes?: MealType[]; + + @IsOptional() + @IsNumber() + @Min(0) + @Type(() => Number) + @ApiPropertyOptional({ example: 120000 }) + price?: number; + + @IsOptional() + @IsInt() + @Min(0) + @Type(() => Number) + @ApiPropertyOptional({ example: 15 }) + prepareTime?: number; + + @IsOptional() + @IsBoolean() + @ApiPropertyOptional({ example: true }) + @Type(() => Boolean) + isActive?: boolean; + + @IsOptional() + @IsArray() + @IsString({ each: true }) + @ApiPropertyOptional({ type: [String] }) + images?: string[]; + + @IsOptional() + @IsBoolean() + @ApiPropertyOptional({ example: false }) + @Type(() => Boolean) + inPlaceServe?: boolean; + + @IsOptional() + @IsBoolean() + @ApiPropertyOptional({ example: false }) + @Type(() => Boolean) + pickupServe?: boolean; + + @IsOptional() + @IsNumber() + @Min(0) + @Type(() => Number) + @ApiPropertyOptional({ example: 0 }) + discount?: number; + + @IsOptional() + @IsNumber() + @Min(0) + @Type(() => Number) + @ApiProperty({ example: 50 }) + dailyStock: number; + + @IsOptional() + @IsBoolean() + @ApiPropertyOptional({ example: false }) + @Type(() => Boolean) + isSpecialOffer?: boolean; + + @IsOptional() + @IsInt() + @Min(0) + @Type(() => Number) + @ApiPropertyOptional({ example: 1 }) + order?: number; + +} diff --git a/src/modules/foods/dto/find-foods.dto.ts b/src/modules/foods/dto/find-foods.dto.ts new file mode 100644 index 0000000..19cb94a --- /dev/null +++ b/src/modules/foods/dto/find-foods.dto.ts @@ -0,0 +1,43 @@ +import { IsOptional, IsNumber, IsString, IsIn, IsBoolean } from 'class-validator'; +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; + +export class FindFoodsDto { + @IsOptional() + @IsNumber() + @Type(() => Number) + @ApiPropertyOptional({ example: 1 }) + page?: number; + + @IsOptional() + @IsNumber() + @Type(() => Number) + @ApiPropertyOptional({ example: 10 }) + limit?: number; + + @IsOptional() + @IsString() + @ApiPropertyOptional() + search?: string; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ example: 'createdAt' }) + orderBy?: string; + + @IsOptional() + @IsIn(['asc', 'desc']) + @ApiPropertyOptional({ example: 'desc' }) + order?: 'asc' | 'desc'; + + @IsOptional() + @IsString() + @ApiPropertyOptional() + categoryId?: string; + + @IsOptional() + @IsBoolean() + @Type(() => Boolean) + @ApiPropertyOptional({ example: true }) + isActive?: boolean; +} diff --git a/src/modules/foods/dto/update-category.dto.ts b/src/modules/foods/dto/update-category.dto.ts new file mode 100644 index 0000000..d713b9b --- /dev/null +++ b/src/modules/foods/dto/update-category.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateCategoryDto } from './create-category.dto'; + +export class UpdateCategoryDto extends PartialType(CreateCategoryDto) {} diff --git a/src/modules/foods/dto/update-food.dto.ts b/src/modules/foods/dto/update-food.dto.ts new file mode 100644 index 0000000..f0cdb15 --- /dev/null +++ b/src/modules/foods/dto/update-food.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateFoodDto } from './create-food.dto'; + +export class UpdateFoodDto extends PartialType(CreateFoodDto) {} diff --git a/src/modules/foods/entities/category.entity.ts b/src/modules/foods/entities/category.entity.ts new file mode 100644 index 0000000..a2c679f --- /dev/null +++ b/src/modules/foods/entities/category.entity.ts @@ -0,0 +1,27 @@ +import { Entity, Index, Property, Collection, OneToMany, ManyToOne } from '@mikro-orm/core'; +import { Food } from './food.entity'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Restaurant } from 'src/modules/restaurants/entities/restaurant.entity'; + +@Entity({ tableName: 'categories' }) +@Index({ properties: ['restaurant', 'isActive'] }) +@Index({ properties: ['isActive'] }) +export class Category extends BaseEntity { + @Property() + title!: string; + + @OneToMany(() => Food, food => food.category) + foods = new Collection(this); + + @Property({ default: true }) + isActive: boolean = true; + + @ManyToOne(() => Restaurant) + restaurant!: Restaurant; + + @Property({ nullable: true }) + avatarUrl?: string; + + @Property({ type: 'int', nullable: true }) + order?: number; +} diff --git a/src/modules/foods/entities/favorite.entity.ts b/src/modules/foods/entities/favorite.entity.ts new file mode 100644 index 0000000..245e102 --- /dev/null +++ b/src/modules/foods/entities/favorite.entity.ts @@ -0,0 +1,14 @@ +import { Entity, ManyToOne, Unique } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { User } from '../../users/entities/user.entity'; +import { Food } from '../../foods/entities/food.entity'; + +@Entity({ tableName: 'favorites' }) +@Unique({ properties: ['user', 'food'] }) +export class Favorite extends BaseEntity { + @ManyToOne(() => User) + user: User; + + @ManyToOne(() => Food) + food: Food; +} diff --git a/src/modules/foods/entities/food.entity.ts b/src/modules/foods/entities/food.entity.ts new file mode 100644 index 0000000..14443ae --- /dev/null +++ b/src/modules/foods/entities/food.entity.ts @@ -0,0 +1,77 @@ +import { Cascade, Collection, Entity, Index, ManyToOne, OneToMany, Property, OneToOne } from '@mikro-orm/core'; +import { Category } from './category.entity'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Restaurant } from '../../../modules/restaurants/entities/restaurant.entity'; +import { Review } from 'src/modules/review/entities/review.entity'; +import { Inventory } from 'src/modules/inventory/entities/inventory.entity'; +import { MealType } from '../interface/food.interface'; +import { Favorite } from './favorite.entity'; + +@Entity({ tableName: 'foods' }) +@Index({ properties: ['restaurant', 'isActive'] }) +@Index({ properties: ['category', 'isActive'] }) +@Index({ properties: ['isActive'] }) +export class Food extends BaseEntity { + @ManyToOne(() => Restaurant) + restaurant: Restaurant; + + @ManyToOne(() => Category) + category: Category; + + @OneToMany(() => Review, review => review.food, { cascade: [Cascade.ALL], orphanRemoval: true }) + reviews = new Collection(this); + + @OneToOne(() => Inventory, { + mappedBy: 'food', + nullable: true, + }) + inventory?: Inventory; + + @OneToMany(() => Favorite, favorite => favorite.food) + favorites = new Collection(this); + + @Property({ nullable: true }) + title?: string; + + @Property({ type: 'text', nullable: true }) + desc?: string; + + @Property({ type: 'json', nullable: true }) + content?: string[]; + + @Property({ type: 'decimal', precision: 10, scale: 2, nullable: true }) + price?: number; + + @Property({ type: 'int', nullable: true }) + order?: number; + + @Property({ type: 'int', nullable: true }) + prepareTime?: number; // in minutes + + @Property({ type: 'jsonb', default: [] }) + weekDays: number[] = [0, 1, 2, 3, 4, 5, 6]; + + @Property({ type: 'jsonb', default: [] }) + mealTypes: MealType[] = []; + + @Property({ type: 'boolean', default: true }) + isActive: boolean = true; + + @Property({ type: 'json', nullable: true }) + images?: string[]; + + @Property({ type: 'boolean', default: false }) + inPlaceServe: boolean = false; + + @Property({ type: 'boolean', default: false }) + pickupServe: boolean = false; + + @Property({ type: 'float', default: null }) + score?: number | null = null; + + @Property({ type: 'float', default: 0 }) + discount: number = 0; + + @Property({ type: 'boolean', default: false }) + isSpecialOffer: boolean = false; +} diff --git a/src/modules/foods/food.module.ts b/src/modules/foods/food.module.ts new file mode 100644 index 0000000..68b0569 --- /dev/null +++ b/src/modules/foods/food.module.ts @@ -0,0 +1,30 @@ +import { Module } from '@nestjs/common'; +import { FoodService } from './providers/food.service'; +import { FoodStockCrone } from './crone/food.crone'; +import { FoodController } from './controllers/food.controller'; +import { CategoryController } from './controllers/category.controller'; +import { CategoryService } from './providers/category.service'; +import { FoodRepository } from './repositories/food.repository'; +import { CategoryRepository } from './repositories/category.repository'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { Category } from './entities/category.entity'; +import { Food } from './entities/food.entity'; +import { RestaurantsModule } from '../restaurants/restaurants.module'; +import { AuthModule } from '../auth/auth.module'; +import { JwtModule } from '@nestjs/jwt'; +import { UtilsModule } from '../utils/utils.module'; +import { Favorite } from './entities/favorite.entity'; + +@Module({ + imports: [ + MikroOrmModule.forFeature([Food, Category, Favorite]), + RestaurantsModule, + AuthModule, + JwtModule, + UtilsModule, + ], + controllers: [FoodController, CategoryController], + providers: [FoodService, CategoryService, FoodRepository, CategoryRepository, FoodStockCrone], + exports: [FoodRepository, CategoryRepository], +}) +export class FoodModule {} diff --git a/src/modules/foods/interface/food.interface.ts b/src/modules/foods/interface/food.interface.ts new file mode 100644 index 0000000..033e3ca --- /dev/null +++ b/src/modules/foods/interface/food.interface.ts @@ -0,0 +1,6 @@ +export enum MealType { + BREAKFAST = 'breakfast', + LUNCH = 'lunch', + DINNER = 'dinner', + SNACK = 'snack', +} diff --git a/src/modules/foods/providers/category.service.ts b/src/modules/foods/providers/category.service.ts new file mode 100644 index 0000000..2443825 --- /dev/null +++ b/src/modules/foods/providers/category.service.ts @@ -0,0 +1,81 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { CreateCategoryDto } from '../dto/create-category.dto'; +import { UpdateCategoryDto } from '../dto/update-category.dto'; +import { CategoryRepository } from '../repositories/category.repository'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { RequiredEntityData } from '@mikro-orm/core'; +import { Category } from '../entities/category.entity'; +import { CategoryMessage, RestMessage } from 'src/common/enums/message.enum'; +import { Restaurant } from 'src/modules/restaurants/entities/restaurant.entity'; + +@Injectable() +export class CategoryService { + constructor( + private readonly categoryRepository: CategoryRepository, + private readonly em: EntityManager, + ) { } + + async create(restId: string, dto: CreateCategoryDto): Promise { + const restaurant = await this.em.findOne(Restaurant, { id: restId }); + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + const data: RequiredEntityData = { + title: dto.title, + isActive: dto.isActive ?? true, + restaurant: restaurant, + avatarUrl: dto.avatarUrl, + }; + + const category = this.categoryRepository.create(data); + await this.em.persistAndFlush(category); + return category; + } + + async findAllByRestaurant(slug: string): Promise { + const restaurant = await this.em.findOne(Restaurant, { slug }); + if (!restaurant || !restaurant.id) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + return this.categoryRepository.find( + { restaurant: restaurant, isActive: true }, { orderBy: { order: 'ASC' } }); + } + + async findAllByRestaurantId(restId: string): Promise { + return this.categoryRepository.find( + { restaurant: { id: restId } }, + { orderBy: { order: 'asc' } }); + } + + async findOne(restId: string, id: string): Promise { + const cat = await this.categoryRepository.findOne({ id, restaurant: { id: restId } }, { populate: ['foods'] }); + if (!cat) throw new NotFoundException(CategoryMessage.NOT_FOUND); + + return { + id: cat.id, + title: cat.title, + isActive: cat.isActive, + restaurant: cat.restaurant, + avatarUrl: cat.avatarUrl, + createdAt: cat.createdAt, + updatedAt: cat.updatedAt, + foods: cat.foods.getItems().map(f => ({ id: f.id, title: f.title })), + } as unknown as Category; + } + + + async update(restId: string, id: string, dto: UpdateCategoryDto): Promise { + const cat = await this.categoryRepository.findOne({ id, restaurant: { id: restId } }); + if (!cat) throw new NotFoundException(CategoryMessage.NOT_FOUND); + this.em.assign(cat, dto); + await this.em.persistAndFlush(cat); + return cat; + } + + async remove(restId: string, id: string): Promise { + const cat = await this.categoryRepository.findOne({ id, restaurant: { id: restId } }); + if (!cat) throw new NotFoundException(CategoryMessage.NOT_FOUND); + cat.deletedAt = new Date(); + await this.em.persistAndFlush(cat); + } +} diff --git a/src/modules/foods/providers/food.service.ts b/src/modules/foods/providers/food.service.ts new file mode 100644 index 0000000..2972052 --- /dev/null +++ b/src/modules/foods/providers/food.service.ts @@ -0,0 +1,273 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { CreateFoodDto } from '../dto/create-food.dto'; +import { FindFoodsDto } from '../dto/find-foods.dto'; +import { FoodRepository } from '../repositories/food.repository'; +import { CategoryRepository } from '../repositories/category.repository'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { RequiredEntityData, FilterQuery } from '@mikro-orm/core'; +import { Food } from '../entities/food.entity'; +import { CategoryMessage, FoodMessage, RestMessage } from 'src/common/enums/message.enum'; +import { RestRepository } from 'src/modules/restaurants/repositories/rest.repository'; +import { CacheService } from '../../utils/cache.service'; +import { Favorite } from '../entities/favorite.entity'; +import { MealType } from '../interface/food.interface'; +import { Inventory } from 'src/modules/inventory/entities/inventory.entity'; + +@Injectable() +export class FoodService { + constructor( + private readonly foodRepository: FoodRepository, + private readonly categoryRepository: CategoryRepository, + private readonly restRepository: RestRepository, + private readonly em: EntityManager, + ) { } + + async create(restId: string, createFoodDto: CreateFoodDto) { + const { categoryId, dailyStock = 0, ...rest } = createFoodDto; + const restaurant = await this.restRepository.findOne({ id: restId }); + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + const category = await this.categoryRepository.findOne({ id: categoryId, restaurant: { id: restId } }); + if (!category) { + throw new NotFoundException(CategoryMessage.NOT_FOUND); + } + + const { food, inventory } = await this.em.transactional(async em => { + // prepare data with defaults for required fields so repository.create typing is satisfied + const data: RequiredEntityData = { + desc: rest.desc, + isActive: rest.isActive ?? true, + inPlaceServe: rest.inPlaceServe ?? false, + pickupServe: rest.pickupServe ?? false, + discount: rest.discount ?? 0, + isSpecialOffer: rest.isSpecialOffer ?? false, + order: rest.order ?? null, + // map single-title/content DTO to localized fields + title: rest.title, + content: rest.content, + // numeric/array fields + price: rest.price ?? 0, + prepareTime: rest.prepareTime ?? 0, + images: rest.images ?? undefined, + // new fields + weekDays: rest.weekDays ?? [0, 1, 2, 3, 4, 5, 6], + mealTypes: rest.mealTypes ?? [], + restaurant: restaurant, + category: category, + }; + + const food = em.create(Food, data); + const newInventoryRecord = em.create(Inventory, { + food: food, + availableStock: dailyStock, + totalStock: dailyStock, + }); + + await em.flush(); + return { food, inventory: newInventoryRecord }; + }); + + // Re-load created entities with the primary EM to ensure they're attached + const savedFood = food?.id + ? await this.foodRepository.findOne({ id: food.id }, { populate: ['category', 'restaurant'] }) + : null; + const savedInventory = inventory?.id ? await this.em.findOne(Inventory, { id: inventory.id }) : inventory; + + return { food: savedFood ?? food, inventory: savedInventory ?? inventory }; + } + + findAll(restId: string, dto: FindFoodsDto) { + return this.foodRepository.findAllPaginated(restId, dto); + } + + /** + * Public food detail (only active foods are visible). + */ + async findPublicById(foodId: string, userId?: string): Promise { + const food = await this.foodRepository.findOne({ id: foodId, isActive: true }, { populate: ['category', 'inventory'] }); + if (!food) throw new NotFoundException(FoodMessage.NOT_FOUND); + let isFavorite = false; + if (userId) { + isFavorite = (await this.em.count(Favorite, { user: { id: userId }, food: { id: foodId } })) > 0; + } + return { + ...food, + isFavorite, + }; + } + + /** + * Admin food detail (scoped to the authenticated restaurant). + */ + async findAdminById(restId: string, id: string): Promise { + const food = await this.foodRepository.findOne({ id, restaurant: { id: restId } }, { populate: ['category', 'inventory'] }); + + if (!food) throw new NotFoundException(FoodMessage.NOT_FOUND); + return food; + } + + /** + * Find active foods for a restaurant based on current week day and meal type in Iran timezone. + * @param slug - Restaurant slug identifier + * @returns Array of active foods matching current day and meal time + */ + async findByWeekDateAndMealType(slug: string): Promise { + const restaurant = await this.restRepository.findOne({ slug }); + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + + const { iranWeekDay, mealType } = this.getCurrentIranTimeContext(); + + const queryFilter: FilterQuery = { + restaurant: { slug }, + isActive: true, + weekDays: { $contains: iranWeekDay }, + ...(mealType ? { mealTypes: { $contains: mealType } } : {}), + } as unknown as FilterQuery; + + return this.foodRepository.find(queryFilter, { + populate: ['category'], + orderBy: { order: 'asc' } + }); + } + + /** + * Get current Iran timezone context (weekday and meal type). + * @returns Object containing Iran weekday (0-6, where 0=Saturday) and current meal type + */ + private getCurrentIranTimeContext(): { iranWeekDay: number; mealType: MealType | null } { + const nowInIran = new Date(new Date().toLocaleString('en-US', { timeZone: 'Asia/Tehran' })); + const weekDay = nowInIran.getDay(); // 0 = Sunday, 6 = Saturday + const currentHour = nowInIran.getHours(); + + // Convert to Iran weekday: Saturday=0, Sunday=1, ..., Friday=6 + // JavaScript: Sunday=0, Monday=1, ..., Saturday=6 + // Iran week: Saturday=0, Sunday=1, ..., Friday=6 + const iranWeekDay = (weekDay + 1) % 7; + + const mealType = this.getMealTypeByHour(currentHour); + + return { iranWeekDay, mealType }; + } + + /** + * Determine meal type based on current hour in Iran timezone. + * @param hour - Current hour (0-23) + * @returns Meal type or null if outside meal hours + */ + private getMealTypeByHour(hour: number): MealType | null { + const MEAL_TIME_RANGES = { + BREAKFAST: { start: 6, end: 11 }, + LUNCH: { start: 11, end: 15 }, + SNACK: { start: 15, end: 19 }, + DINNER: { start: 19, end: 24 }, + } as const; + + if (hour >= MEAL_TIME_RANGES.BREAKFAST.start && hour < MEAL_TIME_RANGES.BREAKFAST.end) { + return MealType.BREAKFAST; + } + if (hour >= MEAL_TIME_RANGES.LUNCH.start && hour < MEAL_TIME_RANGES.LUNCH.end) { + return MealType.LUNCH; + } + if (hour >= MEAL_TIME_RANGES.SNACK.start && hour < MEAL_TIME_RANGES.SNACK.end) { + return MealType.SNACK; + } + if (hour >= MEAL_TIME_RANGES.DINNER.start && hour < MEAL_TIME_RANGES.DINNER.end) { + return MealType.DINNER; + } + + return null; + } + + async update(restId: string, id: string, dto: Partial): Promise { + const { categoryId, dailyStock, ...rest } = dto; + const food = await this.foodRepository.findOne({ id, restaurant: { id: restId } }, { populate: ['restaurant'] }); + if (!food) { + throw new NotFoundException(FoodMessage.NOT_FOUND); + } + + // attach new categories if provided (adds, does not attempt to preserve/remove existing ones) + if (categoryId) { + const category = await this.categoryRepository.findOne({ id: categoryId, restaurant: { id: restId } }); + + if (!category) { + throw new NotFoundException(CategoryMessage.NOT_FOUND); + } + + this.em.assign(food, { category: category }); + } + + // assign other fields from DTO (excluding dailyStock handled below) + this.em.assign(food, rest); + + // Persist food and update/create related inventory atomically + await this.em.transactional(async em => { + await em.persistAndFlush(food); + + if (typeof dailyStock !== 'undefined') { + const inventoryRecord = await em.findOne(Inventory, { food: food }); + if (inventoryRecord) { + inventoryRecord.totalStock = dailyStock; + } else { + em.create(Inventory, { + food: food, + availableStock: dailyStock, + totalStock: dailyStock, + }); + } + } + + await em.flush(); + }); + + // Re-load the food to ensure populated relations and stable instance + const savedFood = await this.foodRepository.findOne({ id: food.id }, { populate: ['category', 'restaurant'] }); + + // Invalidate cache for the restaurant if present (optional) + // await this.invalidateRestaurantFoodsCache(savedFood?.restaurant?.slug); + + return savedFood ?? food; + } + + async remove(restId: string, id: string): Promise { + const food = await this.foodRepository.findOne({ id, restaurant: { id: restId } }, { populate: ['restaurant'] }); + if (!food) { + throw new NotFoundException(FoodMessage.NOT_FOUND); + } + + // const restaurantSlug = food.restaurant.slug; + food.deletedAt = new Date(); + await this.em.persistAndFlush(food); + + // Invalidate cache for the restaurant + // await this.invalidateRestaurantFoodsCache(restaurantSlug); + } + + + async toggleFavorite(userId: string, foodId: string) { + + const favorite = await this.em.findOne(Favorite, { user: userId, food: foodId }); + if (favorite) { + return this.em.removeAndFlush(favorite); + } + const newFavorite = this.em.create(Favorite, { + user: userId, + food: foodId, + }); + return this.em.persistAndFlush(newFavorite); + } + + + async getMyFavorites(userId: string, restId: string) { + return this.em.find(Favorite, { user: userId, food: { restaurant: { id: restId } } }, { populate: ['food'] }); + } + /** + * Invalidate cache for restaurant foods + */ + // private async invalidateRestaurantFoodsCache(slug: string): Promise { + // const cacheKey = `${this.FOODS_BY_RESTAURANT_CACHE_KEY_PREFIX}${slug}`; + // await this.cacheService.del(cacheKey); + // } +} diff --git a/src/modules/foods/repositories/category.repository.ts b/src/modules/foods/repositories/category.repository.ts new file mode 100644 index 0000000..b3028b3 --- /dev/null +++ b/src/modules/foods/repositories/category.repository.ts @@ -0,0 +1,10 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { Category } from '../entities/category.entity'; + +@Injectable() +export class CategoryRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Category); + } +} diff --git a/src/modules/foods/repositories/food.repository.ts b/src/modules/foods/repositories/food.repository.ts new file mode 100644 index 0000000..3957061 --- /dev/null +++ b/src/modules/foods/repositories/food.repository.ts @@ -0,0 +1,68 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { FilterQuery } from '@mikro-orm/core'; +import { Food } from '../entities/food.entity'; +import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; + +type FindFoodsOpts = { + page?: number; + limit?: number; + search?: string; + orderBy?: string; + order?: 'asc' | 'desc'; + categoryId?: string; + isActive?: boolean; +}; + +@Injectable() +export class FoodRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Food); + } + /** + * Find foods with pagination and optional filters. + * Supports: search (title/content), categoryId, isActive, ordering. + */ + async findAllPaginated(restId: string, opts: FindFoodsOpts = {}): Promise> { + const { page = 1, limit = 10, search, orderBy = 'order', order = 'asc', categoryId, isActive } = opts; + + const offset = (page - 1) * limit; + + const where: FilterQuery = { restaurant: { id: restId } }; + + if (typeof isActive === 'boolean') { + where.isActive = isActive; + } + + if (search) { + const pattern = `%${search}%`; + where.$or = [{ title: { $ilike: pattern } }, { desc: { $ilike: pattern } }]; + } + + if (categoryId) { + // filter by related category (Food has a single `category` relation) + Object.assign(where, { category: { id: categoryId } } as unknown as FilterQuery); + } + + const [data, total] = await this.findAndCount(where, { + limit, + offset, + orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' }, + populate: ['category','inventory'], + }); + + const totalPages = Math.ceil(total / limit); + + return { + data, + meta: { + total, + page, + limit, + totalPages, + }, + }; + + + } +} diff --git a/src/modules/icons/controllers/icons.controller.ts b/src/modules/icons/controllers/icons.controller.ts new file mode 100644 index 0000000..bdc0c7c --- /dev/null +++ b/src/modules/icons/controllers/icons.controller.ts @@ -0,0 +1,114 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; +import { IconService } from '../providers/icon.service'; +import { GroupService } from '../providers/group.service'; +import { CreateIconDto } from '../dto/create-icon.dto'; +import { UpdateIconDto } from '../dto/update-icon.dto'; +import { CreateGroupDto } from '../dto/create-group.dto'; +import { UpdateGroupDto } from '../dto/update-group.dto'; +import { ApiTags, ApiOperation, ApiParam, ApiBody, ApiBearerAuth } from '@nestjs/swagger'; +import { SuperAdminAuthGuard } from 'src/modules/auth/guards/superAdminAuth.guard'; +import { UseGuards } from '@nestjs/common'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; + +@ApiTags('icons') +@Controller() +export class IconsController { + constructor( + private readonly iconService: IconService, + private readonly groupService: GroupService, + ) {} + + @Get('admin/groups/icons') + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get all icons' }) + findAllPublicIcons() { + return this.groupService.findAllGroups(); + } + + /** + * Super Admin Endpoints + */ + @Post('super-admin/icons') + @UseGuards(SuperAdminAuthGuard) + @ApiOperation({ summary: 'Create icon' }) + @ApiBody({ type: CreateIconDto }) + createIcon(@Body() dto: CreateIconDto) { + return this.iconService.create(dto); + } + + @Get('super-admin/icons') + @UseGuards(SuperAdminAuthGuard) + @ApiOperation({ summary: 'Get all icons' }) + findAllIcons() { + return this.iconService.findAll(); + } + + @Get('super-admin/icons/:id') + @UseGuards(SuperAdminAuthGuard) + @ApiOperation({ summary: 'Get icon by id' }) + @ApiParam({ name: 'id', required: true, type: String }) + findOneIcon(@Param('id') id: string) { + return this.iconService.findOne(id); + } + + @Patch('super-admin/icons/:id') + @UseGuards(SuperAdminAuthGuard) + @ApiOperation({ summary: 'Update icon' }) + @ApiParam({ name: 'id' }) + @ApiBody({ type: UpdateIconDto }) + updateIcon(@Param('id') id: string, @Body() dto: UpdateIconDto) { + return this.iconService.update(id, dto); + } + + @Delete('super-admin/icons/:id') + @UseGuards(SuperAdminAuthGuard) + @ApiOperation({ summary: 'Delete icon' }) + @ApiParam({ name: 'id' }) + removeIcon(@Param('id') id: string) { + return this.iconService.remove(id); + } + + // Group endpoints (must come before :id routes to avoid route conflicts) + @Post('super-admin/icons/groups') + @UseGuards(SuperAdminAuthGuard) + @ApiOperation({ summary: 'Create icon group' }) + @ApiBody({ type: CreateGroupDto }) + createGroup(@Body() dto: CreateGroupDto) { + return this.groupService.create(dto); + } + + @Get('super-admin/icons/groups') + @UseGuards(SuperAdminAuthGuard) + @ApiOperation({ summary: 'Get all icon groups' }) + async findAllGroups() { + console.log('find icona'); + const a = await this.groupService.findAllGroups(); + console.log(a); + return a; + } + + @Get('super-admin/icons/groups/:id') + @UseGuards(SuperAdminAuthGuard) + @ApiOperation({ summary: 'Get icon group by id' }) + @ApiParam({ name: 'id', required: true, type: String }) + findOneGroup(@Param('id') id: string) { + return this.groupService.findOne(id); + } + + @Patch('super-admin/icons/groups/:id') + @UseGuards(SuperAdminAuthGuard) + @ApiOperation({ summary: 'Update icon group' }) + @ApiParam({ name: 'id' }) + updateGroup(@Param('id') id: string, @Body() dto: UpdateGroupDto) { + return this.groupService.update(id, dto); + } + + @Delete('super-admin/icons/groups/:id') + @UseGuards(SuperAdminAuthGuard) + @ApiOperation({ summary: 'Delete icon group' }) + @ApiParam({ name: 'id' }) + removeGroup(@Param('id') id: string) { + return this.groupService.remove(id); + } +} diff --git a/src/modules/icons/dto/create-group.dto.ts b/src/modules/icons/dto/create-group.dto.ts new file mode 100644 index 0000000..1cb0d72 --- /dev/null +++ b/src/modules/icons/dto/create-group.dto.ts @@ -0,0 +1,9 @@ +import { IsString } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; + +export class CreateGroupDto { + @IsString() + @ApiProperty({ example: 'Social Media' }) + name!: string; +} + diff --git a/src/modules/icons/dto/create-icon.dto.ts b/src/modules/icons/dto/create-icon.dto.ts new file mode 100644 index 0000000..5c06089 --- /dev/null +++ b/src/modules/icons/dto/create-icon.dto.ts @@ -0,0 +1,12 @@ +import { IsString } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; + +export class CreateIconDto { + @IsString() + @ApiProperty({ example: 'https://example.com/icons/facebook.svg' }) + url!: string; + + @IsString() + @ApiProperty({ example: 'group-id-here' }) + groupId!: string; +} diff --git a/src/modules/icons/dto/update-group.dto.ts b/src/modules/icons/dto/update-group.dto.ts new file mode 100644 index 0000000..8174604 --- /dev/null +++ b/src/modules/icons/dto/update-group.dto.ts @@ -0,0 +1,5 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateGroupDto } from './create-group.dto'; + +export class UpdateGroupDto extends PartialType(CreateGroupDto) {} + diff --git a/src/modules/icons/dto/update-icon.dto.ts b/src/modules/icons/dto/update-icon.dto.ts new file mode 100644 index 0000000..6ad1b53 --- /dev/null +++ b/src/modules/icons/dto/update-icon.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateIconDto } from './create-icon.dto'; + +export class UpdateIconDto extends PartialType(CreateIconDto) {} diff --git a/src/modules/icons/entities/group.entity.ts b/src/modules/icons/entities/group.entity.ts new file mode 100644 index 0000000..a62c4e4 --- /dev/null +++ b/src/modules/icons/entities/group.entity.ts @@ -0,0 +1,15 @@ +import { Entity, Index, Property, Collection, OneToMany, Cascade } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Icon } from './icon.entity'; + +@Entity({ tableName: 'icon_groups' }) +export class Group extends BaseEntity { + @Property() + name!: string; + + @OneToMany(() => Icon, icon => icon.group,{ + cascade: [Cascade.ALL], + orphanRemoval: true, + }) + icons = new Collection(this); +} diff --git a/src/modules/icons/entities/icon.entity.ts b/src/modules/icons/entities/icon.entity.ts new file mode 100644 index 0000000..f848d7a --- /dev/null +++ b/src/modules/icons/entities/icon.entity.ts @@ -0,0 +1,13 @@ +import { Entity, Index, Property, ManyToOne } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Group } from './group.entity'; + +@Entity({ tableName: 'icons' }) +@Index({ properties: ['group'] }) +export class Icon extends BaseEntity { + @Property() + url!: string; + + @ManyToOne(() => Group) + group!: Group; +} diff --git a/src/modules/icons/icons.module.ts b/src/modules/icons/icons.module.ts new file mode 100644 index 0000000..2e8931a --- /dev/null +++ b/src/modules/icons/icons.module.ts @@ -0,0 +1,18 @@ +import { Module } from '@nestjs/common'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { Icon } from './entities/icon.entity'; +import { Group } from './entities/group.entity'; +import { IconService } from './providers/icon.service'; +import { GroupService } from './providers/group.service'; +import { IconRepository } from './repositories/icon.repository'; +import { GroupRepository } from './repositories/group.repository'; +import { IconsController } from './controllers/icons.controller'; +import { JwtModule } from '@nestjs/jwt'; + +@Module({ + imports: [MikroOrmModule.forFeature([Icon, Group]), JwtModule], + controllers: [IconsController], + providers: [IconService, GroupService, IconRepository, GroupRepository], + exports: [IconRepository, GroupRepository, IconService, GroupService], +}) +export class IconsModule {} diff --git a/src/modules/icons/providers/group.service.ts b/src/modules/icons/providers/group.service.ts new file mode 100644 index 0000000..625bfb4 --- /dev/null +++ b/src/modules/icons/providers/group.service.ts @@ -0,0 +1,56 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { CreateGroupDto } from '../dto/create-group.dto'; +import { UpdateGroupDto } from '../dto/update-group.dto'; +import { GroupRepository } from '../repositories/group.repository'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { RequiredEntityData } from '@mikro-orm/core'; +import { Group } from '../entities/group.entity'; +import { GroupMessage } from 'src/common/enums/message.enum'; + +@Injectable() +export class GroupService { + constructor( + private readonly groupRepository: GroupRepository, + private readonly em: EntityManager, + ) {} + + async create(dto: CreateGroupDto): Promise { + const data: RequiredEntityData = { + name: dto.name, + }; + + const group = this.groupRepository.create(data); + await this.em.persistAndFlush(group); + return group; + } + + async findOne(id: string): Promise { + const group = await this.groupRepository.findOne({ id }, { populate: ['icons'] }); + if (!group) { + throw new NotFoundException(GroupMessage.NOT_FOUND); + } + return group; + } + + async update(id: string, dto: UpdateGroupDto): Promise { + const group = await this.groupRepository.findOne({ id }); + if (!group) { + throw new NotFoundException(GroupMessage.NOT_FOUND); + } + this.em.assign(group, dto); + await this.em.persistAndFlush(group); + return group; + } + + async remove(id: string): Promise { + const group = await this.groupRepository.findOne({ id }, { populate: ['icons'] }); + if (!group) { + throw new NotFoundException(GroupMessage.NOT_FOUND); + } + await this.em.removeAndFlush(group); + } + + findAllGroups(): Promise { + return this.groupRepository.find({}, { populate: ['icons'] }); + } +} diff --git a/src/modules/icons/providers/icon.service.ts b/src/modules/icons/providers/icon.service.ts new file mode 100644 index 0000000..66ccfda --- /dev/null +++ b/src/modules/icons/providers/icon.service.ts @@ -0,0 +1,76 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { CreateIconDto } from '../dto/create-icon.dto'; +import { UpdateIconDto } from '../dto/update-icon.dto'; +import { IconRepository } from '../repositories/icon.repository'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { RequiredEntityData } from '@mikro-orm/core'; +import { Icon } from '../entities/icon.entity'; +import { IconMessage, GroupMessage } from 'src/common/enums/message.enum'; +import { Group } from '../entities/group.entity'; + +@Injectable() +export class IconService { + constructor( + private readonly iconRepository: IconRepository, + private readonly em: EntityManager, + ) {} + + async create(dto: CreateIconDto): Promise { + const group = await this.em.findOne(Group, { id: dto.groupId }); + if (!group) { + throw new NotFoundException(GroupMessage.NOT_FOUND); + } + + const data: RequiredEntityData = { + url: dto.url, + group: group, + }; + + const icon = this.iconRepository.create(data); + await this.em.persistAndFlush(icon); + return icon; + } + + async findAll(): Promise { + return this.iconRepository.find({}, { populate: ['group'] }); + } + + async findOne(id: string): Promise { + const icon = await this.iconRepository.findOne({ id }, { populate: ['group'] }); + if (!icon) { + throw new NotFoundException(IconMessage.NOT_FOUND); + } + return icon; + } + + async update(id: string, dto: UpdateIconDto): Promise { + const icon = await this.iconRepository.findOne({ id }); + if (!icon) { + throw new NotFoundException(IconMessage.NOT_FOUND); + } + + if (dto.groupId) { + const group = await this.em.findOne(Group, { id: dto.groupId }); + if (!group) { + throw new NotFoundException(GroupMessage.NOT_FOUND); + } + icon.group = group; + } + + this.em.assign(icon, { + url: dto.url, + }); + + await this.em.persistAndFlush(icon); + return icon; + } + + async remove(id: string): Promise { + const icon = await this.iconRepository.findOne({ id }); + if (!icon) { + throw new NotFoundException(IconMessage.NOT_FOUND); + } + await this.em.removeAndFlush(icon); + } +} + diff --git a/src/modules/icons/repositories/group.repository.ts b/src/modules/icons/repositories/group.repository.ts new file mode 100644 index 0000000..fdc6749 --- /dev/null +++ b/src/modules/icons/repositories/group.repository.ts @@ -0,0 +1,10 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { Group } from '../entities/group.entity'; + +@Injectable() +export class GroupRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Group); + } +} diff --git a/src/modules/icons/repositories/icon.repository.ts b/src/modules/icons/repositories/icon.repository.ts new file mode 100644 index 0000000..c748b94 --- /dev/null +++ b/src/modules/icons/repositories/icon.repository.ts @@ -0,0 +1,10 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { Icon } from '../entities/icon.entity'; + +@Injectable() +export class IconRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Icon); + } +} diff --git a/src/modules/inventory/dto/bulk-reserve-food.dto.ts b/src/modules/inventory/dto/bulk-reserve-food.dto.ts new file mode 100644 index 0000000..d8ce346 --- /dev/null +++ b/src/modules/inventory/dto/bulk-reserve-food.dto.ts @@ -0,0 +1,34 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsArray, ValidateNested, ArrayMinSize, IsString, IsNumber, Min } from 'class-validator'; +import { Type } from 'class-transformer'; + +export class BulkReserveFoodItemDto { + @ApiProperty({ example: 'food-123', description: 'Food ID' }) + @IsNotEmpty() + @IsString() + foodId!: string; + + @ApiProperty({ example: 5, description: 'Quantity to reserve' }) + @IsNotEmpty() + @IsNumber() + @Min(1) + @Type(() => Number) + quantity!: number; +} + +export class BulkReserveFoodDto { + @ApiProperty({ + description: 'Array of food reservations to create', + type: [BulkReserveFoodItemDto], + example: [ + { foodId: 'food-123', quantity: 5 }, + { foodId: 'food-789', quantity: 3 }, + ], + }) + @IsNotEmpty() + @IsArray() + @ArrayMinSize(1, { message: 'At least one item is required' }) + @ValidateNested({ each: true }) + @Type(() => BulkReserveFoodItemDto) + items!: BulkReserveFoodItemDto[]; +} diff --git a/src/modules/inventory/dto/bulk-set-stock.dto.ts b/src/modules/inventory/dto/bulk-set-stock.dto.ts new file mode 100644 index 0000000..a4daf35 --- /dev/null +++ b/src/modules/inventory/dto/bulk-set-stock.dto.ts @@ -0,0 +1,27 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsArray, ValidateNested, ArrayMinSize } from 'class-validator'; +import { Type } from 'class-transformer'; +import { SetStockDto } from './set-stock.dto'; + +export class BulkSetStockItemDto extends SetStockDto { + @ApiProperty({ example: 'food-123', description: 'Food ID' }) + @IsNotEmpty() + foodId!: string; +} + +export class BulkSetStockDto { + @ApiProperty({ + description: 'Array of stock items to set', + type: [BulkSetStockItemDto], + example: [ + { foodId: 'food-123', totalStock: 100, availableStock: 80 }, + { foodId: 'food-456', totalStock: 50, availableStock: 45 }, + ], + }) + @IsNotEmpty() + @IsArray() + @ArrayMinSize(1, { message: 'At least one item is required' }) + @ValidateNested({ each: true }) + @Type(() => BulkSetStockItemDto) + items!: BulkSetStockItemDto[]; +} diff --git a/src/modules/inventory/dto/create-inventory.dto.ts b/src/modules/inventory/dto/create-inventory.dto.ts new file mode 100644 index 0000000..2ebf1f1 --- /dev/null +++ b/src/modules/inventory/dto/create-inventory.dto.ts @@ -0,0 +1 @@ +export class CreateInventoryDto {} diff --git a/src/modules/inventory/dto/set-stock.dto.ts b/src/modules/inventory/dto/set-stock.dto.ts new file mode 100644 index 0000000..6b06cd9 --- /dev/null +++ b/src/modules/inventory/dto/set-stock.dto.ts @@ -0,0 +1,17 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNumber, Min } from 'class-validator'; +import { Type } from 'class-transformer'; + +export class SetStockDto { + @ApiProperty({ example: 100, description: 'Total stock quantity' }) + @IsNumber() + @Min(0) + @Type(() => Number) + totalStock!: number; + + @ApiProperty({ example: 80, description: 'Available stock quantity' }) + @IsNumber() + @Min(0) + @Type(() => Number) + availableStock!: number; +} diff --git a/src/modules/inventory/entities/inventory.entity.ts b/src/modules/inventory/entities/inventory.entity.ts new file mode 100644 index 0000000..8897990 --- /dev/null +++ b/src/modules/inventory/entities/inventory.entity.ts @@ -0,0 +1,18 @@ +import { Cascade, Entity, Property, OneToOne } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Food } from '../../foods/entities/food.entity'; + +@Entity({ tableName: 'inventory' }) +export class Inventory extends BaseEntity { + @OneToOne(() => Food, { + cascade: [Cascade.ALL], + orphanRemoval: true, + }) + food!: Food; + + @Property({ type: 'int' }) + totalStock!: number; + + @Property({ type: 'int' }) + availableStock!: number; +} diff --git a/src/modules/inventory/inteface/reservation.ts b/src/modules/inventory/inteface/reservation.ts new file mode 100644 index 0000000..c3f8f5a --- /dev/null +++ b/src/modules/inventory/inteface/reservation.ts @@ -0,0 +1,6 @@ +export enum ReservationStatus { + ACTIVE = 'active', + CONFIRMED = 'confirmed', +} + + diff --git a/src/modules/inventory/inventory.controller.ts b/src/modules/inventory/inventory.controller.ts new file mode 100644 index 0000000..9a71e3c --- /dev/null +++ b/src/modules/inventory/inventory.controller.ts @@ -0,0 +1,38 @@ +import { Controller, Body, Patch, Param, Post, UseGuards } from '@nestjs/common'; +import { InventoryService } from './inventory.service'; +import { SetStockDto } from './dto/set-stock.dto'; +import { BulkSetStockDto } from './dto/bulk-set-stock.dto'; +import { ApiTags, ApiOperation, ApiBody, ApiParam, ApiBearerAuth } from '@nestjs/swagger'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { RestId } from 'src/common/decorators'; +import { Inventory } from './entities/inventory.entity'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { Permission } from 'src/common/enums/permission.enum'; + +@ApiTags('inventory') +@UseGuards(AdminAuthGuard) +@ApiBearerAuth() +@Permissions(Permission.MANAGE_FOODS) +@Controller() +export class InventoryController { + constructor(private readonly inventoryService: InventoryService) { } + + @Patch('admin/inventory/food/:foodId/stock') + @ApiOperation({ summary: 'Set available and total stock for a food item' }) + @ApiParam({ name: 'foodId', description: 'Food ID' }) + @ApiBody({ type: SetStockDto }) + setStockForFood( + @Param('foodId') foodId: string, + @RestId() restaurantId: string, + @Body() setStockDto: SetStockDto, + ): Promise { + return this.inventoryService.setStockForFood(foodId, restaurantId, setStockDto); + } + + @Post('admin/inventory/foods/stock/bulk') + @ApiOperation({ summary: 'Bulk set available and total stock for multiple food items' }) + @ApiBody({ type: BulkSetStockDto }) + bulkSetStockForFoods(@RestId() restaurantId: string, @Body() bulkSetStockDto: BulkSetStockDto): Promise { + return this.inventoryService.bulkSetStockForFoods(restaurantId, bulkSetStockDto); + } +} diff --git a/src/modules/inventory/inventory.module.ts b/src/modules/inventory/inventory.module.ts new file mode 100644 index 0000000..d333b5a --- /dev/null +++ b/src/modules/inventory/inventory.module.ts @@ -0,0 +1,15 @@ +import { Module } from '@nestjs/common'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { InventoryService } from './inventory.service'; +import { InventoryController } from './inventory.controller'; +import { Inventory } from './entities/inventory.entity'; +import { AuthModule } from '../auth/auth.module'; +import { JwtModule } from '@nestjs/jwt'; + +@Module({ + imports: [MikroOrmModule.forFeature([Inventory]), AuthModule, JwtModule], + controllers: [InventoryController], + providers: [InventoryService], + exports: [InventoryService], +}) +export class InventoryModule {} diff --git a/src/modules/inventory/inventory.service.ts b/src/modules/inventory/inventory.service.ts new file mode 100644 index 0000000..8fcfa1f --- /dev/null +++ b/src/modules/inventory/inventory.service.ts @@ -0,0 +1,227 @@ +import { Injectable, NotFoundException, BadRequestException } from '@nestjs/common'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { SetStockDto } from './dto/set-stock.dto'; +import { BulkSetStockDto } from './dto/bulk-set-stock.dto'; +import { BulkReserveFoodDto } from './dto/bulk-reserve-food.dto'; +import { Inventory } from './entities/inventory.entity'; +import { Food } from '../foods/entities/food.entity'; +import { Restaurant } from '../restaurants/entities/restaurant.entity'; + +@Injectable() +export class InventoryService { + constructor(private readonly em: EntityManager) {} + + async setStockForFood(foodId: string, restaurantId: string, setStockDto: SetStockDto): Promise { + // Validate that availableStock doesn't exceed totalStock + if (setStockDto.availableStock > setStockDto.totalStock) { + throw new BadRequestException('Available stock cannot exceed total stock'); + } + + // Find food and verify it belongs to the restaurant + const food = await this.em.findOne(Food, { id: foodId }, { populate: ['restaurant'] }); + if (!food) { + throw new NotFoundException(`Food with ID ${foodId} not found`); + } + + if (food.restaurant.id !== restaurantId) { + throw new BadRequestException(`Food does not belong to restaurant ${restaurantId}`); + } + + // Find or create inventory record + let inventory = await this.em.findOne(Inventory, { + food: { id: foodId, restaurant: { id: restaurantId } }, + }); + + if (!inventory) { + // Create new inventory record + const restaurant = await this.em.findOne(Restaurant, { id: restaurantId }); + if (!restaurant) { + throw new NotFoundException(`Restaurant with ID ${restaurantId} not found`); + } + + inventory = this.em.create(Inventory, { + food, + totalStock: setStockDto.totalStock, + availableStock: setStockDto.availableStock, + }); + } else { + // Update existing inventory record + inventory.totalStock = setStockDto.totalStock; + inventory.availableStock = setStockDto.availableStock; + } + + await this.em.flush(); + + return inventory; + } + + async bulkSetStockForFoods(restaurantId: string, bulkSetStockDto: BulkSetStockDto): Promise { + const { items } = bulkSetStockDto; + // Validate all items first + for (const item of items) { + if (item.availableStock > item.totalStock) { + throw new BadRequestException(`Available stock cannot exceed total stock for food ${item.foodId}`); + } + } + + // Get all food IDs + const foodIds = items.map(item => item.foodId); + + // Load all foods in one query + const foods = await this.em.find(Food, { id: { $in: foodIds } }, { populate: ['restaurant'] }); + + // Verify all foods exist and belong to the restaurant + const foodMap = new Map(); + for (const food of foods) { + if (food.restaurant.id !== restaurantId) { + throw new BadRequestException(`Food ${food.id} does not belong to restaurant ${restaurantId}`); + } + foodMap.set(food.id, food); + } + + // Check for missing foods + const missingFoodIds = foodIds.filter(id => !foodMap.has(id)); + if (missingFoodIds.length > 0) { + throw new NotFoundException(`Foods not found: ${missingFoodIds.join(', ')}`); + } + + // Load all existing inventories in one query + const existingInventories = await this.em.find(Inventory, { + food: { id: { $in: foodIds }, restaurant: { id: restaurantId } }, + }); + + const inventoryMap = new Map(); + for (const inventory of existingInventories) { + inventoryMap.set(inventory.food.id, inventory); + } + + // Get restaurant once + const restaurant = await this.em.findOne(Restaurant, { id: restaurantId }); + if (!restaurant) { + throw new NotFoundException(`Restaurant with ID ${restaurantId} not found`); + } + + // Process all items + const results: Inventory[] = []; + for (const item of items) { + const food = foodMap.get(item.foodId)!; + let inventory = inventoryMap.get(item.foodId); + + if (!inventory) { + // Create new inventory record + inventory = this.em.create(Inventory, { + food, + totalStock: item.totalStock, + availableStock: item.availableStock, + }); + } else { + // Update existing inventory record + inventory.totalStock = item.totalStock; + inventory.availableStock = item.availableStock; + } + + results.push(inventory); + } + + // Flush all changes at once + await this.em.flush(); + + return results; + } + + async deductFromInventory(em: EntityManager, bulkReserveFoodDto: BulkReserveFoodDto): Promise { + return em.transactional(async em => { + const { items } = bulkReserveFoodDto; + // Get all unique food IDs + const foodIds = [...new Set(items.map(item => item.foodId))]; + + // Load all foods in one query + const foods = await em.find(Food, { id: { $in: foodIds } }); + + // Verify all foods exist and belong to the restaurant + const foodMap = new Map(); + for (const food of foods) { + foodMap.set(food.id, food); + } + + // Check for missing foods + const missingFoodIds = foodIds.filter(id => !foodMap.has(id)); + if (missingFoodIds.length > 0) { + throw new NotFoundException(`Foods not found: ${missingFoodIds.join(', ')}`); + } + + // Load all existing inventories in one query + const existingInventories = await em.find(Inventory, { + food: { id: { $in: foodIds } }, + }); + + const inventoryMap = new Map(); + for (const inventory of existingInventories) { + inventoryMap.set(inventory.food.id, inventory); + } + + // Validate stock availability and create reservations + const inventories: Inventory[] = []; + for (const item of items) { + const inventory = inventoryMap.get(item.foodId); + + // Check if inventory exists + if (!inventory) { + throw new NotFoundException(`Inventory not found for food ${item.foodId}`); + } + + // Check if available stock is sufficient + if (inventory.availableStock < item.quantity) { + throw new BadRequestException( + `Insufficient stock for food ${item.foodId}. Available: ${inventory.availableStock}, Requested: ${item.quantity}`, + ); + } + inventory.availableStock -= item.quantity; + inventories.push(inventory); + em.persist(inventory); + } + return inventories; + }); + } + + async restoreToInventory(em: EntityManager, bulkRestoreDto: BulkReserveFoodDto): Promise { + return em.transactional(async em => { + const { items } = bulkRestoreDto; + + const foodIds = [...new Set(items.map(item => item.foodId))]; + + const foods = await em.find(Food, { id: { $in: foodIds } }); + const foodMap = new Map(); + for (const food of foods) { + foodMap.set(food.id, food); + } + + const missingFoodIds = foodIds.filter(id => !foodMap.has(id)); + if (missingFoodIds.length > 0) { + throw new NotFoundException(`Foods not found: ${missingFoodIds.join(', ')}`); + } + + const existingInventories = await em.find(Inventory, { + food: { id: { $in: foodIds } }, + }); + + const inventoryMap = new Map(); + for (const inventory of existingInventories) { + inventoryMap.set(inventory.food.id, inventory); + } + + const inventories: Inventory[] = []; + for (const item of items) { + const inventory = inventoryMap.get(item.foodId); + if (!inventory) { + throw new NotFoundException(`Inventory not found for food ${item.foodId}`); + } + inventory.availableStock += item.quantity; + inventories.push(inventory); + em.persist(inventory); + } + + return inventories; + }); + } +} diff --git a/src/modules/notifications/constants/queue.ts b/src/modules/notifications/constants/queue.ts new file mode 100644 index 0000000..644e72f --- /dev/null +++ b/src/modules/notifications/constants/queue.ts @@ -0,0 +1,5 @@ +export enum NotificationQueueNameEnum { + SMS = 'sms', + PUSH = 'push', + IN_APP = 'in-app', +} diff --git a/src/modules/notifications/controllers/notifications.controller.ts b/src/modules/notifications/controllers/notifications.controller.ts new file mode 100644 index 0000000..71e5335 --- /dev/null +++ b/src/modules/notifications/controllers/notifications.controller.ts @@ -0,0 +1,196 @@ +import { Controller, Get, Body, Param, UseGuards, Query, Patch, Put, Post } from '@nestjs/common'; +import { ApiTags, ApiOperation, ApiBearerAuth, ApiParam, ApiQuery, ApiHeader } from '@nestjs/swagger'; +import { NotificationService } from '../services/notification.service'; +import { NotificationPreferenceService } from '../services/notification-preference.service'; +import { AuthGuard } from '../../auth/guards/auth.guard'; +import { UserId } from '../../../common/decorators/user-id.decorator'; +import { AdminAuthGuard } from '../../auth/guards/adminAuth.guard'; +import { RestId } from '../../../common/decorators/rest-id.decorator'; +import { UpdatePreferenceDto } from '../dto/update-preference.dto'; +import { CreatePreferenceDto } from '../dto/create-preference.dto'; +import { AdminId } from 'src/common/decorators/admin-id.decorator'; +import { API_HEADER_SLUG } from 'src/common/constants/index'; +import { NotificationMessage } from 'src/common/enums/message.enum'; +import { SuperAdminAuthGuard } from 'src/modules/auth/guards/superAdminAuth.guard'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { Permission } from 'src/common/enums/permission.enum'; + +@ApiTags('notifications') +@Controller() +export class NotificationsController { + constructor( + private readonly notificationService: NotificationService, + private readonly preferenceService: NotificationPreferenceService, + ) { } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Get('public/notifications') + @ApiOperation({ summary: 'Get user restaurant notifications' }) + @ApiHeader(API_HEADER_SLUG) + @ApiQuery({ name: 'limit', required: false, type: Number, description: 'Number of items to return (default: 50)' }) + @ApiQuery({ + name: 'cursor', + required: false, + type: String, + description: 'Cursor for pagination (ID of the last item from previous page)', + }) + @ApiQuery({ name: 'status', required: false, enum: ['seen', 'unseen'], description: 'Filter by notification status' }) + async getUserNotifications( + @UserId() userId: string, + @RestId() restaurantId: string, + @Query('limit') limit?: number, + @Query('cursor') cursor?: string, + @Query('status') status?: 'seen' | 'unseen', + ) { + return await this.notificationService.findByUserAndRestaurant( + userId, + restaurantId, + limit ? parseInt(limit.toString(), 10) : 50, + cursor, + status, + ); + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Get('public/notifications/unseen-count') + @ApiOperation({ summary: 'Get unseen notifications count for user' }) + @ApiHeader(API_HEADER_SLUG) + async getUserUnseenCount(@UserId() userId: string, @RestId() restaurantId: string) { + const count = await this.notificationService.countUnseenByUserAndRestaurant(userId, restaurantId); + return { count }; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Put('public/notifications/:id') + @ApiOperation({ summary: 'Read a notification ' }) + @ApiParam({ name: 'id', description: 'Notification ID' }) + async readNotificationUser(@RestId() restaurantId: string, @Param('id') id: string, @UserId() userId: string) { + await this.notificationService.readNotificationAsUser(id, userId, restaurantId); + return { message: NotificationMessage.READ_SUCCESS }; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Put('public/notifications/read/all') + @ApiOperation({ summary: 'Read all notification ' }) + async readAllNotificationUser(@RestId() restaurantId: string, @UserId() userId: string) { + await this.notificationService.readAllNotifsAsUser(userId, restaurantId); + return { message: NotificationMessage.READ_SUCCESS }; + } + /* ***************** Admin Endpoints ***************** */ + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Get('admin/notifications') + @ApiOperation({ summary: 'Get Admin notifications' }) + @ApiQuery({ name: 'limit', required: false, type: Number }) + @ApiQuery({ + name: 'cursor', + required: false, + type: String, + description: 'Cursor for pagination (ID of the last item from previous page)', + }) + @ApiQuery({ name: 'status', required: false, enum: ['seen', 'unseen'], description: 'Filter by notification status' }) + async getAdminNotifications( + @AdminId() adminId: string, + @RestId() restaurantId: string, + @Query('limit') limit?: number, + @Query('cursor') cursor?: string, + @Query('status') status?: 'seen' | 'unseen', + ) { + const parsedLimit = limit ? parseInt(limit.toString(), 10) : 50; + return await this.notificationService.findByRestaurant(restaurantId, adminId, parsedLimit, cursor, status); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Get('admin/notifications/unseen-count') + @ApiOperation({ summary: 'Get unseen notifications count for admin' }) + async getAdminUnseenCount(@AdminId() adminId: string, @RestId() restaurantId: string) { + const count = await this.notificationService.countUnseenByRestaurant(adminId, restaurantId); + return { count }; + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Put('admin/notifications/:id') + @ApiOperation({ summary: 'Read a notification ' }) + @ApiParam({ name: 'id', description: 'Notification ID' }) + async readNotificationAdmin(@RestId() restaurantId: string, @AdminId() adminId: string, @Param('id') id: string) { + await this.notificationService.readNotificationAdmin(id, adminId, restaurantId); + return { message: NotificationMessage.READ_SUCCESS }; + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Put('admin/notifications/read/all') + @ApiOperation({ summary: 'Read all notification ' }) + async readAllNotificationAdmin(@RestId() restaurantId: string, @AdminId() adminId: string, @Param('id') id: string) { + await this.notificationService.readAllNotifsAsAdmin(adminId, restaurantId); + return { message: NotificationMessage.READ_SUCCESS }; + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_SETTINGS) + @Get('admin/notification-preferences') + @ApiOperation({ summary: 'Get all notification preferences for a restaurant' }) + async getPreferences(@RestId() restaurantId: string) { + return this.preferenceService.findByRestaurant(restaurantId); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_SETTINGS) + @Patch('admin/notification-preferences/:id') + @ApiOperation({ summary: 'Update notification channels' }) + @ApiParam({ name: 'id', description: 'Notification preference ID' }) + async updatePreference( + @RestId() restaurantId: string, + @Param('id') preferenceId: string, + @Body() dto: UpdatePreferenceDto, + ) { + return this.preferenceService.updatePreference(preferenceId, restaurantId, dto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_SETTINGS) + @Post('admin/notification-preferences') + @ApiOperation({ summary: 'Create notification preference' }) + async createPreference( + @RestId() restaurantId: string, + @Body() dto: CreatePreferenceDto, + ) { + return this.preferenceService.create(restaurantId, dto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Get('admin/notifications/sms-usage') + @ApiOperation({ summary: 'Get SMS usage for my restaurant' }) + async getRestaurantSmsUsage(@RestId() restaurantId: string) { + const smsCount = await this.notificationService.getSmsCountByRestaurantId(restaurantId); + return { smsCount }; + } + + // super admin endpoints + + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @Get('super-admin/notifications/sms-count') + @ApiOperation({ summary: 'Get SMS count for each restaurant with pagination' }) + @ApiQuery({ name: 'page', required: false, type: Number, description: 'Page number (default: 1)', minimum: 1 }) + @ApiQuery({ name: 'limit', required: false, type: Number, description: 'Items per page (default: 10)', minimum: 1 }) + async getSmsCount( + @Query('page') page?: number, + @Query('limit') limit?: number, + ) { + const parsedPage = page ? parseInt(page.toString(), 10) : 1; + const parsedLimit = limit ? parseInt(limit.toString(), 10) : 10; + return await this.notificationService.getSmsCountByRestaurant(parsedPage, parsedLimit); + } +} diff --git a/src/modules/notifications/crone/notification.crone.ts b/src/modules/notifications/crone/notification.crone.ts new file mode 100644 index 0000000..01052fa --- /dev/null +++ b/src/modules/notifications/crone/notification.crone.ts @@ -0,0 +1,46 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { Cron } from '@nestjs/schedule'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { Notification } from '../entities/notification.entity'; + +@Injectable() +export class NotificationCrone { + private readonly logger = new Logger(NotificationCrone.name); + + constructor(private readonly em: EntityManager) {} + + // run every day at 03:00 (3:00 AM) + @Cron('0 3 * * *', { + name: 'deleteOldNotifications', + timeZone: 'UTC', + }) + async handleCron() { + try { + this.logger.debug('Starting daily notification cleanup (removing notifications older than 24 hours)'); + + // Calculate the date 24 hours ago + const twentyFourHoursAgo = new Date(); + twentyFourHoursAgo.setHours(twentyFourHoursAgo.getHours() - 24); + + // Find all notifications created more than 24 hours ago + const oldNotifications = await this.em.find(Notification, { + createdAt: { $lt: twentyFourHoursAgo }, + }); + + if (!oldNotifications || oldNotifications.length === 0) { + this.logger.debug('No old notifications found to delete'); + return; + } + + this.logger.log(`Found ${oldNotifications.length} notifications older than 24 hours to delete`); + + // Delete the old notifications + await this.em.removeAndFlush(oldNotifications); + + this.logger.log(`Successfully deleted ${oldNotifications.length} old notifications`); + } catch (err) { + this.logger.error(`NotificationCrone failed: ${err?.message}`, err); + } + } +} + diff --git a/src/modules/notifications/decorators/ws-rest-id.decorator.ts b/src/modules/notifications/decorators/ws-rest-id.decorator.ts new file mode 100644 index 0000000..8391a8e --- /dev/null +++ b/src/modules/notifications/decorators/ws-rest-id.decorator.ts @@ -0,0 +1,26 @@ +import type { ExecutionContext } from '@nestjs/common'; +import { createParamDecorator } from '@nestjs/common'; +import type { AuthenticatedSocket } from '../guards/ws-admin-auth.guard'; + +/** + * Extract restaurant ID from authenticated WebSocket client + * Use this decorator in WebSocket handlers to get the restId from the authenticated admin + * + * @example + * ```typescript + * @SubscribeMessage('get:notifications') + * handleGetNotifications(@WsRestId() restId: string) { + * // restId is automatically extracted from authenticated admin + * } + * ``` + */ +export const WsRestId = createParamDecorator((data: unknown, ctx: ExecutionContext): string => { + const client = ctx.switchToWs().getClient(); + const restId = client.restId; + + if (!restId) { + throw new Error('Restaurant ID not found. Ensure WsAdminAuthGuard is applied.'); + } + + return restId; +}); diff --git a/src/modules/notifications/dto/create-notification.dto.ts b/src/modules/notifications/dto/create-notification.dto.ts new file mode 100644 index 0000000..e42d4b5 --- /dev/null +++ b/src/modules/notifications/dto/create-notification.dto.ts @@ -0,0 +1,40 @@ +import { IsString, IsNotEmpty, IsOptional, IsArray, IsObject } from 'class-validator'; +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; + +export class CreateNotificationDto { + @ApiProperty({ description: 'Notification title' }) + @IsString() + @IsNotEmpty() + title: string; + + @ApiProperty({ description: 'Notification message' }) + @IsString() + @IsNotEmpty() + message: string; + + @ApiProperty({ description: 'Notification type' }) + @IsString() + @IsNotEmpty() + type: string; + + @ApiPropertyOptional({ description: 'User ID' }) + @IsString() + @IsOptional() + userId?: string; + + @ApiPropertyOptional({ description: 'Phone number for SMS' }) + @IsString() + @IsOptional() + phoneNumber?: string; + + @ApiPropertyOptional({ description: 'Push notification tokens', type: [String] }) + @IsArray() + @IsString({ each: true }) + @IsOptional() + pushTokens?: string[]; + + @ApiPropertyOptional({ description: 'Additional data' }) + @IsObject() + @IsOptional() + data?: Record; +} diff --git a/src/modules/notifications/dto/create-preference.dto.ts b/src/modules/notifications/dto/create-preference.dto.ts new file mode 100644 index 0000000..63583fc --- /dev/null +++ b/src/modules/notifications/dto/create-preference.dto.ts @@ -0,0 +1,24 @@ +import { IsNotEmpty, IsEnum, IsArray } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; +import { NotifTitleEnum } from '../interfaces/notification.interface'; +import { NotifChannelEnum } from '../interfaces/notification.interface'; + +export class CreatePreferenceDto { + @ApiProperty({ + description: 'Notification title/type (e.g., order.created, review.created)', + enum: NotifTitleEnum, + example: NotifTitleEnum.ORDER_CREATED, + }) + @IsEnum(NotifTitleEnum) + @IsNotEmpty() + title!: NotifTitleEnum; + + @ApiProperty({ + description: 'Notification type (SMS, PUSH, BOTH, or NONE)', + enum: NotifChannelEnum, + example: NotifChannelEnum.SMS, + }) + @IsArray() + @IsEnum(NotifChannelEnum, { each: true }) + channels!: NotifChannelEnum[]; +} diff --git a/src/modules/notifications/dto/send-notification.dto.ts b/src/modules/notifications/dto/send-notification.dto.ts new file mode 100644 index 0000000..c306319 --- /dev/null +++ b/src/modules/notifications/dto/send-notification.dto.ts @@ -0,0 +1,38 @@ +import { IsString, IsNotEmpty, IsOptional, IsObject } from 'class-validator'; +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; + +export class SendNotificationDto { + @ApiProperty({ description: 'Restaurant ID (ULID)' }) + @IsString() + @IsNotEmpty() + restaurantId: string; + + @ApiPropertyOptional({ description: 'User ID (ULID)' }) + @IsString() + @IsOptional() + userId?: string; + + @ApiProperty({ description: 'Notification type (e.g., ORDER_CONFIRMED, PAYMENT_FAILED)' }) + @IsString() + @IsNotEmpty() + notificationType: string; + + @ApiProperty({ description: 'Notification payload' }) + @IsObject() + @IsNotEmpty() + payload: { + title?: string; + message: string; + body?: string; + phoneNumber?: string; + pushToken?: string; + data?: Record; + templateId?: string; + parameters?: Array<{ name: string; value: string }>; + }; + + @ApiPropertyOptional({ description: 'Idempotency key to prevent duplicates' }) + @IsString() + @IsOptional() + idempotencyKey?: string; +} diff --git a/src/modules/notifications/dto/update-preference.dto.ts b/src/modules/notifications/dto/update-preference.dto.ts new file mode 100644 index 0000000..19af347 --- /dev/null +++ b/src/modules/notifications/dto/update-preference.dto.ts @@ -0,0 +1,15 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsArray, IsEnum } from 'class-validator'; +import { NotifChannelEnum } from '../interfaces/notification.interface'; + +export class UpdatePreferenceDto { + @ApiProperty({ + description: 'Notification channels (can be empty or contain any enum values)', + enum: NotifChannelEnum, + isArray: true, + example: ['sms', 'push'], + }) + @IsArray() + @IsEnum(NotifChannelEnum, { each: true }) + channels!: NotifChannelEnum[]; +} diff --git a/src/modules/notifications/entities/notification-preference.entity.ts b/src/modules/notifications/entities/notification-preference.entity.ts new file mode 100644 index 0000000..e3ab3bc --- /dev/null +++ b/src/modules/notifications/entities/notification-preference.entity.ts @@ -0,0 +1,18 @@ +import { Entity, Property, ManyToOne, Unique } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { NotifTitleEnum } from '../interfaces/notification.interface'; +import { NotifChannelEnum } from '../interfaces/notification.interface'; + +@Entity({ tableName: 'notification_preferences' }) +@Unique({ properties: ['restaurant', 'title'] }) +export class NotificationPreference extends BaseEntity { + @ManyToOne(() => Restaurant) + restaurant!: Restaurant; + + @Property() + title!: NotifTitleEnum; + + @Property({ type: 'json' }) + channels: NotifChannelEnum[] = []; +} diff --git a/src/modules/notifications/entities/notification.entity.ts b/src/modules/notifications/entities/notification.entity.ts new file mode 100644 index 0000000..0f2d544 --- /dev/null +++ b/src/modules/notifications/entities/notification.entity.ts @@ -0,0 +1,27 @@ +import { Entity, Property, ManyToOne, Enum } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { User } from '../../users/entities/user.entity'; +import { NotifTitleEnum } from '../interfaces/notification.interface'; +import { Admin } from 'src/modules/admin/entities/admin.entity'; + +@Entity({ tableName: 'notifications' }) +export class Notification extends BaseEntity { + @ManyToOne(() => Restaurant) + restaurant!: Restaurant; + + @ManyToOne(() => User, { nullable: true }) + user?: User; + + @ManyToOne(() => Admin, { nullable: true }) + admin?: Admin; + + @Enum(() => NotifTitleEnum) + title!: NotifTitleEnum; + + @Property() + content!: string; + + @Property({ nullable: true }) + seenAt?: Date; +} diff --git a/src/modules/notifications/entities/smsLogs.entity.ts b/src/modules/notifications/entities/smsLogs.entity.ts new file mode 100644 index 0000000..edeb103 --- /dev/null +++ b/src/modules/notifications/entities/smsLogs.entity.ts @@ -0,0 +1,17 @@ +import { Entity, Property, ManyToOne, PrimaryKey } from '@mikro-orm/core'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; + +@Entity({ tableName: 'sms_logs' }) +export class SmsLog { + @PrimaryKey() + id!: number; + + @ManyToOne(() => Restaurant) + restaurant!: Restaurant; + + @Property() + phone!: string; + + @Property() + createdAt: Date = new Date(); +} \ No newline at end of file diff --git a/src/modules/notifications/events/sms.events.ts b/src/modules/notifications/events/sms.events.ts new file mode 100644 index 0000000..303b366 --- /dev/null +++ b/src/modules/notifications/events/sms.events.ts @@ -0,0 +1,7 @@ +export class SmsSentEvent { + constructor( + public readonly phoneNumber: string, + public readonly restaurantId: string, + ) {} +} + diff --git a/src/modules/notifications/guards/ws-admin-auth.guard.ts b/src/modules/notifications/guards/ws-admin-auth.guard.ts new file mode 100644 index 0000000..296e004 --- /dev/null +++ b/src/modules/notifications/guards/ws-admin-auth.guard.ts @@ -0,0 +1,125 @@ +import { CanActivate, ExecutionContext, Injectable, Logger, Inject } from '@nestjs/common'; +import { WsException } from '@nestjs/websockets'; +import { Socket } from 'socket.io'; +import { JwtService } from '@nestjs/jwt'; +import { ConfigService } from '@nestjs/config'; +import { IAdminTokenPayload } from '../../auth/interfaces/IToken-payload'; + +export interface AuthenticatedSocket extends Socket { + adminId?: string; + restId?: string; +} + +@Injectable() +export class WsAdminAuthGuard implements CanActivate { + private readonly logger = new Logger(WsAdminAuthGuard.name); + + constructor( + @Inject(JwtService) + private readonly jwtService: JwtService, + @Inject(ConfigService) + private readonly configService: ConfigService, + ) {} + + async canActivate(context: ExecutionContext): Promise { + const client: Socket = context.switchToWs().getClient(); + + try { + const token = this.extractToken(client); + + if (!token) { + this.logger.warn('No token provided in WebSocket connection', { + socketId: client.id, + auth: client.handshake.auth, + query: client.handshake.query, + }); + throw new WsException('Authentication required'); + } + + const secret = this.configService.getOrThrow('JWT_SECRET'); + const payload = await this.jwtService.verifyAsync(token, { + secret, + }); + + if (!payload.adminId || !payload.restId) { + this.logger.error('Invalid token payload structure', payload); + throw new WsException('Invalid token payload'); + } + + // Attach admin info to socket + (client as AuthenticatedSocket).adminId = payload.adminId; + (client as AuthenticatedSocket).restId = payload.restId; + + this.logger.log(`Admin authenticated via WebSocket: ${payload.adminId}, restId: ${payload.restId}`); + + return true; + } catch (error) { + if (error instanceof WsException) { + throw error; + } + this.logger.error('WebSocket authentication error', { + error: error instanceof Error ? error.message : 'Unknown error', + socketId: client.id, + }); + throw new WsException('Authentication failed'); + } + } + + private extractToken(client: Socket): string | undefined { + // Try to get token from handshake auth (recommended for socket.io) + const auth = client.handshake.auth; + const authToken = (auth?.token as string | undefined) || (auth?.authorization as string | undefined); + + if (authToken) { + // If it's "Bearer ", extract just the token + if (typeof authToken === 'string' && authToken.startsWith('Bearer ')) { + return authToken.substring(7); + } + return authToken; + } + + // Try to get from query parameters (fallback) + const queryToken = client.handshake.query?.token || client.handshake.query?.authorization; + + if (queryToken) { + if (typeof queryToken === 'string' && queryToken.startsWith('Bearer ')) { + return queryToken.substring(7); + } + return queryToken as string; + } + + // Try to get from headers (if available) + const headers = client.handshake.headers; + const authHeader = headers.authorization || headers['authorization']; + + if (authHeader && typeof authHeader === 'string') { + const [type, token] = authHeader.split(' '); + if (type?.toLowerCase() === 'bearer' && token) { + return token; + } + } + + return undefined; + } + + // private extractToken(client: Socket): string | undefined { + // const tryGet = (...values: any[]) => values.find(v => typeof v === 'string' && v.length > 0); + + // let token = tryGet( + // client.handshake.auth?.token, + // client.handshake.auth?.authorization, + // client.handshake.query?.token, + // client.handshake.query?.authorization, + // client.handshake.headers.authorization, + // client.handshake.headers['authorization'], + // ); + + // if (!token) return undefined; + + // if (token.startsWith('Bearer ')) { + // token = token.slice(7); + // } + + // return token; + // } +} diff --git a/src/modules/notifications/interfaces/jobs-queue.interface.ts b/src/modules/notifications/interfaces/jobs-queue.interface.ts new file mode 100644 index 0000000..470a72c --- /dev/null +++ b/src/modules/notifications/interfaces/jobs-queue.interface.ts @@ -0,0 +1,32 @@ +import type { NotifTitleEnum, recipientType } from './notification.interface'; + +export interface SmsNotificationQueueJob { + recipient: recipientType; + templateId: string; + restaurantId: string; + parameters?: Record; +} +export interface PushNotificationQueueJob { + title: string; + content: string; + icon: string; + action: { + type: string; //view order + url: string; + }; + pushToken?: string; // FCM token for push notifications + pushTokens?: string[]; // Multiple FCM tokens for bulk push notifications +} +export interface InAppNotificationQueueJob { + recipient: { adminId: string; restaurantId: string }; + subject: NotifTitleEnum; + body: string; + notificationId: string; +} + +export interface SmsNotificationQueueJobResult { + success: boolean; + notificationId: string; + providerResponse?: Record; + error?: string; +} diff --git a/src/modules/notifications/interfaces/notification.interface.ts b/src/modules/notifications/interfaces/notification.interface.ts new file mode 100644 index 0000000..c97ca61 --- /dev/null +++ b/src/modules/notifications/interfaces/notification.interface.ts @@ -0,0 +1,76 @@ +export enum NotifChannelEnum { + IN_APP = 'in-app', + SMS = 'sms', + PUSH = 'push', +} +export enum NotifTypeEnum { + TRANSACTIONAL = 'transactional', + PROMOTIONAL = 'promotional', + SYSTEM = 'system', +} +export enum NotifTitleEnum { + PAGER_CREATED = 'pager.created', + ORDER_CREATED = 'order.created', + PAYMENT_SUCCESS = 'payment.success', + REVIEW_CREATED = 'review.created', + ORDER_STATUS_CHANGED = 'order.status.changed', +} +export type recipientType = { userId: string } | { adminId: string }; + +export interface NotifRequestMessage { + title: NotifTitleEnum; + content: string; + sms: { + templateId: string; + parameters?: Record; + }; + pushNotif: { + title: string; + content: string; + icon: string; + action: { + type: string; //view order + url: string; + }; + }; +} + +export interface NotifRequest { + // requestId: string; + // timestamp: Date; + // notifType: NotifTypeEnum; + // channels: NotifChannelEnum[]; + restaurantId: string; + recipients: recipientType[]; + message: NotifRequestMessage; + metadata: { + priority: number; + // retries: number; + }; +} +//************************************************ */ +interface INotifySmsPayload { + [key: string]: string | number | Date; +} +interface INotifySms { + phone: string; + subject: NotifTitleEnum; +} +export interface IInAppNotificationPayload { + notificationId: string; + subject: NotifTitleEnum; + body: string; +} + +// 2. Payment Success +interface IPaymentSuccessSmsNotifyPayload extends INotifySmsPayload { + amount: number; + date: Date; +} + +interface IPaymentSuccessSmsNotify extends INotifySms { + subject: NotifTitleEnum.PAYMENT_SUCCESS; + payload: IPaymentSuccessSmsNotifyPayload; +} + +export type ISmsNotifyPayload = IPaymentSuccessSmsNotify; diff --git a/src/modules/notifications/interfaces/sms.ts b/src/modules/notifications/interfaces/sms.ts new file mode 100644 index 0000000..fd0a746 --- /dev/null +++ b/src/modules/notifications/interfaces/sms.ts @@ -0,0 +1,16 @@ +export interface ISmsResponse { + status: number; + message: string; +} + +export interface ISmsParams { + phone: string; + parameters?: Record; + templateId: string; +} + +export interface ISmsBodyParameters { + Mobile: string; + TemplateId: string; + Parameters: { name: string; value: string }[]; +} diff --git a/src/modules/notifications/listeners/sms.listeners.ts b/src/modules/notifications/listeners/sms.listeners.ts new file mode 100644 index 0000000..8c2a842 --- /dev/null +++ b/src/modules/notifications/listeners/sms.listeners.ts @@ -0,0 +1,55 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { OnEvent } from '@nestjs/event-emitter'; +import { SmsSentEvent } from '../events/sms.events'; +import { RestRepository } from '../../restaurants/repositories/rest.repository'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { SmsLog } from '../entities/smsLogs.entity'; + +@Injectable() +export class SmsListeners { + private readonly logger = new Logger(SmsListeners.name); + + constructor( + private readonly restRepository: RestRepository, + private readonly em: EntityManager, + ) { + } + + @OnEvent(SmsSentEvent.name) + async handleSmsSent(event: SmsSentEvent) { + try { + this.logger.log( + `SMS sent event received: phone ${event.phoneNumber} for restaurant: ${event.restaurantId}`, + ); + + // Get the restaurant entity + const restaurant = await this.restRepository.findOne({ id: event.restaurantId }); + + if (!restaurant) { + this.logger.warn( + `Restaurant not found for SMS log: ${event.restaurantId}`, + ); + return; + } + + // Create SMS log record + const smsLog = this.em.create(SmsLog, { + restaurant: restaurant, + phone: event.phoneNumber, + createdAt: new Date(), + }); + + await this.em.flush(); + + this.logger.log( + `SMS log created successfully: ${smsLog.id} for phone ${event.phoneNumber}`, + ); + } catch (error) { + this.logger.error( + `Failed to create SMS log for event: ${event.restaurantId}`, + error instanceof Error ? error.stack : String(error), + ); + } + } + +} \ No newline at end of file diff --git a/src/modules/notifications/notifications.gateway.ts b/src/modules/notifications/notifications.gateway.ts new file mode 100644 index 0000000..2bbd80d --- /dev/null +++ b/src/modules/notifications/notifications.gateway.ts @@ -0,0 +1,115 @@ +import { + WebSocketGateway, + WebSocketServer, + // SubscribeMessage, + OnGatewayConnection, + OnGatewayDisconnect, + // MessageBody, + // ConnectedSocket, +} from '@nestjs/websockets'; +import { Server, Socket } from 'socket.io'; +import { Logger, Inject, forwardRef } from '@nestjs/common'; +import { NotificationService } from './services/notification.service'; +import { WsAdminAuthGuard, type AuthenticatedSocket } from './guards/ws-admin-auth.guard'; +import { ModuleRef } from '@nestjs/core'; +import { ExecutionContext } from '@nestjs/common'; +import { IInAppNotificationPayload } from './interfaces/notification.interface'; + +@WebSocketGateway({ + cors: { + origin: true, + credentials: true, + }, + namespace: '/notifications', + transports: ['websocket', 'polling'], +}) +export class NotificationsGateway implements OnGatewayConnection, OnGatewayDisconnect { + @WebSocketServer() + server!: Server; + + private readonly logger = new Logger(NotificationsGateway.name); + private readonly pingIntervals = new Map(); + + constructor( + @Inject(forwardRef(() => NotificationService)) + private readonly notificationService: NotificationService, + private readonly moduleRef: ModuleRef, + ) {} + + async handleConnection(client: Socket) { + try { + await this.authenticateConnection(client); + const authenticatedClient = client as AuthenticatedSocket; + this.logger.log(`Admin connected: ${authenticatedClient.adminId}`); + this.handleJoinRoom(authenticatedClient); + + // Start ping interval for this client + // const intervalId = setInterval(() => { + // void authenticatedClient.emit('ping', { message: 'ping', timestamp: new Date().toISOString() }); + // }, 2000); + + // this.pingIntervals.set(client.id, intervalId); + } catch (error) { + this.logger.error( + `Connection authentication failed: ${error instanceof Error ? error.message : 'Unknown error'}`, + ); + void client.emit('error', { message: 'Authentication failed' }); + client.disconnect(); + } + } + + handleDisconnect(client: Socket) { + this.logger.log(`Client disconnected: ${client.id}`); + this.handleLeaveRoom(client); + + // Clear ping interval for this client + // const intervalId = this.pingIntervals.get(client.id); + // if (intervalId) { + // clearInterval(intervalId); + // this.pingIntervals.delete(client.id); + // } + } + + sendInAppNotification(repipient: { adminId: string; restaurantId: string }, payload: IInAppNotificationPayload) { + const room = this.getRoom(repipient.adminId, repipient.restaurantId); + + this.logger.log(`Sending in app notification to admin: ${repipient.adminId}`); + this.server.to(room).emit('notifications', payload, async () => { + // 3. ACK (delivered) + // await this.notificationService.markAsDelivered(payload.notificationId); + }); + this.logger.log(`In app notification sent to admin: ${repipient.adminId}`); + } + + private getRoom(adminId: string, restaurantId: string) { + return `restaurant:${restaurantId}-admin:${adminId}`; + } + + handleLeaveRoom(client: AuthenticatedSocket) { + const room = this.getRoom(client.adminId!, client.restId!); + void client.leave(room); + this.logger.log(`Admin ${client.adminId} (Client ${client.id}) left room: ${room}`); + void client.emit('left', { room, message: 'Successfully Admin left room' }); + } + + handleJoinRoom(client: AuthenticatedSocket) { + const room = this.getRoom(client.adminId!, client.restId!); + void client.join(room); + this.logger.log(`Admin ${client.adminId} (Client ${client.id}) joined room: ${room}`); + void client.emit('joined', { room, message: 'Successfully Admin joined room' }); + } + + private async authenticateConnection(client: Socket): Promise { + const guard = this.moduleRef.get(WsAdminAuthGuard); + const context = { + switchToWs: () => ({ getClient: () => client }), + getClass: () => NotificationsGateway, + getHandler: () => this.handleConnection, + } as unknown as ExecutionContext; + + const canActivate = await guard.canActivate(context); + if (!canActivate) { + throw new Error('Authentication failed'); + } + } +} diff --git a/src/modules/notifications/notifications.module.ts b/src/modules/notifications/notifications.module.ts new file mode 100644 index 0000000..c99a1ae --- /dev/null +++ b/src/modules/notifications/notifications.module.ts @@ -0,0 +1,76 @@ +import { Module, forwardRef } from '@nestjs/common'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { BullModule } from '@nestjs/bullmq'; +import { JwtModule } from '@nestjs/jwt'; +import { Notification } from './entities/notification.entity'; +import { NotificationPreference } from './entities/notification-preference.entity'; +import { NotificationService } from './services/notification.service'; +import { NotificationPreferenceService } from './services/notification-preference.service'; +import { NotificationQueueService } from './services/notification-queue.service'; +import { PushNotificationService } from './services/push-notification.service'; +import { SmsProcessor } from './processors/sms.processor'; +import { PushProcessor } from './processors/push.processor'; +import { NotificationsController } from './controllers/notifications.controller'; +import { User } from '../users/entities/user.entity'; +import { Restaurant } from '../restaurants/entities/restaurant.entity'; +import { AuthModule } from '../auth/auth.module'; +import { ConfigService } from '@nestjs/config'; +import { NotificationQueueNameEnum } from './constants/queue'; +import { UtilsModule } from '../utils/utils.module'; +import { NotificationsGateway } from './notifications.gateway'; +import { WsAdminAuthGuard } from './guards/ws-admin-auth.guard'; +import { InAppProcessor } from './processors/in-app.processor'; +import { AdminModule } from '../admin/admin.module'; +import { UserModule } from '../users/user.module'; +import { NotificationCrone } from './crone/notification.crone'; +import { SmsService } from './services/sms.service'; +import { SmsLog } from './entities/smsLogs.entity'; +import { SmsLogRepository } from './repositories/sms-log.repository'; +import { RestaurantsModule } from '../restaurants/restaurants.module'; +import { SmsListeners } from './listeners/sms.listeners'; + +@Module({ + imports: [ + forwardRef(() => AuthModule), + JwtModule, + MikroOrmModule.forFeature([Notification, NotificationPreference, User, Restaurant, SmsLog]), + BullModule.registerQueue( + { name: NotificationQueueNameEnum.SMS }, + { name: NotificationQueueNameEnum.PUSH }, + { name: NotificationQueueNameEnum.IN_APP }, + ), + BullModule.forRootAsync({ + inject: [ConfigService], + useFactory: (config: ConfigService) => ({ + connection: { + host: config.get('REDIS_HOST') || 'captain.dev.danakcorp.com', + port: config.get('REDIS_PORT') || 50601, + password: config.get('REDIS_PASSWORD'), // Pull from .env + }, + }), + }), + AdminModule, + forwardRef(() => UserModule), + UtilsModule, + forwardRef(() => RestaurantsModule), + ], + controllers: [NotificationsController], + providers: [ + NotificationService, + NotificationPreferenceService, + NotificationQueueService, + PushNotificationService, + PushProcessor, + SmsProcessor, + InAppProcessor, + NotificationsGateway, + WsAdminAuthGuard, + NotificationCrone, + SmsService, + SmsLogRepository, + SmsListeners, + ], + exports: [NotificationService, NotificationPreferenceService, + NotificationQueueService, PushNotificationService, SmsService], +}) +export class NotificationsModule { } diff --git a/src/modules/notifications/processors/in-app.processor.ts b/src/modules/notifications/processors/in-app.processor.ts new file mode 100644 index 0000000..45c23df --- /dev/null +++ b/src/modules/notifications/processors/in-app.processor.ts @@ -0,0 +1,50 @@ +import { Processor, WorkerHost, OnWorkerEvent } from '@nestjs/bullmq'; +import { Logger } from '@nestjs/common'; +import { Job } from 'bullmq'; +import { InjectRepository } from '@mikro-orm/nestjs'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { Notification } from '../entities/notification.entity'; +import { InAppNotificationQueueJob } from '../interfaces/jobs-queue.interface'; +import { NotificationQueueNameEnum } from '../constants/queue'; +import { NotificationsGateway } from '../notifications.gateway'; + +@Processor(NotificationQueueNameEnum.IN_APP) +export class InAppProcessor extends WorkerHost { + private readonly logger = new Logger(InAppProcessor.name); + + constructor( + @InjectRepository(Notification) + private readonly em: EntityManager, + private readonly notificationsGateway: NotificationsGateway, + ) { + super(); + } + + async process(job: Job): Promise { + const { recipient, subject, body, notificationId } = job.data; + + this.logger.log(`Processing InApp notification - Recipient: ${JSON.stringify(recipient)}, subject: ${subject}`); + + try { + this.notificationsGateway.sendInAppNotification( + { adminId: recipient.adminId, restaurantId: recipient.restaurantId }, + { subject, body, notificationId }, + ); + + this.logger.log(`InApp notification sent successfully to ${recipient.adminId}`); + } catch (error) { + this.logger.error(`Error processing InApp notification job ${job.id}:`, error); + throw error; + } + } + + @OnWorkerEvent('completed') + onCompleted(job: Job) { + this.logger.log(`Notification job ${job.id} completed`); + } + + @OnWorkerEvent('failed') + onFailed(job: Job, error: Error) { + this.logger.error(`Notification job ${job.id} failed:`, error); + } +} diff --git a/src/modules/notifications/processors/push.processor.ts b/src/modules/notifications/processors/push.processor.ts new file mode 100644 index 0000000..756ca05 --- /dev/null +++ b/src/modules/notifications/processors/push.processor.ts @@ -0,0 +1,96 @@ +import { Processor, WorkerHost, OnWorkerEvent } from '@nestjs/bullmq'; +import { Logger } from '@nestjs/common'; +import { Job } from 'bullmq'; +import { InjectRepository } from '@mikro-orm/nestjs'; +import { EntityRepository, EntityManager } from '@mikro-orm/postgresql'; +import { Notification } from '../entities/notification.entity'; +import { PushNotificationQueueJob } from '../interfaces/jobs-queue.interface'; +import { NotificationQueueNameEnum } from '../constants/queue'; +import { PushNotificationService } from '../services/push-notification.service'; + +@Processor(NotificationQueueNameEnum.PUSH) +export class PushProcessor extends WorkerHost { + private readonly logger = new Logger(PushProcessor.name); + + constructor( + @InjectRepository(Notification) + private readonly notificationRepository: EntityRepository, + private readonly em: EntityManager, + private readonly pushNotificationService: PushNotificationService, + ) { + super(); + } + + async process(job: Job) { + const { title, content, action, pushToken, pushTokens } = job.data; + + this.logger.log(`Processing push notification job: ${job.id} - Title: ${title},`); + + try { + // Get push token from job data + const pushToken = job.data.pushToken; + const pushTokens = job.data.pushTokens; + + if (!pushToken && (!pushTokens || pushTokens.length === 0)) { + this.logger.warn(`Push token(s) not provided for notification `); + throw new Error('Push token or pushTokens array is required for push notifications'); + } + + // Send push notification + // Convert NotificationTitle enum to a readable string for the notification title + const notificationTitle = String(title) + .replace(/\./g, ' ') + .replace(/\b\w/g, l => l.toUpperCase()); + + let pushResult; + if (pushTokens && pushTokens.length > 0) { + // Send to multiple tokens + pushResult = await this.pushNotificationService.sendToMultipleTokens({ + title: notificationTitle, + body: content, + tokens: pushTokens, + data: { + action, + }, + }); + } else if (pushToken) { + // Send to single token + pushResult = await this.pushNotificationService.sendToToken({ + title: notificationTitle, + body: content, + token: pushToken, + data: { + action, + }, + }); + } else { + throw new Error('Push token or pushTokens array is required'); + } + + if (!pushResult.success) { + throw new Error(pushResult.error || 'Failed to send push notification'); + } + + this.logger.log(`Push notification sent successfully`); + + return { + success: true, + + providerResponse: { messageId: pushResult.messageId }, + }; + } catch (error) { + this.logger.error(`Error processing push notification job ${job.id}:`, error); + throw error; + } + } + + @OnWorkerEvent('completed') + onCompleted(job: Job) { + this.logger.log(`Notification job ${job.id} completed`); + } + + @OnWorkerEvent('failed') + onFailed(job: Job, error: Error) { + this.logger.error(`Notification job ${job.id} failed:`, error); + } +} diff --git a/src/modules/notifications/processors/sms.processor.ts b/src/modules/notifications/processors/sms.processor.ts new file mode 100644 index 0000000..0846e2b --- /dev/null +++ b/src/modules/notifications/processors/sms.processor.ts @@ -0,0 +1,81 @@ +import { Processor, WorkerHost, OnWorkerEvent } from '@nestjs/bullmq'; +import { Logger } from '@nestjs/common'; +import { Job } from 'bullmq'; +import { UserRepository } from 'src/modules/users/repositories/user.repository'; +import { SmsNotificationQueueJob } from '../interfaces/jobs-queue.interface'; +import { AdminRepository } from 'src/modules/admin/repositories/admin.repository'; +import { NotificationQueueNameEnum } from '../constants/queue'; +import { SmsService } from '../services/sms.service'; +import { SmsSentEvent } from '../events/sms.events'; +import { EventEmitter2 } from '@nestjs/event-emitter'; + +@Processor(NotificationQueueNameEnum.SMS) +export class SmsProcessor extends WorkerHost { + private readonly logger = new Logger(SmsProcessor.name); + + constructor( + private readonly adminRepository: AdminRepository, + private readonly userRepository: UserRepository, + private readonly smsService: SmsService, + private readonly eventEmitter: EventEmitter2, + ) { + super(); + } + + async process(job: Job) { + const { recipient, templateId, parameters, restaurantId } = job.data; + + this.logger.log(`Processing SMS notification - Recipient: ${JSON.stringify(recipient)}, templateID: ${templateId}`); + + try { + let phone!: string; + if ('userId' in recipient) { + const user = await this.userRepository.findOne({ id: recipient.userId }); + if (!user || !user.phone) { + this.logger.warn(`User ${recipient.userId} not found or has no phone number`); + throw new Error('User phone number is required for SMS notifications'); + } + phone = user.phone; + } + if ('adminId' in recipient) { + const admin = await this.adminRepository.findOne({ id: recipient.adminId }); + if (!admin || !admin.phone) { + this.logger.warn(`Admin ${recipient.adminId} not found or has no phone number`); + throw new Error('Admin phone number is required for SMS notifications'); + } + phone = admin.phone; + } + if (!phone) { + this.logger.warn(`Phone number not found for recipient ${JSON.stringify(recipient)}`); + throw new Error('Phone number is required for SMS notifications'); + } + // Send SMS notification + await this.smsService.sendSms({ + phone, + templateId, + parameters, + }); + + this.logger.log(`SMS notification sent successfully to ${phone}`); + + this.eventEmitter.emit(SmsSentEvent.name, new SmsSentEvent(phone, restaurantId)); + + return { + success: true, + }; + } catch (error) { + this.logger.error(`Error processing SMS notification job ${job.id}:`, error); + throw error; + } + } + + @OnWorkerEvent('completed') + onCompleted(job: Job) { + this.logger.log(`Notification job ${job.id} completed`); + } + + @OnWorkerEvent('failed') + onFailed(job: Job, error: Error) { + this.logger.error(`Notification job ${job.id} failed:`, error); + } +} diff --git a/src/modules/notifications/repositories/sms-log.repository.ts b/src/modules/notifications/repositories/sms-log.repository.ts new file mode 100644 index 0000000..6076a29 --- /dev/null +++ b/src/modules/notifications/repositories/sms-log.repository.ts @@ -0,0 +1,76 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { SmsLog } from '../entities/smsLogs.entity'; +import { PaginatedResult } from '../../../common/interfaces/pagination.interface'; + +@Injectable() +export class SmsLogRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, SmsLog); + } + + async getSmsCountByRestaurant( + page: number = 1, + limit: number = 10, + ): Promise> { + const offset = (page - 1) * limit; + + // Get total count of unique restaurants with SMS logs + const totalResult = await this.em.execute( + ` + SELECT COUNT(DISTINCT sl.restaurant_id) as total + FROM sms_logs sl + WHERE sl.restaurant_id IS NOT NULL + `, + ); + const total = parseInt(totalResult[0]?.total || '0', 10); + + // Get paginated results with SMS counts grouped by restaurant + const results = await this.em.execute( + ` + SELECT + r.id as "restaurantId", + r.name as "restaurantName", + COUNT(sl.id)::int as "smsCount" + FROM sms_logs sl + INNER JOIN restaurants r ON sl.restaurant_id = r.id + GROUP BY r.id, r.name + ORDER BY "smsCount" DESC, r.name ASC + LIMIT ? OFFSET ? + `, + [limit, offset], + ); + + const data = results.map((row: any) => ({ + restaurantId: row.restaurantId, + restaurantName: row.restaurantName || 'Unknown', + smsCount: parseInt(row.smsCount || '0', 10), + })); + + const totalPages = Math.ceil(total / limit); + + return { + data, + meta: { + total, + page, + limit, + totalPages, + }, + }; + } + + async getSmsCountByRestaurantId(restaurantId: string): Promise { + const result = await this.em.execute( + ` + SELECT COUNT(sl.id)::int as "smsCount" + FROM sms_logs sl + WHERE sl.restaurant_id = ? + `, + [restaurantId], + ); + + return parseInt(result[0]?.smsCount || '0', 10); + } +} + diff --git a/src/modules/notifications/services/notification-preference.service.ts b/src/modules/notifications/services/notification-preference.service.ts new file mode 100644 index 0000000..afe4477 --- /dev/null +++ b/src/modules/notifications/services/notification-preference.service.ts @@ -0,0 +1,85 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { NotificationPreference } from '../entities/notification-preference.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { CreatePreferenceDto } from '../dto/create-preference.dto'; +import { UpdatePreferenceDto } from '../dto/update-preference.dto'; +import { NotifTitleEnum } from '../interfaces/notification.interface'; + +@Injectable() +export class NotificationPreferenceService { + constructor(private readonly em: EntityManager) { } + + async create(restaurantId: string, dto: CreatePreferenceDto): Promise { + const restaurant = await this.em.findOne(Restaurant, { id: restaurantId }); + if (!restaurant) { + throw new NotFoundException('Restaurant not found'); + } + + const preference = this.em.create(NotificationPreference, { + restaurant, + channels: dto.channels, + title: dto.title, + }); + + await this.em.persistAndFlush(preference); + return preference; + } + + async findByRestaurant(restaurantId: string): Promise { + return this.em.find(NotificationPreference, { + restaurant: { id: restaurantId }, + }); + } + + async findByRestaurantAndType(restaurantId: string, title: NotifTitleEnum): Promise { + return this.em.findOne(NotificationPreference, { + restaurant: { id: restaurantId }, + title, + }); + } + + // async updateEnabled( + // restaurantId: string, + // notificationType: string, + // enabled: boolean, + // ): Promise { + // const preference = await this.findByRestaurantAndType(restaurantId, notificationType); + // if (!preference) { + // throw new NotFoundException('Notification preference not found'); + // } + + // preference.enabled = enabled; + // await this.em.persistAndFlush(preference); + // return preference; + // } + + async updatePreference( + preferenceId: string, + restaurantId: string, + dto: UpdatePreferenceDto, + ): Promise { + const preference = await this.em.findOne(NotificationPreference, { + id: preferenceId, + restaurant: { id: restaurantId }, + }); + if (!preference) { + throw new NotFoundException('Notification preference not found'); + } + + this.em.assign(preference, dto); + await this.em.persistAndFlush(preference); + return preference; + } + + async delete(restaurantId: string, preferenceId: string): Promise { + const preference = await this.em.findOne(NotificationPreference, { + restaurant: { id: restaurantId }, + id: preferenceId, + }); + if (!preference) { + throw new NotFoundException('Notification preference not found'); + } + await this.em.removeAndFlush(preference); + } +} diff --git a/src/modules/notifications/services/notification-queue.service.ts b/src/modules/notifications/services/notification-queue.service.ts new file mode 100644 index 0000000..d556c51 --- /dev/null +++ b/src/modules/notifications/services/notification-queue.service.ts @@ -0,0 +1,145 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { InjectQueue } from '@nestjs/bullmq'; +import { Queue } from 'bullmq'; +import { NotificationQueueNameEnum } from '../constants/queue'; +import { + InAppNotificationQueueJob, + PushNotificationQueueJob, + SmsNotificationQueueJob, +} from '../interfaces/jobs-queue.interface'; + +@Injectable() +export class NotificationQueueService { + private readonly logger = new Logger(NotificationQueueService.name); + + constructor( + @InjectQueue(NotificationQueueNameEnum.SMS) private readonly smsQueue: Queue, + @InjectQueue(NotificationQueueNameEnum.PUSH) private readonly pushQueue: Queue, + @InjectQueue(NotificationQueueNameEnum.IN_APP) private readonly inAppQueue: Queue, + ) {} + + async addSmsNotification(job: SmsNotificationQueueJob): Promise { + try { + const jobId = `${job.templateId}-${this.generateRandomInt()}-${Date.now()}`; + + await this.smsQueue.add('sms-notification', job, { + jobId, + attempts: 3, + backoff: { + type: 'exponential', + delay: 2000, + }, + removeOnComplete: { + age: 24 * 3600, // Keep completed jobs for 24 hours + count: 1000, + }, + removeOnFail: { + age: 7 * 24 * 3600, // Keep failed jobs for 7 days + }, + }); + + this.logger.log(`SMS notification job added to queue: ${jobId}`); + } catch (error) { + this.logger.error(`Failed to add SMS notification to queue:`, error); + throw error; + } + } + + async addPushNotification(job: PushNotificationQueueJob): Promise { + try { + const jobId = `${job.title}-${this.generateRandomInt()}-${Date.now()}`; + + await this.pushQueue.add('push-notification', job, { + jobId, + attempts: 3, + backoff: { + type: 'exponential', + delay: 2000, + }, + removeOnComplete: { + age: 24 * 3600, // Keep completed jobs for 24 hours + count: 1000, + }, + removeOnFail: { + age: 7 * 24 * 3600, // Keep failed jobs for 7 days + }, + }); + + this.logger.log(`Push notification job added to queue: ${jobId}`); + } catch (error) { + this.logger.error(`Failed to add push notification to queue:`, error); + throw error; + } + } + + async addBulkSmsNotifications(jobs: SmsNotificationQueueJob[]): Promise { + try { + const queueJobs = jobs.map(job => ({ + name: 'sms-notification', + data: job, + opts: { + jobId: `${job.templateId}-${this.generateRandomInt()}`, + attempts: 3, + backoff: { + type: 'exponential', + delay: 2000, + }, + }, + })); + + await this.smsQueue.addBulk(queueJobs); + this.logger.log(`Added ${jobs.length} SMS notification jobs to queue`); + } catch (error) { + this.logger.error(`Failed to add bulk notifications to queue:`, error); + throw error; + } + } + + async addBulkPushNotifications(jobs: PushNotificationQueueJob[]): Promise { + try { + const queueJobs = jobs.map(job => ({ + name: 'push-notification', + data: job, + opts: { + jobId: `${job.title}-${this.generateRandomInt()}-${Date.now()}`, + attempts: 3, + backoff: { + type: 'exponential', + delay: 2000, + }, + }, + })); + + await this.pushQueue.addBulk(queueJobs); + this.logger.log(`Added ${jobs.length} Push notification jobs to queue`); + } catch (error) { + this.logger.error(`Failed to add bulk notifications to queue:`, error); + throw error; + } + } + async addBulkInAppNotifications(jobs: InAppNotificationQueueJob[]): Promise { + try { + const queueJobs = jobs.map(job => ({ + name: 'in-app-notification', + data: job, + opts: { + jobId: `${job.subject}-${job.notificationId}-${Date.now()}`, + attempts: 3, + backoff: { + type: 'exponential', + delay: 2000, + }, + }, + })); + + await this.inAppQueue.addBulk(queueJobs); + this.logger.log(`Added ${jobs.length} InApp notification jobs to queue`); + } catch (error) { + this.logger.error(`Failed to add bulk notifications to queue:`, error); + throw error; + } + } + private generateRandomInt(): string { + return Math.random().toString(36).substring(2, 15); + } +} diff --git a/src/modules/notifications/services/notification.service.ts b/src/modules/notifications/services/notification.service.ts new file mode 100644 index 0000000..6c7e243 --- /dev/null +++ b/src/modules/notifications/services/notification.service.ts @@ -0,0 +1,282 @@ +import { Injectable, Logger, NotFoundException } from '@nestjs/common'; +import { EntityManager, FilterQuery } from '@mikro-orm/postgresql'; +import { Notification } from '../entities/notification.entity'; +import { NotificationPreferenceService } from './notification-preference.service'; +import { NotificationQueueService } from './notification-queue.service'; +import { NotificationsGateway } from '../notifications.gateway'; +import { NotifChannelEnum, NotifRequest, NotifTitleEnum } from '../interfaces/notification.interface'; +import { SmsLog } from '../entities/smsLogs.entity'; +import { SmsLogRepository } from '../repositories/sms-log.repository'; +import { PaginatedResult } from '../../../common/interfaces/pagination.interface'; + +@Injectable() +export class NotificationService { + private readonly logger = new Logger(NotificationService.name); + + constructor( + private readonly em: EntityManager, + private readonly preferenceService: NotificationPreferenceService, + private readonly queueService: NotificationQueueService, + private readonly notificationGateway: NotificationsGateway, + private readonly smsLogRepository: SmsLogRepository, + ) { } + + async sendNotification(params: NotifRequest): Promise { + const { recipients, message, metadata, restaurantId } = params; + + // create Database notifications + const notifications = await this.createAdminBulkNotifications( + recipients.map(recipient => ({ + restaurantId, + title: message.title, + content: message.content, + adminId: 'adminId' in recipient ? recipient.adminId : null, + userId: 'userId' in recipient ? recipient.userId : null, + })), + ); + + // get admin prefrences + const preference = await this.preferenceService.findByRestaurantAndType(restaurantId, message.title); + + if (preference?.channels?.length === 0) { + this.logger.warn(`Notification type is NONE for restaurant ${restaurantId}, title ${message.title}`); + return notifications; + } + + // send in app notification + if (preference?.channels?.includes(NotifChannelEnum.IN_APP)) { + await this.queueService.addBulkInAppNotifications( + notifications.map(notification => ({ + recipient: { adminId: notification.admin?.id || '', restaurantId }, + subject: message.title, + body: message.content, + notificationId: notification.id, + })), + ); + } + + // add sms notifications to queue + if (preference?.channels?.includes(NotifChannelEnum.SMS)) { + await this.queueService.addBulkSmsNotifications( + recipients.map(recipient => ({ + recipient, + templateId: message.sms.templateId, + parameters: message.sms.parameters, + restaurantId, + })), + ); + } + + this.logger.log(`Queued notification for restaurant ${restaurantId}, title ${message.title}`); + + return notifications; + } + + async createAdminBulkNotifications( + params: { + restaurantId: string; + title: NotifTitleEnum; + content: string; + adminId: string | null; + userId: string | null; + }[], + ): Promise { + const notifications = params.map(param => { + return this.em.create(Notification, { + restaurant: param.restaurantId, + admin: param.adminId, + user: param.userId && param.userId.trim() !== '' ? param.userId : null, + title: param.title, + content: param.content, + }); + }); + await this.em.persistAndFlush(notifications); + return notifications; + } + + async findOne(id: string): Promise { + const notification = await this.em.findOne(Notification, { id }, { populate: ['restaurant', 'user'] }); + if (!notification) { + throw new NotFoundException('Notification not found'); + } + return notification; + } + + async findByRestaurant( + restaurantId: string, + adminId: string, + limit = 50, + cursor?: string, + status?: 'seen' | 'unseen', + ): Promise<{ data: Notification[]; nextCursor: string | null }> { + const where: FilterQuery = { + restaurant: { id: restaurantId }, + admin: { id: adminId }, + }; + + // Filter by status (seen/unseen) + if (status === 'seen') { + where.seenAt = { $ne: null }; + } else if (status === 'unseen') { + where.seenAt = null; + } + + // Cursor-based pagination: if cursor is provided, get items with id < cursor + if (cursor) { + where.id = { $lt: cursor }; + } + + const notifications = await this.em.find(Notification, where, { + orderBy: { createdAt: 'DESC', id: 'DESC' }, + limit: limit + 1, // fetch one extra to determine next page + populate: ['user'], + }); + + const hasNextPage = notifications.length > limit; + const data = hasNextPage ? notifications.slice(0, limit) : notifications; + const nextCursor = hasNextPage && data.length > 0 ? data[data.length - 1].id : null; + + return { + data, + nextCursor: nextCursor ?? null, + }; + } + + async findByUserAndRestaurant( + userId: string, + restaurantId: string, + limit = 50, + cursor?: string, + status?: 'seen' | 'unseen', + ): Promise<{ data: Notification[]; nextCursor: string | null }> { + const where: FilterQuery = { + user: { id: userId }, + restaurant: { id: restaurantId }, + }; + + // Filter by status (seen/unseen) + if (status === 'seen') { + where.seenAt = { $ne: null }; + } else if (status === 'unseen') { + where.seenAt = null; + } + + // Cursor-based pagination: if cursor is provided, get items with id < cursor (since ULIDs are time-ordered) + if (cursor) { + where.id = { $lt: cursor }; + } + + const notifications = await this.em.find(Notification, where, { + orderBy: { createdAt: 'DESC', id: 'DESC' }, + limit: limit + 1, // Fetch one extra to determine if there's a next page + }); + + // Check if there's a next page + const hasNextPage = notifications.length > limit; + const data = hasNextPage ? notifications.slice(0, limit) : notifications; + const nextCursor = hasNextPage && data.length > 0 ? data[data.length - 1].id : null; + + return { + data, + nextCursor: nextCursor ?? null, + }; + } + + async readNotificationAdmin(id: string, adminId: string, restaurantId: string): Promise { + const notification = await this.em.findOne(Notification, { + id, + admin: { id: adminId }, + restaurant: { id: restaurantId }, + }); + if (!notification) { + throw new NotFoundException('Notification not found'); + } + notification.seenAt = new Date(); + await this.em.persistAndFlush(notification); + } + async readNotificationAsUser(id: string, userId: string, restaurantId: string): Promise { + const notification = await this.em.findOne(Notification, { + id, + user: { id: userId }, + restaurant: { id: restaurantId }, + }); + if (!notification) { + throw new NotFoundException('Notification not found'); + } + notification.seenAt = new Date(); + await this.em.persistAndFlush(notification); + } + + async findByRestaurantAndType(restaurantId: string, title: NotifTitleEnum, limit = 50): Promise { + return this.em.find( + Notification, + { + restaurant: { id: restaurantId }, + title, + }, + { + orderBy: { createdAt: 'DESC' }, + limit, + populate: ['user'], + }, + ); + } + + async findByAdminAndRestaurant(adminId: string, restaurantId: string, limit = 50): Promise { + return this.em.find( + Notification, + { admin: { id: adminId }, restaurant: { id: restaurantId } }, + { + orderBy: { createdAt: 'DESC' }, + limit, + }, + ); + } + + async countUnseenByUserAndRestaurant(userId: string, restaurantId: string): Promise { + const where: FilterQuery = { + user: { id: userId }, + restaurant: { id: restaurantId }, + seenAt: null, + }; + return this.em.count(Notification, where); + } + + async countUnseenByRestaurant(adminId: string, restaurantId: string): Promise { + const where: FilterQuery = { + admin: { id: adminId }, + restaurant: { id: restaurantId }, + seenAt: null, + }; + return this.em.count(Notification, where); + } + + readAllNotifsAsUser(userId: string, restaurantId: string): Promise { + const where: FilterQuery = { + user: { id: userId }, + restaurant: { id: restaurantId }, + seenAt: null, + }; + return this.em.nativeUpdate(Notification, where, { seenAt: new Date() }); + } + + readAllNotifsAsAdmin(adminId: string, restaurantId: string): Promise { + const where: FilterQuery = { + admin: { id: adminId }, + restaurant: { id: restaurantId }, + seenAt: null, + }; + return this.em.nativeUpdate(Notification, where, { seenAt: new Date() }); + } + + async getSmsCountByRestaurant( + page: number = 1, + limit: number = 10, + ): Promise> { + return this.smsLogRepository.getSmsCountByRestaurant(page, limit); + } + + async getSmsCountByRestaurantId(restaurantId: string): Promise { + return this.smsLogRepository.getSmsCountByRestaurantId(restaurantId); + } +} diff --git a/src/modules/notifications/services/push-notification.service.ts b/src/modules/notifications/services/push-notification.service.ts new file mode 100644 index 0000000..e62c16c --- /dev/null +++ b/src/modules/notifications/services/push-notification.service.ts @@ -0,0 +1,148 @@ +import { Injectable, Logger, HttpException, HttpStatus } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import * as admin from 'firebase-admin'; + +export interface PushNotificationPayload { + title: string; + body: string; + data?: Record; + token?: string; + tokens?: string[]; +} + +export interface PushNotificationResponse { + success: boolean; + messageId?: string; + error?: string; +} + +@Injectable() +export class PushNotificationService { + private readonly logger = new Logger(PushNotificationService.name); + private firebaseApp: admin.app.App | null = null; + + constructor(private readonly configService: ConfigService) { + this.initializeFirebase(); + } + + private initializeFirebase() { + try { + const firebaseConfig = this.configService.get('FIREBASE_SERVICE_ACCOUNT'); + + if (!firebaseConfig) { + this.logger.warn('Firebase service account not configured. Push notifications will be disabled.'); + return; + } + + // Parse the service account JSON + const serviceAccount = JSON.parse(firebaseConfig); + + if (!this.firebaseApp) { + this.firebaseApp = admin.initializeApp({ + credential: admin.credential.cert(serviceAccount), + }); + this.logger.log('Firebase initialized successfully'); + } + } catch (error) { + this.logger.error('Failed to initialize Firebase:', error); + this.logger.warn('Push notifications will be disabled'); + } + } + + async sendToToken(payload: PushNotificationPayload): Promise { + if (!this.firebaseApp || !payload.token) { + throw new HttpException( + 'Push notification service not configured or token missing', + HttpStatus.SERVICE_UNAVAILABLE, + ); + } + + try { + const message: admin.messaging.Message = { + notification: { + title: payload.title, + body: payload.body, + }, + data: this.convertDataToString(payload.data || {}), + token: payload.token, + android: { + priority: 'high', + }, + apns: { + headers: { + 'apns-priority': '10', + }, + }, + }; + + const response = await admin.messaging().send(message); + this.logger.log(`Push notification sent successfully: ${response}`); + + return { + success: true, + messageId: response, + }; + } catch (error) { + this.logger.error(`Failed to send push notification: ${error}`); + return { + success: false, + error: error instanceof Error ? error.message : 'Unknown error', + }; + } + } + + async sendToMultipleTokens(payload: PushNotificationPayload): Promise { + if (!this.firebaseApp || !payload.tokens || payload.tokens.length === 0) { + throw new HttpException( + 'Push notification service not configured or tokens missing', + HttpStatus.SERVICE_UNAVAILABLE, + ); + } + + try { + const message: admin.messaging.MulticastMessage = { + notification: { + title: payload.title, + body: payload.body, + }, + data: this.convertDataToString(payload.data || {}), + tokens: payload.tokens, + android: { + priority: 'high', + }, + apns: { + headers: { + 'apns-priority': '10', + }, + }, + }; + + const response = await admin.messaging().sendEachForMulticast(message); + this.logger.log(`Push notifications sent: ${response.successCount} successful, ${response.failureCount} failed`); + + return { + success: response.successCount > 0, + messageId: response.responses[0]?.messageId, + error: response.failureCount > 0 ? `${response.failureCount} notifications failed` : undefined, + }; + } catch (error) { + this.logger.error(`Failed to send push notifications: ${error}`); + return { + success: false, + error: error instanceof Error ? error.message : 'Unknown error', + }; + } + } + + private convertDataToString(data: Record): Record { + const result: Record = {}; + for (const [key, value] of Object.entries(data)) { + result[key] = typeof value === 'string' ? value : JSON.stringify(value); + } + return result; + } + + isConfigured(): boolean { + return this.firebaseApp !== null; + } +} diff --git a/src/modules/notifications/services/sms.service.ts b/src/modules/notifications/services/sms.service.ts new file mode 100644 index 0000000..996664b --- /dev/null +++ b/src/modules/notifications/services/sms.service.ts @@ -0,0 +1,80 @@ +import { Injectable, HttpException, HttpStatus } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import axios from 'axios'; +import { ISmsParams, ISmsResponse, ISmsBodyParameters } from '../interfaces/sms'; + +@Injectable() +export class SmsService { + private readonly baseURL: string; + private readonly OTP: string; + private readonly apiKey: string; + + constructor( + // private readonly httpService: HttpService, + private readonly configService: ConfigService, + ) { + this.baseURL = this.configService.getOrThrow('SMS_BASE_URL'); + this.apiKey = this.configService.getOrThrow('SMS_API_KEY'); + this.OTP = this.configService.getOrThrow('SMS_PATTERN_OTP'); + } + + sendotp(phone: string, otp: string) { + return this.sendSms({ + phone, + parameters: { otp }, + templateId: this.OTP, + }); + } + + async sendSms(params: ISmsParams) { + const { parameters, phone, templateId } = params; + const parametersArray = Object.entries(parameters ?? {}).map(([name, value]) => ({ + name, + value: value.toString(), + })); + const cleanedPhone = this.formatPhone(phone); + + const smsData: ISmsBodyParameters = { + Parameters: parametersArray, + Mobile: cleanedPhone, + TemplateId: templateId, + }; + + const url = `${this.baseURL}/send/verify`; + + try { + const { data } = await axios.post(url, smsData, { + headers: { + 'Content-Type': 'application/json', + 'X-API-KEY': this.apiKey, + }, + }); + if (data.status !== 1) { + throw new HttpException('The SMS was not sent. Please try again later.', HttpStatus.BAD_GATEWAY); + } + return data; + } catch (error) { + console.error('SMS sending failed:', JSON.stringify(error)); + throw new HttpException('The SMS was not sent. Please try again later.', HttpStatus.BAD_GATEWAY); + } + } + + formatPhone(phone: string): string { + // remove spaces, dashes, parentheses + phone = phone.replace(/[^\d+]/g, ''); + + if (phone.startsWith('+98')) { + return phone; + } + + if (phone.startsWith('98')) { + return `+${phone}`; + } + + if (phone.startsWith('0')) { + return `+98${phone.slice(1)}`; + } + + return `+98${phone}`; + } +} diff --git a/src/modules/orders/controllers/orders.controller.ts b/src/modules/orders/controllers/orders.controller.ts new file mode 100644 index 0000000..93515f5 --- /dev/null +++ b/src/modules/orders/controllers/orders.controller.ts @@ -0,0 +1,120 @@ +import { Controller, Get, Post, Param, UseGuards, Patch, Query, Body } from '@nestjs/common'; +import { ApiTags, ApiOperation, ApiBearerAuth, ApiParam, ApiHeader, ApiBody } from '@nestjs/swagger'; +import { OrdersService } from '../providers/orders.service'; +import { AuthGuard } from '../../auth/guards/auth.guard'; +import { UserId } from '../../../common/decorators/user-id.decorator'; +import { RestId } from 'src/common/decorators/rest-id.decorator'; +import { AdminAuthGuard } from '../../auth/guards/adminAuth.guard'; +import { FindOrdersDto } from '../dto/find-orders.dto'; +import { OrderStatus } from '../interface/order.interface'; +import { API_HEADER_SLUG } from 'src/common/constants/index'; +import { UpdateOrderStatusDto } from '../dto/update-order-status.dto'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { Permission } from 'src/common/enums/permission.enum'; + +@ApiTags('orders') +@ApiBearerAuth() +@Controller() +export class OrdersController { + constructor(private readonly ordersService: OrdersService) { } + + @UseGuards(AuthGuard) + @Post('public/checkout') + @ApiHeader(API_HEADER_SLUG) + @ApiOperation({ summary: 'Checkout : create order and payment record' }) + checkout(@UserId() userId: string, @RestId() restaurantId: string) { + return this.ordersService.checkout(userId, restaurantId); + } + + @UseGuards(AuthGuard) + @Get('public/orders') + @ApiHeader(API_HEADER_SLUG) + @ApiOperation({ summary: 'Get all orders with pagination and filters' }) + findAll(@RestId() restId: string, @Query() dto: FindOrdersDto, @UserId() userId: string) { + return this.ordersService.findAllForUser(restId, dto, userId); + } + + @UseGuards(AuthGuard) + @ApiOperation({ summary: 'Get an order By id for User' }) + @ApiParam({ name: 'orderId', description: 'Order ID' }) + @ApiHeader(API_HEADER_SLUG) + @Get('public/orders/:orderId') + findOne(@Param('orderId') orderId: string, @RestId() restId: string) { + return this.ordersService.findOne(orderId, restId); + } + + @UseGuards(AuthGuard) + @Patch('public/orders/:id/:status') + @ApiParam({ + name: 'status', + description: 'Order status', + enum: OrderStatus, + }) + @ApiHeader(API_HEADER_SLUG) + @ApiBody({ type: UpdateOrderStatusDto }) + @ApiOperation({ summary: 'Update status of an order By User' }) + @ApiParam({ name: 'id', description: 'Order ID' }) + cancelOrder( + @Body() dto: UpdateOrderStatusDto, + @Param('id') orderId: string, + @Param('status') status: OrderStatus, + @RestId() restId: string, + ) { + return this.ordersService.changeOrderStatus(orderId, restId, status, 'user', dto?.desc); + } + + /******************** Admin Routes **********************/ + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ORDERS) + @Get('admin/orders') + @ApiOperation({ summary: 'Get all orders with pagination and filters' }) + findAllAdmin(@RestId() restId: string, @Query() dto: FindOrdersDto) { + return this.ordersService.findAllForAdmin(restId, dto); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ORDERS) + @ApiOperation({ summary: 'Get an order By id for User' }) + @ApiParam({ name: 'orderId', description: 'Order ID' }) + @Get('admin/orders/:orderId') + findOneAsAdmin(@Param('orderId') orderId: string, @RestId() restId: string) { + return this.ordersService.findOne(orderId, restId); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ORDERS) + @Patch('admin/orders/:orderId/:status') + @ApiOperation({ summary: 'Update an order status' }) + @ApiParam({ name: 'orderId', description: 'Order ID' }) + @ApiBody({ type: UpdateOrderStatusDto }) + @ApiParam({ + name: 'status', + description: 'Order status', + enum: OrderStatus, + }) + updateStatus( + @Param('orderId') orderId: string, + @Body() dto: UpdateOrderStatusDto, + @Param('status') status: OrderStatus, + @RestId() restId: string, + ) { + return this.ordersService.changeOrderStatus(orderId, restId, status, 'admin', dto?.desc); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.VIEW_REPORTS) + @ApiOperation({ summary: 'Get Stats for report page' }) + @Get('admin/orders/stats') + findStats(@RestId() restId: string) { + return this.ordersService.getStats(restId); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.VIEW_REPORTS) + @ApiOperation({ summary: 'Get food sales pie chart data for last month' }) + @ApiHeader(API_HEADER_SLUG) + @Get('admin/orders/food-sales-pie-chart') + getFoodSalesPieChart(@RestId() restId: string) { + return this.ordersService.getFoodSalesPieChart(restId); + } +} diff --git a/src/modules/orders/crone/order.crone.ts b/src/modules/orders/crone/order.crone.ts new file mode 100644 index 0000000..b183cc9 --- /dev/null +++ b/src/modules/orders/crone/order.crone.ts @@ -0,0 +1,187 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { Cron } from '@nestjs/schedule'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { EventEmitter2 } from '@nestjs/event-emitter'; +import { Payment } from '../../payments/entities/payment.entity'; +import { PaymentMethodEnum, PaymentStatusEnum } from '../../payments/interface/payment'; +import { InventoryService } from '../../inventory/inventory.service'; +import { OrderStatus } from '../interface/order.interface'; +import { Order } from '../entities/order.entity'; +import { OrderStatusChangedEvent } from '../events/order.events'; + +@Injectable() +export class OrdersCrone { + private readonly logger = new Logger(OrdersCrone.name); + + constructor( + private readonly em: EntityManager, + private readonly inventoryService: InventoryService, + private readonly eventEmitter: EventEmitter2, + ) { } + + // run every minute and fail pending online payments older than 15 minutes + @Cron('*/1 * * * *', { + name: 'failOldOnlinePayments', + timeZone: 'UTC', + }) + async cancelOldOnlinePendingOrders() { + try { + const cutoff = new Date(Date.now() - 15 * 60 * 1000); + + this.logger.debug('Searching for pending online payments older than 15 minutes'); + + const payments = await this.em.find( + Payment, + { + method: PaymentMethodEnum.Online, + status: PaymentStatusEnum.Pending, + createdAt: { $lte: cutoff }, + }, + { populate: ['order', 'order.items', 'order.items.food'] }, + ); + + if (!payments || payments.length === 0) { + return; + } + + this.logger.log(`Found ${payments.length} stale pending online payments`); + + for (const p of payments) { + try { + await this.em.transactional(async em => { + // reload inside transaction to avoid concurrency issues + const payment = await em.findOne( + Payment, + { id: p.id }, + { populate: ['order', 'order.items', 'order.items.food'] }, + ); + if (!payment) return; + if (payment.status !== PaymentStatusEnum.Pending) return; + + payment.status = PaymentStatusEnum.Failed; + payment.failedAt = new Date(); + + if (payment.order) { + payment.order.status = OrderStatus.CANCELED; + + // prepare restore payload + const items = (payment.order as any).items || []; + const restorePayload = { + items: items.map((it: any) => ({ foodId: it.food.id, quantity: it.quantity })), + }; + + if (restorePayload.items.length > 0) { + await this.inventoryService.restoreToInventory(em, restorePayload); + } + } + + em.persist(payment); + if (payment.order) em.persist(payment.order); + await em.flush(); + this.logger.log( + `Marked payment ${payment.id} and order ${payment.order?.id} as failed and restored inventory`, + ); + }); + } catch (err) { + this.logger.error(`Error processing payment ${p.id}: ${err.message}`, err.stack); + } + } + } catch (err) { + this.logger.error(`OrdersCrone failed: ${err.message}`, err.stack); + } + } + + // run every 15 minutes to complete orders that have been in shipped/delivered statuses for more than 3 hours + @Cron('*/15 * * * *', { + name: 'completeOldDeliveredOrders', + timeZone: 'UTC', + }) + async completeOldDeliveredOrders() { + try { + const cutoff = new Date(Date.now() - 3 * 60 * 60 * 1000); // 3 hours ago + + this.logger.debug('Searching for orders in shipped/delivered statuses older than 3 hours'); + + const orders = await this.em.find( + Order, + { + status: { + $in: [ + OrderStatus.SHIPPED, + OrderStatus.DELIVERED_TO_WAITER, + OrderStatus.DELIVERED_TO_RECEPTIONIST, + ], + }, + updatedAt: { $lte: cutoff }, + }, + { populate: ['restaurant'] }, + ); + + if (!orders || orders.length === 0) { + return; + } + + this.logger.log(`Found ${orders.length} orders to mark as completed`); + + for (const order of orders) { + try { + await this.em.transactional(async em => { + // reload inside transaction to avoid concurrency issues + const reloadedOrder = await em.findOne( + Order, + { id: order.id }, + { populate: ['restaurant', 'user'] }, + ); + if (!reloadedOrder) return; + if ( + ![ + OrderStatus.SHIPPED, + OrderStatus.DELIVERED_TO_WAITER, + OrderStatus.DELIVERED_TO_RECEPTIONIST, + ].includes(reloadedOrder.status) + ) { + return; + } + + const previousStatus = reloadedOrder.status; + const restaurantId = + typeof reloadedOrder.restaurant === 'string' + ? reloadedOrder.restaurant + : reloadedOrder.restaurant.id; + + // Update order status and history + reloadedOrder.status = OrderStatus.COMPLETED; + reloadedOrder.history.push({ + status: OrderStatus.COMPLETED, + changedAt: new Date(), + desc: 'تکمیل سفارش توسط سیستم', + }); + + em.persist(reloadedOrder); + await em.flush(); + + // // Emit event after transaction completes + this.eventEmitter.emit( + OrderStatusChangedEvent.name, + new OrderStatusChangedEvent( + reloadedOrder.id, + reloadedOrder.user?.id || '', + String(reloadedOrder.orderNumber) || '', + restaurantId, + previousStatus, + OrderStatus.COMPLETED, + 'admin', + ), + ); + + this.logger.log(`Marked order ${reloadedOrder.id} as completed`); + }); + } catch (err) { + this.logger.error(`Error processing order ${order.id}: ${err.message}`, err.stack); + } + } + } catch (err) { + this.logger.error(`completeOldDeliveredOrders cron failed: ${err.message}`, err.stack); + } + } +} diff --git a/src/modules/orders/dto/find-orders.dto.ts b/src/modules/orders/dto/find-orders.dto.ts new file mode 100644 index 0000000..1ab7404 --- /dev/null +++ b/src/modules/orders/dto/find-orders.dto.ts @@ -0,0 +1,83 @@ +import { + IsOptional, + IsString, + IsNumber, + Min, + IsIn, + IsEnum, + IsDateString, + IsArray, +} from 'class-validator'; +import { Type, Transform } from 'class-transformer'; +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { OrderStatus } from '../interface/order.interface'; +import { PaymentStatusEnum } from '../../payments/interface/payment'; + +const sortOrderOptions = ['asc', 'desc'] as const; +type SortOrder = (typeof sortOrderOptions)[number]; + +export class FindOrdersDto { + @ApiPropertyOptional({ default: 1, minimum: 1 }) + @IsOptional() + @Type(() => Number) + @IsNumber() + @Min(1) + page: number = 1; + + @ApiPropertyOptional({ default: 10, minimum: 1 }) + @IsOptional() + @Type(() => Number) + @IsNumber() + @Min(1) + limit: number = 10; + + /** + * ?statuses=paid,confirmed + * ?statuses=paid&statuses=confirmed + */ + @ApiPropertyOptional({ + description: 'Filter by order statuses', + enum: OrderStatus, + isArray: true, + }) + @IsOptional() + @Transform(({ value }) => + Array.isArray(value) ? value : value?.split(',') + ) + @IsArray() + @IsEnum(OrderStatus, { each: true }) + statuses?: OrderStatus[]; + + @ApiPropertyOptional({ enum: PaymentStatusEnum }) + @IsOptional() + @IsEnum(PaymentStatusEnum) + paymentStatus?: PaymentStatusEnum; + + @ApiPropertyOptional() + @IsOptional() + @IsString() + search?: string; + + @ApiPropertyOptional({ format: 'date-time' }) + @IsOptional() + @IsDateString() + startDate?: string; + + @ApiPropertyOptional({ format: 'date-time' }) + @IsOptional() + @IsDateString() + endDate?: string; + + @ApiPropertyOptional({ default: 'createdAt' }) + @IsOptional() + @IsString() + orderBy: string = 'createdAt'; + + @ApiPropertyOptional({ + enum: sortOrderOptions, + default: 'desc', + }) + @IsOptional() + @IsIn(sortOrderOptions) + order: SortOrder = 'desc'; +} diff --git a/src/modules/orders/dto/update-order-status.dto.ts b/src/modules/orders/dto/update-order-status.dto.ts new file mode 100644 index 0000000..e4026bf --- /dev/null +++ b/src/modules/orders/dto/update-order-status.dto.ts @@ -0,0 +1,10 @@ +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { IsOptional, IsString } from 'class-validator'; +export class UpdateOrderStatusDto { + @ApiPropertyOptional({ + description: 'Change Status description', + }) + @IsOptional() + @IsString() + desc?: string; +} diff --git a/src/modules/orders/dto/update-order.dto.ts b/src/modules/orders/dto/update-order.dto.ts new file mode 100644 index 0000000..e64eebc --- /dev/null +++ b/src/modules/orders/dto/update-order.dto.ts @@ -0,0 +1,5 @@ +// import { PartialType } from '@nestjs/swagger'; +// import { CreateOrderDto } from './create-order.dto'; + +// export class UpdateOrderDto extends PartialType(CreateOrderDto) {} +export class UpdateOrderDto {} diff --git a/src/modules/orders/entities/order-item.entity.ts b/src/modules/orders/entities/order-item.entity.ts new file mode 100644 index 0000000..8c996ab --- /dev/null +++ b/src/modules/orders/entities/order-item.entity.ts @@ -0,0 +1,27 @@ +import { Entity, Index, ManyToOne, Property } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Order } from './order.entity'; +import { Food } from '../../foods/entities/food.entity'; + +@Entity({ tableName: 'order_items' }) +@Index({ properties: ['order'] }) +@Index({ properties: ['food'] }) +export class OrderItem extends BaseEntity { + @ManyToOne(() => Order) + order!: Order; + + @ManyToOne(() => Food) + food!: Food; + + @Property({ type: 'int' }) + quantity!: number; + + @Property({ type: 'decimal', precision: 10, scale: 0 }) + unitPrice!: number; + + @Property({ type: 'decimal', precision: 10, scale: 0, default: 0 }) + discount: number = 0; + + @Property({ type: 'decimal', precision: 10, scale: 0 }) + totalPrice!: number; +} diff --git a/src/modules/orders/entities/order.entity.ts b/src/modules/orders/entities/order.entity.ts new file mode 100644 index 0000000..592627b --- /dev/null +++ b/src/modules/orders/entities/order.entity.ts @@ -0,0 +1,130 @@ +import { + Entity, + Index, + ManyToOne, + OneToMany, + Property, + Collection, + Cascade, + Enum, + BeforeCreate, + Unique, + type EventArgs, +} from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { OrderCouponDetail, OrderStatus } from '../interface/order.interface'; +import { User } from '../../users/entities/user.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { PaymentMethod } from '../../payments/entities/payment-method.entity'; +import { OrderItem } from './order-item.entity'; +import { Delivery } from '../../delivery/entities/delivery.entity'; +import { OrderUserAddress, OrderCarAddress } from '../interface/order.interface'; +import { Payment } from 'src/modules/payments/entities/payment.entity'; + +@Entity({ tableName: 'orders' }) +@Unique({ properties: ['restaurant', 'orderNumber'] }) +@Index({ properties: ['restaurant', 'status'] }) +@Index({ properties: ['user', 'status'] }) +@Index({ properties: ['restaurant', 'orderNumber'] }) +@Index({ properties: ['status'] }) +export class Order extends BaseEntity { + @ManyToOne(() => User) + user!: User; + + @ManyToOne(() => Restaurant) + restaurant!: Restaurant; + + @ManyToOne(() => Delivery) + deliveryMethod!: Delivery; + + @OneToMany(() => Payment, payment => payment.order, { + cascade: [Cascade.ALL], + orphanRemoval: true, + }) + payments = new Collection(this); + + @OneToMany(() => OrderItem, item => item.order, { + cascade: [Cascade.ALL], + orphanRemoval: true, + }) + items = new Collection(this); + + @Property({ type: 'json', nullable: true }) + userAddress?: OrderUserAddress | null; + // for car delivery + @Property({ type: 'json', nullable: true }) + carAddress?: OrderCarAddress | null; + + @ManyToOne(() => PaymentMethod) + paymentMethod: PaymentMethod; + + @Property({ type: 'int', nullable: true }) + orderNumber?: number; + + @Property({ type: 'decimal', precision: 10, scale: 0, default: 0 }) + couponDiscount: number = 0; + + @Property({ type: 'jsonb', nullable: true }) + couponDetail?: OrderCouponDetail | null; + + @Property({ type: 'decimal', precision: 10, scale: 0, default: 0 }) + itemsDiscount: number = 0; + + @Property({ type: 'decimal', precision: 10, scale: 0, default: 0 }) + totalDiscount: number = 0; + + @Property({ type: 'decimal', precision: 10, scale: 0 }) + subTotal!: number; + + @Property({ type: 'decimal', precision: 10, scale: 0, default: 0 }) + tax: number = 0; + + @Property({ type: 'decimal', precision: 10, scale: 0, default: 0 }) + deliveryFee: number = 0; + + @Property({ type: 'decimal', precision: 10, scale: 0 }) + total!: number; + + @Property({ type: 'int', default: 0 }) + totalItems: number = 0; + + @Property({ type: 'text', nullable: true }) + description?: string; + + @Property({ nullable: true }) + tableNumber?: string; + + @Enum(() => OrderStatus) + status!: OrderStatus; + + @Property({ type: 'json', nullable: true }) + history: Array<{ status: OrderStatus; changedAt: Date; desc: string | null }> = []; + + @BeforeCreate() + async generateOrderNumber(args: EventArgs) { + const em = args.em; + const order = args.entity; + + // Ensure restaurant is loaded + if (!order.restaurant) { + throw new Error('Restaurant must be set before creating order'); + } + + // Get the restaurant ID (handle both entity and ID cases) + const restaurantId = typeof order.restaurant === 'string' ? order.restaurant : order.restaurant.id; + + // Query for max orderNumber for this restaurant + // Using findOne with orderBy to get the highest order number + const maxOrder = await em.findOne( + Order, + { restaurant: restaurantId }, + { + orderBy: { orderNumber: 'DESC' }, + fields: ['orderNumber'], + }, + ); + + // Set the next order number (1 if no orders exist, otherwise max + 1) + order.orderNumber = maxOrder?.orderNumber ? maxOrder.orderNumber + 1 : 1; + } +} diff --git a/src/modules/orders/events/order.events.ts b/src/modules/orders/events/order.events.ts new file mode 100644 index 0000000..5348149 --- /dev/null +++ b/src/modules/orders/events/order.events.ts @@ -0,0 +1,22 @@ +import type { OrderStatus, StatusTransitionRef } from '../interface/order.interface'; + +export class OrderCreatedEvent { + constructor( + public readonly orderId: string, + public readonly restaurantId: string, + public readonly orderNumber: string, + public readonly total: number, + ) {} +} + +export class OrderStatusChangedEvent { + constructor( + public readonly orderId: string, + public readonly userId: string, + public readonly orderNumber: string, + public readonly restaurantId: string, + public readonly previousStatus: OrderStatus, + public readonly newStatus: OrderStatus, + public readonly changedBy: StatusTransitionRef, + ) {} +} diff --git a/src/modules/orders/interface/order.interface.ts b/src/modules/orders/interface/order.interface.ts new file mode 100644 index 0000000..d9d1a6c --- /dev/null +++ b/src/modules/orders/interface/order.interface.ts @@ -0,0 +1,42 @@ +import type { CouponType } from 'src/modules/coupons/interface/coupon'; + +export interface OrderUserAddress { + address?: string; + latitude?: number; + longitude?: number; + city: string; + province: string; + postalCode?: string; + fullName: string; + phone: string; +} + +export interface OrderCarAddress { + carModel: string; + carColor: string; + plateNumber: string; + phone: string; +} + +export enum OrderStatus { + PENDING_PAYMENT = 'pendingPayment', + PAID = 'paid', + PREPARING = 'preparing', + DELIVERED_TO_WAITER = 'deliveredToWaiter', + DELIVERED_TO_RECEPTIONIST = 'deliveredToReceptionist', + SHIPPED = 'shipped', + COMPLETED = 'completed', + CANCELED = 'canceled', +} + +export interface OrderCouponDetail { + couponId: string; + couponName: string; + couponCode: string; + type: CouponType; + value: number; + + maxDiscount?: number; +} + +export type StatusTransitionRef = 'user' | 'admin'; diff --git a/src/modules/orders/listeners/order.listeners.ts b/src/modules/orders/listeners/order.listeners.ts new file mode 100644 index 0000000..8a8bfe0 --- /dev/null +++ b/src/modules/orders/listeners/order.listeners.ts @@ -0,0 +1,184 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { OnEvent } from '@nestjs/event-emitter'; +import { AdminRepository } from 'src/modules/admin/repositories/admin.repository'; +import { OrderCreatedEvent, OrderStatusChangedEvent } from '../events/order.events'; +import { Permission } from 'src/common/enums/permission.enum'; +import { NotifTitleEnum } from 'src/modules/notifications/interfaces/notification.interface'; +import { NotificationService } from 'src/modules/notifications/services/notification.service'; +import { ConfigService } from '@nestjs/config'; +import { OrderRepository } from '../repositories/order.repository'; +import { OrderStatus } from '../interface/order.interface'; +import { PaymentMethodEnum } from 'src/modules/payments/interface/payment'; +import { UserService } from 'src/modules/users/providers/user.service'; +import { WalletTransactionReason, WalletTransactionType } from 'src/modules/users/interface/wallet'; + +@Injectable() +export class OrderListeners { + private readonly logger = new Logger(OrderListeners.name); + private orderCreatedSmsTemplateId: string; + private orderStatusChangedSmsTemplateId: string; + // private orderCompletedSmsTemplateId: string; + constructor( + private readonly adminService: AdminRepository, + private readonly OrderRepository: OrderRepository, + private readonly notificationService: NotificationService, + private readonly configService: ConfigService, + private readonly userService: UserService, + ) { + this.orderCreatedSmsTemplateId = this.configService.get('SMS_PATTERN_ORDER_CREATED') ?? '123'; + this.orderStatusChangedSmsTemplateId = this.configService.get('SMS_PATTERN_ORDER_STATUS_CHANGE') ?? '123'; + // this.orderCompletedSmsTemplateId = this.configService.get('SMS_PATTERN_ORDER_STATUS_COMPLETED') ?? '123'; + } + + private getStatusFarsi(status: OrderStatus): string { + const statusMap: Record = { + [OrderStatus.PENDING_PAYMENT]: 'در انتظار پرداخت', + [OrderStatus.PAID]: 'پرداخت شده', + [OrderStatus.PREPARING]: 'در حال آماده‌سازی', + [OrderStatus.DELIVERED_TO_RECEPTIONIST]: 'تحویل به پذیرش', + [OrderStatus.DELIVERED_TO_WAITER]: 'تحویل به گارسون', + [OrderStatus.SHIPPED]: 'ارسال شده', + [OrderStatus.COMPLETED]: 'تکمیل شده', + [OrderStatus.CANCELED]: 'لغو شده', + }; + return statusMap[status] || status; + } + + @OnEvent(OrderCreatedEvent.name) + async handleOrderCreated(event: OrderCreatedEvent) { + try { + this.logger.log( + `Order created event received: ${event.orderId} for restaurant: ${event.restaurantId} and order number: ${event.orderNumber}`, + ); + + const order = await this.OrderRepository.findOne(event.orderId); + if (order?.paymentMethod.method === PaymentMethodEnum.Online) { + return; + } + + + // get admnin os restuaraant that have order permissuins + const admins = await this.adminService.findAdminsWithPermission(event.restaurantId, Permission.NEW_ORDER_NOTIFICATION); + const recipients = admins.map(admin => ({ + adminId: admin.id, + })); + + await this.notificationService.sendNotification({ + restaurantId: event.restaurantId, + message: { + title: NotifTitleEnum.ORDER_CREATED, + content: `سفارش شماره ${event.orderNumber} با مبلغ ${event.total} تومان با موفقیت ایجاد شد`, + sms: { + templateId: this.orderCreatedSmsTemplateId, + parameters: { + orderNumber: event.orderNumber, + total: event.total.toString(), + }, + }, + pushNotif: { + title: `سفارش جدید`, + content: `سفارش شماره ${event.orderNumber} با مبلغ ${event.total} تومان با موفقیت ایجاد شد`, + icon: `/`, + action: { + type: NotifTitleEnum.ORDER_CREATED, + url: `/`, + }, + }, + }, + recipients, + metadata: { + priority: 1, + }, + }); + } catch (error) { + this.logger.error( + `Failed to send notification for order created event: ${event.restaurantId}`, + error instanceof Error ? error.stack : String(error), + ); + } + } + + @OnEvent(OrderStatusChangedEvent.name) + async handleOrderStatusChanged(event: OrderStatusChangedEvent) { + try { + this.logger.log( + `Order status changed event received: ${event.orderId} for restaurant: ${event.restaurantId} and order number: ${event.orderNumber}`, + ); + //TODO : REFACTOR to use queue or other way to handle this + const recipients = [ + { + userId: event.userId, + }, + ]; + if (event.newStatus === OrderStatus.COMPLETED) { + + if (!event?.userId) { + this.logger.log( + `User not found for order: ${event.orderId} for restaurant: ${event.restaurantId} and order number: ${event.orderNumber}`, + ); + } + + await this.notificationService.sendNotification({ + restaurantId: event.restaurantId, + message: { + title: NotifTitleEnum.ORDER_STATUS_CHANGED, + content: `لطفابرای ثبت نظر سفارش ${event.orderNumber} به اپ مراجعه کنید`, + sms: { + templateId: this.orderCreatedSmsTemplateId, + parameters: { + orderNumber: event.orderNumber, + }, + }, + pushNotif: { + title: `تغییر وضعیت سفارش`, + content: `لطفا برای ثبت نظر سفارش ${event.orderNumber} به اپ مراجعه کنید`, + icon: `/`, + action: { + type: NotifTitleEnum.ORDER_STATUS_CHANGED, + url: ``, + }, + }, + }, + recipients, + metadata: { + priority: 1, + }, + }); + } else { + await this.notificationService.sendNotification({ + restaurantId: event.restaurantId, + message: { + title: NotifTitleEnum.ORDER_STATUS_CHANGED, + content: `وضعیت سفارش شماره ${event.orderNumber} به ${this.getStatusFarsi(event.newStatus)} تغییر کرد`, + sms: { + templateId: this.orderStatusChangedSmsTemplateId, + parameters: { + orderNumber: event.orderNumber, + status: this.getStatusFarsi(event.newStatus), + }, + }, + pushNotif: { + title: `تغییر وضعیت سفارش`, + content: `وضعیت سفارش شماره ${event.orderNumber} به ${this.getStatusFarsi(event.newStatus)} تغییر کرد`, + icon: `/`, + action: { + type: NotifTitleEnum.ORDER_STATUS_CHANGED, + url: ``, + }, + }, + }, + recipients, + metadata: { + priority: 1, + }, + }); + } + } catch (error) { + this.logger.error( + `Failed to send notification for order status changed event: ${event.restaurantId}`, + error instanceof Error ? error.stack : String(error), + ); + } + } + +} diff --git a/src/modules/orders/orders.module.ts b/src/modules/orders/orders.module.ts new file mode 100644 index 0000000..6208faf --- /dev/null +++ b/src/modules/orders/orders.module.ts @@ -0,0 +1,42 @@ +import { Module, forwardRef } from '@nestjs/common'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { OrdersService } from './providers/orders.service'; +import { OrdersController } from './controllers/orders.controller'; +import { Order } from './entities/order.entity'; +import { OrderItem } from './entities/order-item.entity'; +import { User } from '../users/entities/user.entity'; +import { Restaurant } from '../restaurants/entities/restaurant.entity'; +import { Food } from '../foods/entities/food.entity'; +import { UserAddress } from '../users/entities/user-address.entity'; +import { PaymentMethod } from '../payments/entities/payment-method.entity'; +import { CartModule } from '../cart/cart.module'; +import { UtilsModule } from '../utils/utils.module'; +import { AuthModule } from '../auth/auth.module'; +import { PaymentsModule } from '../payments/payments.module'; +import { JwtModule } from '@nestjs/jwt'; +import { OrderRepository } from './repositories/order.repository'; +import { OrderListeners } from './listeners/order.listeners'; +import { OrdersCrone } from './crone/order.crone'; +import { AdminModule } from '../admin/admin.module'; +import { NotificationsModule } from '../notifications/notifications.module'; +import { InventoryModule } from '../inventory/inventory.module'; +import { UserModule } from '../users/user.module'; + +@Module({ + imports: [ + MikroOrmModule.forFeature([Order, OrderItem, User, Restaurant, Food, UserAddress, PaymentMethod]), + CartModule, + UtilsModule, + AuthModule, + forwardRef(() => PaymentsModule), + JwtModule, + AdminModule, + NotificationsModule, + InventoryModule, + forwardRef(() => UserModule) + ], + controllers: [OrdersController], + providers: [OrdersService, OrderRepository, OrderListeners, OrdersCrone], + exports: [OrderRepository, OrdersService], +}) +export class OrdersModule { } diff --git a/src/modules/orders/providers/orders.service.ts b/src/modules/orders/providers/orders.service.ts new file mode 100644 index 0000000..62b4489 --- /dev/null +++ b/src/modules/orders/providers/orders.service.ts @@ -0,0 +1,601 @@ +import { Injectable, NotFoundException, BadRequestException, Logger } from '@nestjs/common'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { Order } from '../entities/order.entity'; +import { OrderItem } from '../entities/order-item.entity'; +import { User } from '../../users/entities/user.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { Food } from '../../foods/entities/food.entity'; +import { CartService } from '../../cart/providers/cart.service'; +import { OrderStatus, OrderUserAddress, OrderCarAddress } from '../interface/order.interface'; +import { PaymentMethodEnum, PaymentStatusEnum } from '../../payments/interface/payment'; +import { Cart } from '../../cart/interfaces/cart.interface'; +import { PaymentMethod } from '../../payments/entities/payment-method.entity'; +import { PaymentsService } from '../../payments/services/payments.service'; +import { DeliveryMethodEnum } from '../../delivery/interface/delivery'; +import { Delivery } from '../../delivery/entities/delivery.entity'; +import { OrderRepository } from '../repositories/order.repository'; +import { FindOrdersDto } from '../dto/find-orders.dto'; +import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; +import { Payment } from 'src/modules/payments/entities/payment.entity'; +import { InventoryService } from 'src/modules/inventory/inventory.service'; +import { BulkReserveFoodDto } from 'src/modules/inventory/dto/bulk-reserve-food.dto'; +import { StatusTransitionRef } from '../interface/order.interface'; +import { EventEmitter2 } from '@nestjs/event-emitter'; +import { OrderCreatedEvent, OrderStatusChangedEvent } from '../events/order.events'; +import { OrderMessage } from 'src/common/enums/message.enum'; +type OrderItemData = { food: Food; quantity: number; unitPrice: number; discount: number }; + +type ValidatedCartForOrder = { + user: User; + restaurant: Restaurant; + delivery: Delivery; + userAddress: OrderUserAddress | null; + carAddress: OrderCarAddress | null; + paymentMethod: PaymentMethod; + orderItemsData: OrderItemData[]; +}; + +@Injectable() +export class OrdersService { + private readonly logger = new Logger(OrdersService.name); + + private static readonly STATUS_TRANSITIONS: Record = { + [OrderStatus.PENDING_PAYMENT]: [OrderStatus.PAID, OrderStatus.CANCELED, OrderStatus.PREPARING], + [OrderStatus.PAID]: [OrderStatus.PREPARING, OrderStatus.CANCELED], + [OrderStatus.PREPARING]: [OrderStatus.DELIVERED_TO_RECEPTIONIST, OrderStatus.DELIVERED_TO_WAITER, OrderStatus.SHIPPED, OrderStatus.CANCELED], + [OrderStatus.DELIVERED_TO_WAITER]: [OrderStatus.COMPLETED, OrderStatus.CANCELED], + [OrderStatus.DELIVERED_TO_RECEPTIONIST]: [OrderStatus.COMPLETED, OrderStatus.CANCELED], + [OrderStatus.SHIPPED]: [OrderStatus.COMPLETED, OrderStatus.CANCELED], + [OrderStatus.COMPLETED]: [OrderStatus.CANCELED], + [OrderStatus.CANCELED]: [], + }; + + constructor( + private readonly em: EntityManager, + private readonly cartService: CartService, + private readonly orderRepository: OrderRepository, + private readonly paymentsService: PaymentsService, + private readonly inventoryService: InventoryService, + private readonly eventEmitter: EventEmitter2, + ) { } + + async checkout(userId: string, restaurantId: string) { + const cart = await this.cartService.findOneOrFail(userId, restaurantId); + const validated = await this.validateCartForOrder(userId, restaurantId, cart); + + const order = await this.em.transactional(async em => { + const order = em.create(Order, { + user: validated.user, + restaurant: validated.restaurant, + deliveryMethod: validated.delivery, + userAddress: validated.userAddress, + carAddress: validated.carAddress, + paymentMethod: validated.paymentMethod, + couponDiscount: cart.couponDiscount || 0, + couponDetail: cart.coupon, + itemsDiscount: cart.itemsDiscount || 0, + totalDiscount: cart.totalDiscount || 0, + subTotal: cart.subTotal || 0, + tax: cart.tax || 0, + deliveryFee: cart.deliveryFee || 0, + total: cart.total || 0, + totalItems: cart.totalItems || 0, + description: cart.description, + tableNumber: cart.tableNumber, + status: OrderStatus.PENDING_PAYMENT, + history: [{ status: OrderStatus.PENDING_PAYMENT, changedAt: new Date() }], + }); + + em.persist(order); + + for (const itemData of validated.orderItemsData) { + const { food, quantity, unitPrice, discount } = itemData; + + this.assertFoodHasSufficientStock(food, quantity); + + const totalPrice = (unitPrice - discount) * quantity; + + const orderItem = em.create(OrderItem, { + order, + food, + quantity, + unitPrice, + discount, + totalPrice, + }); + + em.persist(orderItem); + } + + const payment = em.create(Payment, { + order, + amount: order.total, + status: PaymentStatusEnum.Pending, + method: order.paymentMethod.method, + gateway: order.paymentMethod.gateway ?? null, + }); + + em.persist(payment); + // reserve stock based on payment method. + const bulkReserveFoodDto: BulkReserveFoodDto = { + items: validated.orderItemsData.map(item => ({ + foodId: item.food.id, + quantity: item.quantity, + })), + }; + await this.inventoryService.deductFromInventory(em, bulkReserveFoodDto); + await em.flush(); + this.logger.debug(`Order ${order.id} created for user ${userId} (restaurant ${restaurantId})`); + return order; + }); + + await this.cartService.clearCart(userId, restaurantId); + + const { paymentUrl } = await this.paymentsService.payOrder(order.id); + this.eventEmitter.emit( + OrderCreatedEvent.name, + new OrderCreatedEvent(order.id, restaurantId, String(order?.orderNumber) || '', order.total), + ); + + return { paymentUrl, order }; + } + + /** + * Validates cart and prepares all required data for order creation + */ + private async validateCartForOrder(userId: string, restaurantId: string, cart: Cart): Promise { + this.assertCartHasItems(cart); + this.assertCartHasDeliveryMethod(cart); + this.assertCartHasPaymentMethod(cart); + + const [user, restaurant, delivery] = await Promise.all([ + this.getUserOrFail(userId), + this.getRestaurantOrFail(restaurantId), + this.getDeliveryOrFail(cart.deliveryMethodId!), + ]); + + this.assertMeetsMinOrderForDelivery(cart, delivery); + this.assertDeliveryMethodRequirements(cart, delivery); + + const paymentMethod = await this.getPaymentMethodOrFail(cart.paymentMethodId!, restaurantId); + this.assertPaymentMethodEnabled(paymentMethod); + + const orderItemsData = await this.buildOrderItemsData(cart, restaurantId); + + return { + user, + restaurant, + delivery, + paymentMethod, + userAddress: delivery.method === DeliveryMethodEnum.DeliveryCourier ? (cart?.userAddress ?? null) : null, + carAddress: delivery.method === DeliveryMethodEnum.DeliveryCar ? (cart?.carAddress ?? null) : null, + orderItemsData, + }; + } + + async findAllForUser(restId: string, dto: FindOrdersDto, userId: string): Promise> { + const result = await this.orderRepository.findAllPaginated(restId, { + page: dto.page, + limit: dto.limit, + statuses: dto.statuses, + paymentStatus: dto.paymentStatus, + search: dto.search, + startDate: dto.startDate, + endDate: dto.endDate, + orderBy: dto.orderBy, + order: dto.order, + userId, + }); + + return result; + } + + async findAllForAdmin(restId: string, dto: FindOrdersDto): Promise> { + const result = await this.orderRepository.findAllPaginated(restId, { + page: dto.page, + limit: dto.limit, + statuses: dto.statuses, + paymentStatus: dto.paymentStatus, + search: dto.search, + startDate: dto.startDate, + endDate: dto.endDate, + orderBy: dto.orderBy, + order: dto.order, + excludeOnlinePendingPayment: true, + }); + + return result; + } + + async findOne(id: string, restId: string): Promise { + const order = await this.orderRepository.findOne( + { id, restaurant: { id: restId } }, + { + populate: [ + 'user', + 'restaurant', + 'deliveryMethod', + 'userAddress', + 'carAddress', + 'paymentMethod', + 'payments', + 'items', + 'items.food', + ], + }, + ); + if (!order) { + throw new NotFoundException(OrderMessage.NOT_FOUND); + } + return order; + } + + + + async changeOrderStatus( + orderId: string, + restId: string, + toStatus: OrderStatus, + ref: StatusTransitionRef, + desc?: string, + ): Promise { + const order = await this.getOrderOrFail(orderId, restId); + + // Store previous status before changing it + const previousStatus = order.status; + + this.assertStatusTransitionAllowed(order, toStatus, ref); + + order.status = toStatus; + order.history.push({ status: toStatus, changedAt: new Date(), desc: desc || null }); + await this.em.persistAndFlush(order); + + this.eventEmitter.emit( + OrderStatusChangedEvent.name, + new OrderStatusChangedEvent( + orderId, + order.user?.id || '', + String(order?.orderNumber) || '', + restId, + previousStatus, + toStatus, + ref, + ), + ); + return order; + } + /* Helpers */ + private assertStatusTransitionAllowed(order: Order, to: OrderStatus, ref: StatusTransitionRef) { + const paymentMethod = order.paymentMethod?.method; + if (!paymentMethod) { + throw new BadRequestException(OrderMessage.PAYMENT_METHOD_MISSING); + } + + if (!this.canTransition(order.status, to, paymentMethod, ref, order.deliveryMethod.method)) { + throw new BadRequestException(OrderMessage.INVALID_STATUS_TRANSITION); + } + } + + private canTransition(from: OrderStatus, to: OrderStatus, paymentMethod: PaymentMethodEnum, ref: 'user' | 'admin', deliveryMethod: DeliveryMethodEnum) { + if (!OrdersService.STATUS_TRANSITIONS[from]?.includes(to)) return false; + + if (to === OrderStatus.CANCELED) { + // only allow orders with status of PENDING_PAYMENT and PAID are allowed to be canceled by user + if (ref === 'user' && ![OrderStatus.PENDING_PAYMENT, OrderStatus.PAID].includes(from)) { + return false; + } else if (ref === 'admin') { + return true; + } + } + // only allow orders with status of PENDING_PAYMENT and payment + // method of cash are allowed to move to CONFIRMED directly + if ( + from == OrderStatus.PENDING_PAYMENT && + to == OrderStatus.PREPARING && + paymentMethod !== PaymentMethodEnum.Cash + ) { + return false; + } + + /** + * Only allow orders with status of PREPARING to be shipped if the delivery method is DeliveryCourier + */ + if ( + from == OrderStatus.PREPARING && + to == OrderStatus.SHIPPED && + deliveryMethod !== DeliveryMethodEnum.DeliveryCourier + ) { + return false; + } + if ( + from == OrderStatus.PREPARING && + to == OrderStatus.DELIVERED_TO_WAITER && + deliveryMethod !== DeliveryMethodEnum.DineIn && + deliveryMethod !== DeliveryMethodEnum.DeliveryCar + ) { + return false; + } + if ( + from == OrderStatus.PREPARING && + to == OrderStatus.DELIVERED_TO_RECEPTIONIST && + deliveryMethod !== DeliveryMethodEnum.CustomerPickup + ) { + return false; + } + + if (paymentMethod === PaymentMethodEnum.Online) { + if (to === OrderStatus.PREPARING && from !== OrderStatus.PAID) return false; + } + + return true; + } + + private async getOrderOrFail(orderId: string, restId: string): Promise { + const order = await this.em.findOne( + Order, + { id: orderId, restaurant: { id: restId } }, + { populate: ['paymentMethod', 'deliveryMethod', 'user'] }, + ); + if (!order) throw new NotFoundException(OrderMessage.NOT_FOUND); + return order; + } + + private assertCartHasItems(cart: Cart) { + if (!cart.items || cart.items.length === 0) { + throw new BadRequestException(OrderMessage.CART_EMPTY); + } + } + + private assertCartHasDeliveryMethod(cart: Cart) { + if (!cart.deliveryMethodId) { + throw new NotFoundException(OrderMessage.DELIVERY_METHOD_NOT_FOUND); + } + } + + private assertCartHasPaymentMethod(cart: Cart) { + if (!cart.paymentMethodId) { + throw new BadRequestException(OrderMessage.PAYMENT_METHOD_REQUIRED); + } + } + + private async getUserOrFail(userId: string): Promise { + const user = await this.em.findOne(User, { id: userId }); + if (!user) throw new NotFoundException(OrderMessage.USER_NOT_FOUND); + return user; + } + + private async getRestaurantOrFail(restaurantId: string): Promise { + const restaurant = await this.em.findOne(Restaurant, { id: restaurantId }); + if (!restaurant) throw new NotFoundException(OrderMessage.RESTAURANT_NOT_FOUND); + return restaurant; + } + + private async getDeliveryOrFail(deliveryId: string): Promise { + const delivery = await this.em.findOne(Delivery, { id: deliveryId }); + if (!delivery) throw new NotFoundException(OrderMessage.DELIVERY_NOT_FOUND); + return delivery; + } + + private assertMeetsMinOrderForDelivery(cart: Cart, delivery: Delivery) { + const minOrderPrice = Number(delivery.minOrderPrice) || 0; + if (minOrderPrice > 0 && cart.total < minOrderPrice) { + throw new BadRequestException(OrderMessage.MIN_ORDER_AMOUNT_NOT_MET); + } + } + + private assertDeliveryMethodRequirements(cart: Cart, delivery: Delivery) { + if (delivery.method === DeliveryMethodEnum.DineIn) { + if (!cart.tableNumber || cart.tableNumber.trim() === '') { + throw new BadRequestException(OrderMessage.TABLE_NUMBER_REQUIRED); + } + } + + if (delivery.method === DeliveryMethodEnum.DeliveryCourier && !cart.userAddress) { + throw new BadRequestException(OrderMessage.ADDRESS_REQUIRED); + } + + if (delivery.method === DeliveryMethodEnum.DeliveryCar && !cart.carAddress) { + throw new BadRequestException(OrderMessage.CAR_ADDRESS_REQUIRED); + } + } + + private async getPaymentMethodOrFail(paymentMethodId: string, restaurantId: string): Promise { + const paymentMethod = await this.em.findOne( + PaymentMethod, + { + id: paymentMethodId, + restaurant: { id: restaurantId }, + }, + { populate: ['restaurant'] }, + ); + + if (!paymentMethod) { + throw new NotFoundException(`Payment method with ID ${paymentMethodId} not found for restaurant ${restaurantId}`); + } + + return paymentMethod; + } + + private assertPaymentMethodEnabled(paymentMethod: PaymentMethod) { + if (!paymentMethod.enabled) { + throw new BadRequestException(OrderMessage.PAYMENT_METHOD_NOT_ENABLED); + } + } + + private async buildOrderItemsData(cart: Cart, restaurantId: string): Promise { + const orderItemsData: OrderItemData[] = []; + + for (const cartItem of cart.items) { + const food = await this.em.findOne(Food, { id: cartItem.foodId }, { populate: ['restaurant', 'inventory'] }); + if (!food) throw new NotFoundException(OrderMessage.FOOD_NOT_FOUND); + + if (food.restaurant.id !== restaurantId) { + throw new BadRequestException(OrderMessage.FOOD_NOT_BELONGS_TO_RESTAURANT); + } + + this.assertFoodHasSufficientStock(food, cartItem.quantity); + + orderItemsData.push({ + food, + quantity: cartItem.quantity, + unitPrice: food.price || 0, + discount: food.discount || 0, + }); + } + + return orderItemsData; + } + + private assertFoodHasSufficientStock(food: Food, quantity: number) { + const availableStock = food.inventory?.availableStock ?? 0; + if (availableStock < quantity) { + throw new BadRequestException(OrderMessage.FOOD_NOT_FOUND); + } + } + + + async getStats(restId: string) { + return this.em.transactional(async em => { + // 1. Total orders count (excluding pending and canceled) + const totalOrders = await em.count(Order, { + restaurant: { id: restId }, + status: { + $in: [ + OrderStatus.PAID, + OrderStatus.PREPARING, + OrderStatus.DELIVERED_TO_WAITER, + OrderStatus.DELIVERED_TO_RECEPTIONIST, + OrderStatus.SHIPPED, + OrderStatus.COMPLETED, + ], + }, + }); + + // 2. Active foods count + const activeFoods = await em.count(Food, { + restaurant: { id: restId }, + isActive: true, + }); + + // 3. Total clients count (distinct users with orders for this restaurant) + const clientsResult = await em.execute( + ` + SELECT COUNT(DISTINCT o.user_id) as count + FROM orders o + WHERE o.restaurant_id = ? + `, + [restId], + ); + const totalClients = Number(clientsResult[0]?.count || 0); + + // 4. Total revenue (sum of paid payments for orders of this restaurant) + const revenueResult = await em.execute( + ` + SELECT COALESCE(SUM(p.amount), 0)::numeric as total + FROM payments p + INNER JOIN orders o ON p.order_id = o.id + WHERE o.restaurant_id = ? AND p.status = 'paid' + `, + [restId], + ); + const totalRevenue = Number(revenueResult[0]?.total || 0); + + return { + totalOrders, + activeFoods, + totalClients, + totalRevenue, + }; + }); + } + + async getFoodSalesPieChart(restId: string) { + return this.em.transactional(async em => { + // Use last 30 days instead of just last month to be more inclusive + const now = new Date(); + const endDate = new Date(now); + endDate.setHours(23, 59, 59, 999); + const startDate = new Date(now); + startDate.setDate(startDate.getDate() - 30); + startDate.setHours(0, 0, 0, 0); + + // Calculate actual last month for the period display + const firstDayOfLastMonth = new Date(now.getFullYear(), now.getMonth() - 1, 1); + firstDayOfLastMonth.setHours(0, 0, 0, 0); + const lastDayOfLastMonth = new Date(now.getFullYear(), now.getMonth(), 0, 23, 59, 59, 999); + + this.logger.debug( + `Food sales pie chart query params: restId=${restId}, startDate=${startDate.toISOString()}, endDate=${endDate.toISOString()}`, + ); + + // Diagnostic query to check what orders exist + const diagnosticResult = await em.execute( + ` + SELECT + o.id, + o.status, + o.created_at, + COUNT(oi.id) as item_count + FROM orders o + LEFT JOIN order_items oi ON oi.order_id = o.id + WHERE o.restaurant_id = ? + GROUP BY o.id, o.status, o.created_at + ORDER BY o.created_at DESC + LIMIT 10 + `, + [restId], + ); + this.logger.debug(`Diagnostic: Found ${diagnosticResult.length} recent orders for restaurant ${restId}`); + if (diagnosticResult.length > 0) { + this.logger.debug(`Sample order: status=${diagnosticResult[0].status}, created_at=${diagnosticResult[0].created_at}`); + } + + // Query order items from orders in the date range + // Only include completed orders (excluding canceled and pending) + const result = await em.execute( + ` + SELECT + f.id as food_id, + f.title as food_title, + COALESCE(SUM(oi.quantity), 0)::int as total_quantity, + COALESCE(SUM(oi.total_price), 0)::numeric as total_revenue + FROM order_items oi + INNER JOIN orders o ON oi.order_id = o.id + INNER JOIN foods f ON oi.food_id = f.id + WHERE o.restaurant_id = ? + AND o.created_at >= ? + AND o.created_at <= ? + AND o.status NOT IN ('pendingPayment', 'canceled') + GROUP BY f.id, f.title + ORDER BY total_revenue DESC + `, + [restId, startDate, endDate], + ); + + this.logger.debug(`Food sales pie chart query returned ${result.length} rows`); + + // Calculate total revenue for percentage calculation + const totalRevenue = result.reduce((sum: number, item: any) => { + return sum + Number(item.total_revenue || 0); + }, 0); + + // Format data for pie chart and calculate percentages + const chartData = result.map((item: any) => ({ + foodId: item.food_id, + foodTitle: item.food_title || 'Unknown', + quantity: Number(item.total_quantity || 0), + revenue: Number(item.total_revenue || 0), + percentage: totalRevenue > 0 ? Number(((Number(item.total_revenue || 0) / totalRevenue) * 100).toFixed(2)) : 0, + })); + + return { + period: { + startDate: firstDayOfLastMonth.toISOString(), + endDate: lastDayOfLastMonth.toISOString(), + }, + totalRevenue, + data: chartData, + }; + }); + } +} diff --git a/src/modules/orders/repositories/order.repository.ts b/src/modules/orders/repositories/order.repository.ts new file mode 100644 index 0000000..130d931 --- /dev/null +++ b/src/modules/orders/repositories/order.repository.ts @@ -0,0 +1,184 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { FilterQuery } from '@mikro-orm/core'; +import { Order } from '../entities/order.entity'; +import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; +import { OrderStatus } from '../interface/order.interface'; +import { PaymentMethodEnum, PaymentStatusEnum } from '../../payments/interface/payment'; +import { Review } from '../../review/entities/review.entity'; + +type FindOrdersOpts = { + page?: number; + limit?: number; + statuses?: OrderStatus[]; + paymentStatus?: PaymentStatusEnum; + search?: string; + startDate?: string; + endDate?: string; + orderBy?: string; + order?: 'asc' | 'desc'; + userId?: string; + excludeOnlinePendingPayment?: boolean; +}; + +@Injectable() +export class OrderRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Order); + } + + /** + * Find orders with pagination and optional filters. + * Supports: statuses, paymentStatus, search (orderNumber), date range, ordering. + */ + async findAllPaginated(restId: string, opts: FindOrdersOpts = {}): Promise> { + const { + page = 1, + limit = 10, + statuses, + search, + startDate, + endDate, + orderBy = 'createdAt', + order = 'desc', + userId, + excludeOnlinePendingPayment = false, + } = opts; + + const offset = (page - 1) * limit; + + const where: FilterQuery = { restaurant: { id: restId } }; + + // Filter by statuses + if (statuses) { + // Ensure statuses is always an array and normalize it + const normalizedStatuses = Array.isArray(statuses) ? statuses : [statuses]; + // Filter out any empty values + const validStatuses = normalizedStatuses.filter((s): s is OrderStatus => !!s); + + if (validStatuses.length > 0) { + // Use direct equality for single value, $in for multiple values to avoid SQL generation issues + if (validStatuses.length === 1) { + where.status = validStatuses[0]; + } else { + where.status = { $in: validStatuses }; + } + } + } + + if (userId) { + where.user = { id: userId }; + } + + // Filter by date range + if (startDate || endDate) { + where.createdAt = {}; + if (startDate) { + where.createdAt.$gte = new Date(startDate); + } + if (endDate) { + where.createdAt.$lte = new Date(endDate); + } + } + + // Search by order number or user information + if (search) { + const searchPattern = `%${search}%`; + const searchConditions: any[] = [ + { user: { firstName: { $ilike: searchPattern } } }, + { user: { lastName: { $ilike: searchPattern } } }, + { user: { phone: { $ilike: searchPattern } } }, + ]; + + // If search is numeric, also search by orderNumber + const numericSearch = Number(search); + if (!isNaN(numericSearch) && isFinite(numericSearch)) { + searchConditions.push({ orderNumber: numericSearch }); + } + + where.$or = searchConditions; + } + + // Filter: Exclude orders with payment method Online and status pending_payment + if (excludeOnlinePendingPayment) { + const existingConditions = where.$and || []; + where.$and = [ + ...existingConditions, + { + $or: [ + { paymentMethod: { method: { $ne: PaymentMethodEnum.Online } } }, + { status: { $ne: OrderStatus.PENDING_PAYMENT } }, + ], + }, + ]; + } + + // First, fetch orders without reviews + const [data, total] = await this.findAndCount(where, { + limit, + offset, + orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' }, + populate: ['user', 'restaurant', 'deliveryMethod', 'paymentMethod', 'items', 'items.food'] as never, + }); + + // Collect all (orderId, foodId) pairs for efficient review lookup + const orderFoodPairs: Array<{ orderId: string; foodId: string }> = []; + for (const order of data) { + for (const item of order.items.getItems()) { + if (item.food?.id) { + orderFoodPairs.push({ orderId: order.id, foodId: item.food.id }); + } + } + } + + // Fetch all relevant reviews in a single query + const reviewsMap: Map = new Map(); + if (orderFoodPairs.length > 0) { + const orderIds = [...new Set(orderFoodPairs.map(p => p.orderId))]; + const foodIds = [...new Set(orderFoodPairs.map(p => p.foodId))]; + + const reviews = await this.em.find( + Review, + { + order: { id: { $in: orderIds } }, + food: { id: { $in: foodIds } }, + }, + { + fields: ['id', 'order', 'food'], + populate: ['order', 'food'], + }, + ); + + // Create a map: key = `${orderId}-${foodId}`, value = reviewId + for (const review of reviews) { + const key = `${review.order.id}-${review.food.id}`; + reviewsMap.set(key, review.id); + } + } + + // Map reviewIds to foods + for (const order of data) { + for (const item of order.items.getItems()) { + if (item.food) { + const key = `${order.id}-${item.food.id}`; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const food = item.food as any; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + food.reviewId = reviewsMap.get(key) || null; + } + } + } + + const totalPages = Math.ceil(total / limit); + + return { + data, + meta: { + total, + page, + limit, + totalPages, + }, + }; + } +} diff --git a/src/modules/pager/controllers/pager.controller.ts b/src/modules/pager/controllers/pager.controller.ts new file mode 100644 index 0000000..c5a10e9 --- /dev/null +++ b/src/modules/pager/controllers/pager.controller.ts @@ -0,0 +1,101 @@ +import { Controller, Get, Post, Body, UseGuards, Res, Req, Patch, Param } from '@nestjs/common'; +import { PagerService } from '../providers/pager.service'; +import { CreatePagerDto } from '../dto/create-pager.dto'; +import { OptionalAuthGuard } from '../../auth/guards/optinalAuth.guard'; +import { RestId } from 'src/common/decorators/rest-id.decorator'; +import { UserId } from 'src/common/decorators/user-id.decorator'; +import { RestSlug } from 'src/common/decorators/rest-slug.decorator'; +import { ApiTags, ApiOperation, ApiBody, ApiHeader, ApiBearerAuth, ApiParam } from '@nestjs/swagger'; +import type { FastifyReply, FastifyRequest } from 'fastify'; +import { AdminAuthGuard } from '../../auth/guards/adminAuth.guard'; +import { AdminId } from 'src/common/decorators/admin-id.decorator'; +import { UpdatePagerStatusDto } from '../dto/update-pager.dto'; +import { PagerMessage } from 'src/common/enums/message.enum'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { Permission } from 'src/common/enums/permission.enum'; +import { API_HEADER_SLUG } from 'src/common/constants'; + +@ApiTags('pager') +@Controller() +export class PagerController { + constructor(private readonly pagerService: PagerService) { } + + @UseGuards(OptionalAuthGuard) + @Post('public/pager') + @ApiOperation({ summary: 'Create a new pager request' }) + @ApiHeader({ name: 'X-Slug', required: true, description: 'Restaurant slug identifier' }) + @ApiHeader({ name: 'Authorization', required: false, description: 'Bearer token (optional authentication)' }) + @ApiBody({ type: CreatePagerDto }) + async create( + @Body() createPagerDto: CreatePagerDto, + @Req() request: FastifyRequest, + @Res() reply: FastifyReply, + @RestSlug() slug: string, + @RestId() restId?: string, + @UserId() userId?: string, + ) { + // Convert empty strings to undefined for cleaner validation + const normalizedRestId = restId || undefined; + const normalizedUserId = userId || undefined; + const userCookieId = request.cookies['pagerId'] || undefined; + + const pager = await this.pagerService.create(createPagerDto, { + restId: normalizedRestId, + userId: normalizedUserId, + userCookieId, + slug, + }); + reply.setCookie('pagerId', pager.cookieId, { + httpOnly: true, + secure: process.env.NODE_ENV === 'production', + maxAge: 1000 * 60 * 60 * 24 * 1, // 1 days + path: '/', + }); + return reply.code(200).send({ + success: true, + message: PagerMessage.CREATED_SUCCESS, + data: null, + }); + } + + + @UseGuards(OptionalAuthGuard) + @Get('public/pager') + @ApiOperation({ summary: 'Get all pager requests for the current session' }) + @ApiHeader(API_HEADER_SLUG) + @ApiHeader({ name: 'Authorization', required: false, description: 'Bearer token (optional authentication)' }) + async findAll(@Req() request: FastifyRequest) { + const cookieId = request.cookies['pagerId'] || undefined; + if (!cookieId) { + return []; + } + return this.pagerService.findAll(cookieId); + } + + /******************** Admin Routes **********************/ + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_PAGER) + @ApiBearerAuth() + @Get('admin/pager') + @ApiOperation({ summary: 'Get all pager requests for the restaurant' }) + async findAllAdmin(@RestId() restId: string) { + return this.pagerService.findAllByRestaurantId(restId); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_PAGER) + @ApiBearerAuth() + @Patch('admin/pager/:pagerId/status') + @ApiParam({ name: 'pagerId', required: true, type: String }) + @ApiOperation({ summary: 'Update the status of a pager request' }) + @ApiBody({ type: UpdatePagerStatusDto }) + async updateStatus( + @Param('pagerId') pagerId: string, + @RestId() restId: string, + @AdminId() adminId: string, + @Body() dto: UpdatePagerStatusDto, + ) { + return this.pagerService.updateStatus(pagerId, restId, adminId, dto.status); + } +} diff --git a/src/modules/pager/decorators/ws-admin-id.decorator.ts b/src/modules/pager/decorators/ws-admin-id.decorator.ts new file mode 100644 index 0000000..18ed9c3 --- /dev/null +++ b/src/modules/pager/decorators/ws-admin-id.decorator.ts @@ -0,0 +1,26 @@ +import type { ExecutionContext } from '@nestjs/common'; +import { createParamDecorator } from '@nestjs/common'; +import type { AuthenticatedSocket } from '../guards/ws-admin-auth.guard'; + +/** + * Extract admin ID from authenticated WebSocket client + * Use this decorator in WebSocket handlers to get the adminId from the authenticated admin + * + * @example + * ```typescript + * @SubscribeMessage('some:event') + * handleEvent(@WsAdminId() adminId: string) { + * // adminId is automatically extracted from authenticated admin + * } + * ``` + */ +export const WsAdminId = createParamDecorator((data: unknown, ctx: ExecutionContext): string => { + const client = ctx.switchToWs().getClient(); + const adminId = client.adminId; + + if (!adminId) { + throw new Error('Admin ID not found. Ensure WsAdminAuthGuard is applied.'); + } + + return adminId; +}); diff --git a/src/modules/pager/decorators/ws-rest-id.decorator.ts b/src/modules/pager/decorators/ws-rest-id.decorator.ts new file mode 100644 index 0000000..bf556ef --- /dev/null +++ b/src/modules/pager/decorators/ws-rest-id.decorator.ts @@ -0,0 +1,26 @@ +import type { ExecutionContext } from '@nestjs/common'; +import { createParamDecorator } from '@nestjs/common'; +import type { AuthenticatedSocket } from '../guards/ws-admin-auth.guard'; + +/** + * Extract restaurant ID from authenticated WebSocket client + * Use this decorator in WebSocket handlers to get the restId from the authenticated admin + * + * @example + * ```typescript + * @SubscribeMessage('join:restaurant') + * handleJoinRestaurant(@WsRestId() restId: string) { + * // restId is automatically extracted from authenticated admin + * } + * ``` + */ +export const WsRestId = createParamDecorator((data: unknown, ctx: ExecutionContext): string => { + const client = ctx.switchToWs().getClient(); + const restId = client.restId; + + if (!restId) { + throw new Error('Restaurant ID not found. Ensure WsAdminAuthGuard is applied.'); + } + + return restId; +}); diff --git a/src/modules/pager/dto/create-pager.dto.ts b/src/modules/pager/dto/create-pager.dto.ts new file mode 100644 index 0000000..af5d45f --- /dev/null +++ b/src/modules/pager/dto/create-pager.dto.ts @@ -0,0 +1,15 @@ +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; + +import { IsNotEmpty, IsOptional, IsString } from 'class-validator'; + +export class CreatePagerDto { + @IsString() + @IsNotEmpty() + @ApiProperty({ description: 'Table number' }) + tableNumber!: string; + + @IsString() + @IsOptional() + @ApiPropertyOptional({ description: 'Message' }) + message?: string; +} diff --git a/src/modules/pager/dto/pager-socket-connection.dto.ts b/src/modules/pager/dto/pager-socket-connection.dto.ts new file mode 100644 index 0000000..49ed5c9 --- /dev/null +++ b/src/modules/pager/dto/pager-socket-connection.dto.ts @@ -0,0 +1,208 @@ +import type { PagerStatus } from '../interface/pager'; + +/** + * Socket connection configuration for admin pager module + * Used by frontend to establish WebSocket connection + */ +export interface PagerSocketConnectionConfig { + /** + * WebSocket server URL + * Example: 'http://localhost:3000' or 'https://api.example.com' + */ + serverUrl: string; + + /** + * Socket namespace (default: '/pager') + * The gateway is configured to use '/pager' namespace + */ + namespace?: string; + + /** + * JWT authentication token for admin + * Token should contain adminId and restId in payload + * Can be passed via auth.token, auth.authorization, query.token, or headers.authorization + * Example: { auth: { token: 'your-jwt-token' } } + */ + token: string; + + /** + * Optional: Additional connection options + */ + options?: { + /** + * Enable auto-reconnection + * @default true + */ + autoConnect?: boolean; + + /** + * Connection timeout in milliseconds + * @default 5000 + */ + timeout?: number; + + /** + * Enable transports (websocket, polling) + * @default ['websocket', 'polling'] + */ + transports?: ('websocket' | 'polling')[]; + }; +} + +/** + * Socket event names for pager module + */ +export enum PagerSocketEvents { + // Client to Server Events + JOIN_RESTAURANT = 'join:restaurant', + LEAVE_ROOM = 'leave:room', + GET_PAGERS = 'get:pagers', + UPDATE_PAGER_STATUS = 'update:pager:status', + + // Server to Client Events + JOINED = 'joined', + LEFT = 'left', + PAGER_CREATED = 'pager:created', + PAGER_STATUS_UPDATED = 'pager:status:updated', + PAGERS_LIST = 'pagers:list', + PAGER_STATUS_UPDATED_RESPONSE = 'pager:status:updated:response', + ERROR = 'error', + CONNECT = 'connect', + DISCONNECT = 'disconnect', +} + +/** + * Payload for joining restaurant room + * Note: restId is automatically extracted from JWT token, no need to send it + */ +export type JoinRestaurantPayload = Record; + +/** + * Payload for leaving a room + */ +export interface LeaveRoomPayload { + room: string; +} + +/** + * Payload for getting pagers list + * Note: restId is automatically extracted from JWT token, no need to send it + */ +export type GetPagersPayload = Record; + +/** + * Payload for updating pager status + * Note: restId and adminId are automatically extracted from JWT token + */ +export interface UpdatePagerStatusPayload { + pagerId: string; + status: PagerStatus; +} + +/** + * Response when successfully joined a room + */ +export interface JoinedResponse { + room: string; + message: string; +} + +/** + * Response when successfully left a room + */ +export interface LeftResponse { + room: string; + message: string; +} + +/** + * User information in pager response + */ +export interface PagerUserInfo { + id: string; + firstName: string; + lastName?: string; +} + +/** + * Staff information in pager response + */ +export interface PagerStaffInfo { + id: string; + firstName: string; + lastName?: string; +} + +/** + * Pager data structure emitted by socket events + */ +export interface PagerSocketData { + id: string; + tableNumber: string; + message?: string; + status: PagerStatus; + cookieId?: string; + createdAt?: Date | string; + updatedAt?: Date | string; + user?: PagerUserInfo | null; + staff?: PagerStaffInfo | null; +} + +/** + * Payload for pager:created event + */ +export interface PagerCreatedPayload { + pager: PagerSocketData; +} + +/** + * Payload for pager:status:updated event + */ +export interface PagerStatusUpdatedPayload { + pager: PagerSocketData; +} + +/** + * Payload for pagers:list event + */ +export interface PagersListPayload { + pagers: PagerSocketData[]; +} + +/** + * Payload for pager:status:updated:response event (response to update request) + */ +export interface PagerStatusUpdatedResponsePayload { + pager: PagerSocketData; +} + +/** + * Error response from socket + */ +export interface SocketErrorResponse { + message: string; + code?: string; + details?: unknown; +} + +/** + * Complete socket event map for type safety + */ +export interface PagerSocketEventMap { + // Client emits + [PagerSocketEvents.JOIN_RESTAURANT]: (payload?: JoinRestaurantPayload) => void; + [PagerSocketEvents.LEAVE_ROOM]: (payload: LeaveRoomPayload) => void; + [PagerSocketEvents.GET_PAGERS]: (payload?: GetPagersPayload) => void; + [PagerSocketEvents.UPDATE_PAGER_STATUS]: (payload: UpdatePagerStatusPayload) => void; + + // Server emits + [PagerSocketEvents.JOINED]: (response: JoinedResponse) => void; + [PagerSocketEvents.LEFT]: (response: LeftResponse) => void; + [PagerSocketEvents.PAGER_CREATED]: (payload: PagerCreatedPayload) => void; + [PagerSocketEvents.PAGER_STATUS_UPDATED]: (payload: PagerStatusUpdatedPayload) => void; + [PagerSocketEvents.PAGERS_LIST]: (payload: PagersListPayload) => void; + [PagerSocketEvents.PAGER_STATUS_UPDATED_RESPONSE]: (payload: PagerStatusUpdatedResponsePayload) => void; + [PagerSocketEvents.ERROR]: (error: SocketErrorResponse) => void; + [PagerSocketEvents.CONNECT]: () => void; + [PagerSocketEvents.DISCONNECT]: (reason: string) => void; +} diff --git a/src/modules/pager/dto/update-pager.dto.ts b/src/modules/pager/dto/update-pager.dto.ts new file mode 100644 index 0000000..e66b14b --- /dev/null +++ b/src/modules/pager/dto/update-pager.dto.ts @@ -0,0 +1,10 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsEnum, IsNotEmpty } from 'class-validator'; +import { PagerStatus } from '../interface/pager'; + +export class UpdatePagerStatusDto { + @ApiProperty({ description: 'Status of the pager', enum: PagerStatus }) + @IsEnum(PagerStatus) + @IsNotEmpty() + status!: PagerStatus; +} diff --git a/src/modules/pager/entities/pager.entity.ts b/src/modules/pager/entities/pager.entity.ts new file mode 100644 index 0000000..3c29bb2 --- /dev/null +++ b/src/modules/pager/entities/pager.entity.ts @@ -0,0 +1,30 @@ +import { Entity, ManyToOne, Property, Enum } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { User } from '../../users/entities/user.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { PagerStatus } from '../interface/pager'; +import { Admin } from 'src/modules/admin/entities/admin.entity'; + +@Entity({ tableName: 'pagers' }) +export class Pager extends BaseEntity { + @Property({ type: 'string' }) + cookieId!: string; + + @ManyToOne(() => Restaurant) + restaurant!: Restaurant; + + @Property({ type: 'string' }) + tableNumber!: string; + + @ManyToOne(() => User, { nullable: true }) + user?: User; + + @ManyToOne(() => Admin, { nullable: true }) + staff?: Admin; + + @Property({ type: 'string', nullable: true }) + message?: string; + + @Enum(() => PagerStatus) + status: PagerStatus = PagerStatus.Pending; +} diff --git a/src/modules/pager/events/pager.events.ts b/src/modules/pager/events/pager.events.ts new file mode 100644 index 0000000..a5236a6 --- /dev/null +++ b/src/modules/pager/events/pager.events.ts @@ -0,0 +1,6 @@ +export class PagerCreatedEvent { + constructor( + public readonly restaurantId: string, + public readonly tableNumber: string, + ) {} +} diff --git a/src/modules/pager/guards/ws-admin-auth.guard.ts b/src/modules/pager/guards/ws-admin-auth.guard.ts new file mode 100644 index 0000000..2e15939 --- /dev/null +++ b/src/modules/pager/guards/ws-admin-auth.guard.ts @@ -0,0 +1,104 @@ +import { CanActivate, ExecutionContext, Injectable, Logger, Inject } from '@nestjs/common'; +import { WsException } from '@nestjs/websockets'; +import { Socket } from 'socket.io'; +import { JwtService } from '@nestjs/jwt'; +import { ConfigService } from '@nestjs/config'; +import { IAdminTokenPayload } from '../../auth/interfaces/IToken-payload'; + +export interface AuthenticatedSocket extends Socket { + adminId?: string; + restId?: string; +} + +@Injectable() +export class WsAdminAuthGuard implements CanActivate { + private readonly logger = new Logger(WsAdminAuthGuard.name); + + constructor( + @Inject(JwtService) + private readonly jwtService: JwtService, + @Inject(ConfigService) + private readonly configService: ConfigService, + ) {} + + async canActivate(context: ExecutionContext): Promise { + const client: Socket = context.switchToWs().getClient(); + + try { + const token = this.extractToken(client); + + if (!token) { + this.logger.warn('No token provided in WebSocket connection', { + socketId: client.id, + auth: client.handshake.auth, + query: client.handshake.query, + }); + throw new WsException('Authentication required'); + } + + const secret = this.configService.getOrThrow('JWT_SECRET'); + const payload = await this.jwtService.verifyAsync(token, { + secret, + }); + + if (!payload.adminId || !payload.restId) { + this.logger.error('Invalid token payload structure', payload); + throw new WsException('Invalid token payload'); + } + + // Attach admin info to socket + (client as AuthenticatedSocket).adminId = payload.adminId; + (client as AuthenticatedSocket).restId = payload.restId; + + this.logger.log(`Admin authenticated via WebSocket: ${payload.adminId}, restId: ${payload.restId}`); + + return true; + } catch (error) { + if (error instanceof WsException) { + throw error; + } + this.logger.error('WebSocket authentication error', { + error: error instanceof Error ? error.message : 'Unknown error', + socketId: client.id, + }); + throw new WsException('Authentication failed'); + } + } + + private extractToken(client: Socket): string | undefined { + // Try to get token from handshake auth (recommended for socket.io) + const auth = client.handshake.auth; + const authToken = (auth?.token as string | undefined) || (auth?.authorization as string | undefined); + + if (authToken) { + // If it's "Bearer ", extract just the token + if (typeof authToken === 'string' && authToken.startsWith('Bearer ')) { + return authToken.substring(7); + } + return authToken; + } + + // Try to get from query parameters (fallback) + const queryToken = client.handshake.query?.token || client.handshake.query?.authorization; + + if (queryToken) { + if (typeof queryToken === 'string' && queryToken.startsWith('Bearer ')) { + return queryToken.substring(7); + } + return queryToken as string; + } + + // Try to get from headers (if available) + const headers = client.handshake.headers; + const authHeader = headers.authorization || headers['authorization']; + + if (authHeader && typeof authHeader === 'string') { + const [type, token] = authHeader.split(' '); + if (type?.toLowerCase() === 'bearer' && token) { + return token; + } + } + + return undefined; + } +} diff --git a/src/modules/pager/interface/pager.ts b/src/modules/pager/interface/pager.ts new file mode 100644 index 0000000..afe6fdc --- /dev/null +++ b/src/modules/pager/interface/pager.ts @@ -0,0 +1,6 @@ +export enum PagerStatus { + Pending = 'pending', + Acknowledged = 'acknowledged', + Rejected = 'rejected', + Completed = 'completed', +} diff --git a/src/modules/pager/listeners/notification.listeners.ts b/src/modules/pager/listeners/notification.listeners.ts new file mode 100644 index 0000000..c1960c6 --- /dev/null +++ b/src/modules/pager/listeners/notification.listeners.ts @@ -0,0 +1,64 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { OnEvent } from '@nestjs/event-emitter'; +import { AdminRepository } from 'src/modules/admin/repositories/admin.repository'; +import { PagerCreatedEvent } from '../events/pager.events'; +import { Permission } from 'src/common/enums/permission.enum'; +import { NotifTitleEnum } from 'src/modules/notifications/interfaces/notification.interface'; +import { NotificationService } from 'src/modules/notifications/services/notification.service'; +import { ConfigService } from '@nestjs/config'; + +@Injectable() +export class PagerListeners { + private readonly logger = new Logger(PagerListeners.name); + private readonly smsPatternPagerCreated: string + constructor( + private readonly adminService: AdminRepository, + private readonly notificationService: NotificationService, + private readonly configService: ConfigService, + ) { + this.smsPatternPagerCreated = this.configService.get('SMS_PATTERN_PAGER_CREATED') ?? '123'; + } + + @OnEvent(PagerCreatedEvent.name) + async handlePagerCreated(event: PagerCreatedEvent) { + try { + this.logger.log(`Pager created event received: ${event.restaurantId}`); + // get admnin os restuaraant that have pager permissuins + const admins = await this.adminService.findAdminsWithPermission(event.restaurantId, Permission.PAGER_NOTIFICATION); + const recipients = admins.map(admin => ({ + adminId: admin.id, + })); + await this.notificationService.sendNotification({ + restaurantId: event.restaurantId, + message: { + title: NotifTitleEnum.PAGER_CREATED, + content: `میز شماره ${event.tableNumber} پیج جدیدی انجام داد`, + sms: { + templateId: this.smsPatternPagerCreated, + parameters: { + tableNumber: event.tableNumber.toString(), + }, + }, + pushNotif: { + title: ` پیج جدید`, + content: `میز شماره ${event.tableNumber} پیج جدیدی انجام داد`, + icon: `/assets/images/logo.png`, + action: { + type: NotifTitleEnum.PAGER_CREATED, + url: `/restaurants/${event.restaurantId}/pagers`, + }, + }, + }, + recipients, + metadata: { + priority: 1, + }, + }); + } catch (error) { + this.logger.error( + `Failed to send notification for pager created event: ${event.restaurantId}`, + error instanceof Error ? error.stack : String(error), + ); + } + } +} diff --git a/src/modules/pager/pager.module.ts b/src/modules/pager/pager.module.ts new file mode 100644 index 0000000..486fadf --- /dev/null +++ b/src/modules/pager/pager.module.ts @@ -0,0 +1,17 @@ +import { Module } from '@nestjs/common'; +import { PagerService } from './providers/pager.service'; +import { PagerController } from './controllers/pager.controller'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { Pager } from './entities/pager.entity'; +import { JwtModule } from '@nestjs/jwt'; +import { RolesModule } from '../roles/roles.module'; +import { PagerListeners } from './listeners/notification.listeners'; +import { AdminModule } from '../admin/admin.module'; +import { NotificationsModule } from '../notifications/notifications.module'; + +@Module({ + imports: [MikroOrmModule.forFeature([Pager]), JwtModule, RolesModule, AdminModule, NotificationsModule], + controllers: [PagerController], + providers: [PagerService, PagerListeners], +}) +export class PagerModule {} diff --git a/src/modules/pager/providers/pager.service.ts b/src/modules/pager/providers/pager.service.ts new file mode 100644 index 0000000..1210551 --- /dev/null +++ b/src/modules/pager/providers/pager.service.ts @@ -0,0 +1,115 @@ +import { BadRequestException, Injectable, NotFoundException, Inject, forwardRef } from '@nestjs/common'; +import { CreatePagerDto } from '../dto/create-pager.dto'; +import { User } from '../../users/entities/user.entity'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { Pager } from '../entities/pager.entity'; +import { PagerStatus } from '../interface/pager'; +import { ulid } from 'ulid'; +import { Admin } from '../../admin/entities/admin.entity'; +import { PagerCreatedEvent } from '../events/pager.events'; +import { EventEmitter2 } from '@nestjs/event-emitter'; + +@Injectable() +export class PagerService { + constructor( + private readonly em: EntityManager, + // @Inject(forwardRef(() => PagerGateway)) + // private readonly pagerGateway: PagerGateway, + private readonly eventEmitter: EventEmitter2, + ) {} + + async create( + createPagerDto: CreatePagerDto, + params: { restId?: string; userId?: string; slug: string; userCookieId?: string }, + ) { + const { restId, userId, slug, userCookieId } = params; + let restaurant: Restaurant | null = null; + let user: User | null = null; + if (!restId && !userId && !slug) { + throw new BadRequestException('Invalid parameters'); + } + if (restId) { + restaurant = await this.em.findOne(Restaurant, { id: restId }); + if (!restaurant) { + throw new NotFoundException('Restaurant not found'); + } + } + if (userId) { + user = await this.em.findOne(User, { id: userId }); + if (!user) { + throw new NotFoundException('User not found'); + } + } + if (!restaurant && slug) { + restaurant = await this.em.findOne(Restaurant, { slug }); + if (!restaurant) { + throw new NotFoundException('Restaurant not found'); + } + } + const cookieId = userCookieId || ulid().toString(); + // const existingPager = await this.em.findOne(Pager, { + // restaurant: { id: restaurant!.id }, + // status: PagerStatus.Pending, + // cookieId, + // }); + // if (existingPager) { + // throw new BadRequestException('Pager already exists'); + // } + + const pager = this.em.create(Pager, { + ...createPagerDto, + restaurant: restaurant!, + user, + cookieId: ulid().toString(), + status: PagerStatus.Pending, + }); + + await this.em.persistAndFlush(pager); + + // Populate relations before emitting + await this.em.populate(pager, ['restaurant']); + // Emit socket event for new pager + this.eventEmitter.emit(PagerCreatedEvent.name, new PagerCreatedEvent(pager.restaurant.id, pager.tableNumber)); + + return pager; + } + + async findAll(cookieId: string) { + const pagers = await this.em.find(Pager, { cookieId }, { populate: ['user'] }); + return pagers; + } + + async findAllByRestaurantId(restId: string) { + const pagers = await this.em.find(Pager, { restaurant: { id: restId } }, { populate: ['user'] }); + return pagers; + } + + async updateStatus(pagerId: string, restId: string, staffId: string, status: PagerStatus) { + const pager = await this.em.findOne( + Pager, + { id: pagerId, restaurant: { id: restId } }, + { populate: ['restaurant'] }, + ); + if (!pager) { + throw new NotFoundException('Pager not found *'); + } + const staff = await this.em.findOne(Admin, { id: staffId }); + if (!staff) { + throw new NotFoundException('Staff not found'); + } + pager.status = status; + if (status === PagerStatus.Acknowledged) { + pager.staff = staff; + } + await this.em.persistAndFlush(pager); + + // Populate relations before emitting + await this.em.populate(pager, ['restaurant', 'staff', 'user']); + + // Emit socket event for status update + // this.pagerGateway.emitPagerStatusUpdated(pager); + + return pager; + } +} diff --git a/src/modules/payments/controllers/payments.controller.ts b/src/modules/payments/controllers/payments.controller.ts new file mode 100644 index 0000000..a9d208e --- /dev/null +++ b/src/modules/payments/controllers/payments.controller.ts @@ -0,0 +1,143 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards, Query } from '@nestjs/common'; +import { PaymentsService } from '../services/payments.service'; +import { + ApiTags, + ApiOperation, + ApiNotFoundResponse, + ApiBody, + ApiParam, + ApiBearerAuth, + ApiHeader, +} from '@nestjs/swagger'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { PaymentMethodService } from '../services/payment-method.service'; +import { CreatePaymentMethodDto } from '../dto/create-payment-method.dto'; +import { UpdatePaymentMethodDto } from '../dto/update-payment-method.dto'; +import { VerifyPaymentDto } from '../dto/verify-payment.dto'; +import { PaymentChartDto } from '../dto/payment-chart.dto'; +import { RestId, UserId } from 'src/common/decorators'; +import { AuthGuard } from 'src/modules/auth/guards/auth.guard'; +import { API_HEADER_SLUG } from 'src/common/constants'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { Permission } from 'src/common/enums/permission.enum'; + +@ApiTags('payments') +@Controller() +export class PaymentsController { + constructor( + private readonly paymentsService: PaymentsService, + private readonly paymentMethodService: PaymentMethodService, + ) { } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Get('public/payments/methods/restaurant') + @ApiOperation({ summary: 'Get the restaurant payment methods' }) + @ApiHeader(API_HEADER_SLUG) + @ApiNotFoundResponse({ description: 'Restaurant payment methods not found' }) + getTheRestaurantPaymentMethods(@RestId() restId: string) { + return this.paymentMethodService.findByRestaurant(restId); + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Get('public/payments') + @ApiOperation({ summary: 'Get all the restaurant payments for user' }) + @ApiHeader(API_HEADER_SLUG) + findAllByRestaurant(@UserId() userId: string, @RestId() restId: string) { + return this.paymentsService.findAllPaymentsByRestaurantId(restId, userId); + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Get('public/payments/pay-order/:orderId') + @ApiOperation({ summary: 'Pay for an order' }) + @ApiParam({ name: 'orderId', type: 'string', description: 'Order ID' }) + @ApiHeader(API_HEADER_SLUG) + payAnOrder(@Param('orderId') orderId: string) { + return this.paymentsService.payOrder(orderId); + } + + @Post('public/payments/verify') + @ApiOperation({ summary: 'Verify a payment' }) + @ApiHeader(API_HEADER_SLUG) + @ApiBody({ type: VerifyPaymentDto }) + @ApiNotFoundResponse({ description: 'Payment not found' }) + verifyPayment(@Body() verifyPaymentDto: VerifyPaymentDto) { + return this.paymentsService.verifyOnlinePayment(verifyPaymentDto.authority, verifyPaymentDto.orderId); + } + + /** admin routes */ + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_PAYMENTS) + @ApiBearerAuth() + @Get('admin/payments/methods') + @ApiOperation({ summary: 'Get restaurant all payment methods' }) + findByRestaurant(@RestId() restId: string) { + return this.paymentMethodService.findByRestaurant(restId); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_PAYMENTS) + @ApiBearerAuth() + @Post('admin/payments/methods') + @ApiOperation({ summary: 'Create a new restaurant payment method' }) + @ApiBody({ type: CreatePaymentMethodDto }) + createRestaurantPaymentMethod(@RestId() restId: string, @Body() createPaymentMethodDto: CreatePaymentMethodDto) { + return this.paymentMethodService.create(restId, createPaymentMethodDto); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_PAYMENTS) + @ApiBearerAuth() + @Get('admin/payments/methods/:paymentMethodId') + @ApiOperation({ summary: 'Get restaurant payment method by ID' }) + @ApiParam({ name: 'paymentMethodId', type: 'string', description: 'Payment method ID' }) + findOneRestaurantPaymentMethod(@Param('paymentMethodId') paymentMethodId: string) { + return this.paymentMethodService.findOne(paymentMethodId); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_PAYMENTS) + @ApiBearerAuth() + @Patch('admin/payments/methods/:paymentMethodId') + @ApiOperation({ summary: 'Update a restaurant payment method' }) + @ApiParam({ name: 'paymentMethodId', type: 'string', description: 'Payment method ID' }) + @ApiBody({ type: UpdatePaymentMethodDto }) + updateRestaurantPaymentMethod( + @Param('paymentMethodId') paymentMethodId: string, + @Body() updatePaymentMethodDto: UpdatePaymentMethodDto, + ) { + return this.paymentMethodService.update(paymentMethodId, updatePaymentMethodDto); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_PAYMENTS) + @ApiBearerAuth() + @Delete('admin/payments/methods/:paymentMethodId') + @ApiOperation({ summary: 'Delete a restaurant payment method' }) + @ApiParam({ name: 'paymentMethodId', type: 'string', description: 'Payment method ID' }) + removeRestaurantPaymentMethod(@Param('paymentMethodId') paymentMethodId: string) { + return this.paymentMethodService.remove(paymentMethodId); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_PAYMENTS) + @ApiBearerAuth() + @Post('admin/payments/verify-cash-method/:paymentId') + @ApiOperation({ summary: 'Verify cash payment ' }) + @ApiParam({ name: 'paymentId', type: 'string', description: 'Payment ID' }) + verifyCashPayment(@Param('paymentId') paymentId: string) { + return this.paymentsService.verifyCashPayment(paymentId); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.VIEW_REPORTS) + @ApiBearerAuth() + @Get('admin/payments/chart') + @ApiOperation({ summary: 'Get payment chart data with date and period filters' }) + @ApiHeader(API_HEADER_SLUG) + getPaymentChart(@Query() query: PaymentChartDto, @RestId() restId: string) { + return this.paymentsService.getChartData(query, restId); + } +} diff --git a/src/modules/payments/dto/create-payment-method.dto.ts b/src/modules/payments/dto/create-payment-method.dto.ts new file mode 100644 index 0000000..24acc82 --- /dev/null +++ b/src/modules/payments/dto/create-payment-method.dto.ts @@ -0,0 +1,35 @@ +import { IsString, IsOptional, IsBoolean, IsNumber, IsEnum } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; +import { PaymentMethodEnum, PaymentGatewayEnum } from '../interface/payment'; + +export class CreatePaymentMethodDto { + + @ApiProperty({ description: 'Payment method', enum: PaymentMethodEnum }) + @IsEnum(PaymentMethodEnum) + method!: PaymentMethodEnum; + + @ApiProperty({ description: 'Payment gateway', enum: PaymentGatewayEnum, required: false }) + @IsOptional() + @IsEnum(PaymentGatewayEnum) + gateway?: PaymentGatewayEnum | null; + + @ApiProperty({ description: 'Payment method description', required: false }) + @IsOptional() + @IsString() + description?: string; + + @ApiProperty({ description: 'Is payment method enabled', required: false, default: true }) + @IsOptional() + @IsBoolean() + enabled?: boolean; + + @ApiProperty({ description: 'Display order', required: false, default: 0 }) + @IsOptional() + @IsNumber() + order?: number; + + @ApiProperty({ description: 'Merchant ID', required: false }) + @IsOptional() + @IsString() + merchantId?: string; +} diff --git a/src/modules/payments/dto/payment-chart.dto.ts b/src/modules/payments/dto/payment-chart.dto.ts new file mode 100644 index 0000000..ae1f87b --- /dev/null +++ b/src/modules/payments/dto/payment-chart.dto.ts @@ -0,0 +1,41 @@ +import { IsOptional, IsString, IsEnum, IsDateString } from 'class-validator'; +import { ApiPropertyOptional } from '@nestjs/swagger'; + +export enum ChartPeriodEnum { + Daily = 'daily', + Weekly = 'weekly', + Monthly = 'monthly', +} + +export class PaymentChartDto { + @ApiPropertyOptional({ + description: 'Start date for filtering (ISO date string)', + type: String, + format: 'date-time', + example: '2024-01-01T00:00:00Z', + }) + @IsOptional() + @IsDateString() + startDate?: string; + + @ApiPropertyOptional({ + description: 'End date for filtering (ISO date string)', + type: String, + format: 'date-time', + example: '2024-12-31T23:59:59Z', + }) + @IsOptional() + @IsDateString() + endDate?: string; + + @ApiPropertyOptional({ + description: 'Period type for grouping data', + enum: ChartPeriodEnum, + default: ChartPeriodEnum.Daily, + example: ChartPeriodEnum.Daily, + }) + @IsOptional() + @IsEnum(ChartPeriodEnum) + type?: ChartPeriodEnum = ChartPeriodEnum.Daily; +} + diff --git a/src/modules/payments/dto/update-payment-method.dto.ts b/src/modules/payments/dto/update-payment-method.dto.ts new file mode 100644 index 0000000..7151364 --- /dev/null +++ b/src/modules/payments/dto/update-payment-method.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/mapped-types'; +import { CreatePaymentMethodDto } from './create-payment-method.dto'; + +export class UpdatePaymentMethodDto extends PartialType(CreatePaymentMethodDto) {} diff --git a/src/modules/payments/dto/update-payment.dto.ts b/src/modules/payments/dto/update-payment.dto.ts new file mode 100644 index 0000000..a3d0fd2 --- /dev/null +++ b/src/modules/payments/dto/update-payment.dto.ts @@ -0,0 +1,8 @@ +import { IsNumber } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; + +export class UpdatePaymentDto { + @ApiProperty({ description: 'Payment ID' }) + @IsNumber() + id: number; +} diff --git a/src/modules/payments/dto/verify-payment.dto.ts b/src/modules/payments/dto/verify-payment.dto.ts new file mode 100644 index 0000000..06d5ecb --- /dev/null +++ b/src/modules/payments/dto/verify-payment.dto.ts @@ -0,0 +1,12 @@ +import { IsString } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; + +export class VerifyPaymentDto { + @ApiProperty({ description: 'Payment authority token' }) + @IsString() + authority: string; + + @ApiProperty({ description: 'Payment order id' }) + @IsString() + orderId: string; +} diff --git a/src/modules/payments/entities/payment-method.entity.ts b/src/modules/payments/entities/payment-method.entity.ts new file mode 100644 index 0000000..63f5ad9 --- /dev/null +++ b/src/modules/payments/entities/payment-method.entity.ts @@ -0,0 +1,30 @@ +import { Entity, Enum, Index, ManyToOne, Property, Unique } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Restaurant } from 'src/modules/restaurants/entities/restaurant.entity'; +import { PaymentGatewayEnum, PaymentMethodEnum } from '../interface/payment'; + +@Entity({ tableName: 'payment_methods' }) +@Unique({ properties: ['restaurant', 'method'] }) +@Index({ properties: ['restaurant', 'enabled'] }) +export class PaymentMethod extends BaseEntity { + @ManyToOne(() => Restaurant) + restaurant!: Restaurant; + + @Enum(() => PaymentMethodEnum) + method!: PaymentMethodEnum; + + @Enum(() => PaymentGatewayEnum) + gateway: PaymentGatewayEnum | null = null; + + @Property({ nullable: true }) + description?: string; + + @Property({ default: true }) + enabled: boolean = true; + + @Property({ type: 'integer', default: 0 }) + order: number = 0; + + @Property({ nullable: true }) + merchantId?: string; +} diff --git a/src/modules/payments/entities/payment.entity.ts b/src/modules/payments/entities/payment.entity.ts new file mode 100644 index 0000000..5f2827e --- /dev/null +++ b/src/modules/payments/entities/payment.entity.ts @@ -0,0 +1,44 @@ +import { Entity, ManyToOne, Property, Enum, Index } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Order } from '../../orders/entities/order.entity'; +import { PaymentGatewayEnum, PaymentMethodEnum, PaymentStatusEnum } from '../interface/payment'; + +@Entity({ tableName: 'payments' }) +export class Payment extends BaseEntity { + @ManyToOne(() => Order) + @Index() + order!: Order; + + @Property({ type: 'decimal', precision: 10, scale: 0 }) + amount!: number; + + @Property({ unique: true, nullable: true }) + referenceId?: string | null; + + @Enum(() => PaymentMethodEnum) + method!: PaymentMethodEnum; + + @Enum(() => PaymentGatewayEnum) + gateway?: PaymentGatewayEnum | null = null; + + @Property({ nullable: true }) + transactionId?: string | null = null; + + @Enum(() => PaymentStatusEnum) + status!: PaymentStatusEnum; + + @Property({ nullable: true }) + cardPan?: string | null = null; + + @Property({ type: 'json', nullable: true }) + verifyResponse?: Record | null = null; + + @Property({ nullable: true }) + paidAt?: Date | null = null; + + @Property({ nullable: true }) + failedAt?: Date | null = null; + + @Property({ nullable: true }) + description?: string | null = null; +} diff --git a/src/modules/payments/events/payment.events.ts b/src/modules/payments/events/payment.events.ts new file mode 100644 index 0000000..3fbc443 --- /dev/null +++ b/src/modules/payments/events/payment.events.ts @@ -0,0 +1,23 @@ +import { PaymentMethodEnum } from "../interface/payment"; + +export class paymentSucceedEvent { + constructor( + public readonly orderId: string, + public readonly restaurantId: string, + public readonly orderNumber: string, + public readonly paymentMethod: PaymentMethodEnum, + public readonly total: number + ) { } +} + + + +export class onlinePaymentSucceedEvent { + constructor( + public readonly paymentId: string, + public readonly orderId: string, + public readonly restaurantId: string, + public readonly orderNumber: string, + public readonly total: number, + ) { } +} \ No newline at end of file diff --git a/src/modules/payments/gateways/gateway.manager.ts b/src/modules/payments/gateways/gateway.manager.ts new file mode 100644 index 0000000..b441fe8 --- /dev/null +++ b/src/modules/payments/gateways/gateway.manager.ts @@ -0,0 +1,20 @@ +import { BadRequestException, Injectable } from '@nestjs/common'; +import { PaymentGatewayEnum } from '../interface/payment'; +import { ZarinpalGateway } from './zarinpal.gateway'; +import { IPaymentGateway } from '../interface/gateway'; + +@Injectable() +export class GatewayManager { + constructor( + private readonly zarinpal: ZarinpalGateway, + ) { } + + get(gateway: PaymentGatewayEnum): IPaymentGateway { + switch (gateway) { + case PaymentGatewayEnum.ZarinPal: + return this.zarinpal; + default: + throw new BadRequestException(`Unsupported gateway: ${gateway}`); + } + } +} diff --git a/src/modules/payments/gateways/zarinpal.gateway.ts b/src/modules/payments/gateways/zarinpal.gateway.ts new file mode 100755 index 0000000..5b26c6e --- /dev/null +++ b/src/modules/payments/gateways/zarinpal.gateway.ts @@ -0,0 +1,158 @@ +import { Injectable, Logger, BadRequestException } from '@nestjs/common'; +import axios from 'axios'; +import { + IPaymentGateway, + IPaymentVerifyParams, + IRequestPaymentData, + IRequestPaymentParams, + IPaymentVerifyData, + IZarinpalPaymentResponse, + IZarinpalRequestPayment, + IZarinpalVerifyRequest, + IZarinpalVerifyResponse, +} from '../interface/gateway'; +import { ConfigService } from '@nestjs/config'; +import { PaymentMessage } from 'src/common/enums/message.enum'; + +@Injectable() +export class ZarinpalGateway implements IPaymentGateway { + private readonly logger = new Logger(ZarinpalGateway.name); + private readonly zarinpalRequestUrl: string; + private readonly zarinpalVerifyUrl: string; + private readonly zarinpalPaymentBaseUrl: string; + private readonly axiosConfig = { + timeout: 10_000, + headers: { + 'Content-Type': 'application/json', + }, + }; + + constructor(private readonly configService: ConfigService) { + const zarinpalBaseUrl = this.configService.get('ZARINPAL_BASE_URL') || 'https://sandbox.zarinpal.com'; + this.zarinpalPaymentBaseUrl = zarinpalBaseUrl; + this.zarinpalRequestUrl = `${zarinpalBaseUrl}/pg/v4/payment/request.json`; + this.zarinpalVerifyUrl = `${zarinpalBaseUrl}/pg/v4/payment/verify.json`; + } + + private getAxiosErrorData(error: unknown): { status?: number; data?: unknown } | null { + if (!axios.isAxiosError(error) || !error.response) return null; + return { status: error.response.status, data: error.response.data }; + } + + async requestPayment({ amount, merchantId, orderId, domain }: IRequestPaymentParams): Promise { + // Transform camelCase to snake_case for Zarinpal API v4 + const callbackUrl = `${domain}/verify/${orderId}`; + const zarinpalRequest: IZarinpalRequestPayment = { + amount, + merchant_id: merchantId, + description: `Payment for order #${orderId}`, + callback_url: callbackUrl, + currency: 'IRT', + metadata: { + order_id: orderId, + }, + }; + + try { + const res = await axios.post( + this.zarinpalRequestUrl, + zarinpalRequest, + this.axiosConfig, + ); + const { data, errors } = res.data ?? {}; + const code = data?.code; + const message = data?.message; + const authority = data?.authority; + + if (!data) { + this.logger.error('Invalid response from Zarinpal API (missing data)', JSON.stringify(res.data)); + throw new BadRequestException(PaymentMessage.ZARINPAL_INVALID_RESPONSE); + } + + if ((Array.isArray(errors) && errors.length > 0) || code !== 100 || !authority) { + this.logger.error( + 'Zarinpal payment request failed', + JSON.stringify({ + code, + message, + errors, + callbackUrl, + amount, + orderId, + }), + ); + throw new BadRequestException(message ?? PaymentMessage.ZARINPAL_PAYMENT_REQUEST_ERROR); + } + + return { transactionId: authority }; + } catch (error) { + if (error instanceof BadRequestException) throw error; + + const axiosErr = this.getAxiosErrorData(error); + if (axiosErr) { + this.logger.error( + 'Zarinpal payment request axios error', + JSON.stringify({ + status: axiosErr.status, + data: axiosErr.data, + callbackUrl, + amount, + orderId, + }), + ); + throw new BadRequestException(PaymentMessage.ZARINPAL_PAYMENT_REQUEST_ERROR); + } + + const errorMessage = error instanceof Error ? error.message : 'Unknown error'; + this.logger.error('Zarinpal payment request error', errorMessage); + throw new BadRequestException(PaymentMessage.GATEWAY_ERROR); + } + } + + async verifyPayment({ merchantId, amount, transactionId }: IPaymentVerifyParams): Promise { + try { + // Transform camelCase to snake_case for Zarinpal API v4 + const zarinpalVerifyRequest: IZarinpalVerifyRequest = { + merchant_id: merchantId, + amount, + authority: transactionId, + }; + + const res = await axios.post( + this.zarinpalVerifyUrl, + zarinpalVerifyRequest, + this.axiosConfig, + ); + + // Check if response data exists + if (!res.data || !res.data.data) { + throw new BadRequestException(PaymentMessage.ZARINPAL_INVALID_RESPONSE); + } + + const { code, message, ref_id, card_pan } = res.data.data; + + // Check if there are errors in the response + if (code !== 100 && code !== 0) { + throw new BadRequestException(message ?? PaymentMessage.ZARINPAL_VERIFY_ERROR); + } + + return { + success: code === 100, + referenceId: ref_id ? ref_id.toString() : '', + cardPan: card_pan, + raw: res.data, + }; + } catch (error) { + if (axios.isAxiosError(error) && error.response) { + this.logger.error('Zarinpal verify failed', error.response.data); + throw new BadRequestException(error.response.data); + } + const errorMessage = error instanceof Error ? error.message : 'Unknown error'; + throw new BadRequestException(PaymentMessage.GATEWAY_ERROR); + } + } + + getPaymentUrl(authority: string): string { + return `${this.zarinpalPaymentBaseUrl}/pg/StartPay/${authority}`; + } +} diff --git a/src/modules/payments/interface/gateway.ts b/src/modules/payments/interface/gateway.ts new file mode 100644 index 0000000..f336f2c --- /dev/null +++ b/src/modules/payments/interface/gateway.ts @@ -0,0 +1,70 @@ +export interface IPaymentGateway { + requestPayment(requestPaymentParams: IRequestPaymentParams): Promise; + verifyPayment(verifyPaymentParam: IPaymentVerifyParams): Promise; + getPaymentUrl(authority: string): string; +} + +export interface IRequestPaymentParams { + amount: number; + merchantId: string; + domain: string; + orderId: string; +} + +export interface IRequestPaymentData { + transactionId: string; +} + +export interface IPaymentVerifyParams { + amount: number; + merchantId: string; + transactionId: string; +} + +export interface IPaymentVerifyData { + success: boolean; + referenceId: string; + cardPan?: string; + raw: Record; +} +////////////////////////// Zarinpal API v4 ////////////////////////// +export interface IZarinpalRequestPayment { + amount: number; + merchant_id: string; + description: string; + callback_url: string; + metadata?: { + order_id?: string; + mobile?: string; + email?: string; + }; + referrer_id?: string; + currency: 'IRT'; +} +export interface IZarinpalPaymentResponse { + data: { + code: number; + message: string; + authority: string; + fee_type: string; + fee: number; + }; + errors: unknown[]; +} +export interface IZarinpalVerifyRequest { + merchant_id: string; + amount: number; + authority: string; +} +export interface IZarinpalVerifyResponse { + data: { + code: number; + message: string; + card_hash: string; + card_pan: string; + ref_id: number; + fee_type: string; + fee: number; + }; + errors: unknown[]; +} diff --git a/src/modules/payments/interface/payment.ts b/src/modules/payments/interface/payment.ts new file mode 100644 index 0000000..6fd70c2 --- /dev/null +++ b/src/modules/payments/interface/payment.ts @@ -0,0 +1,33 @@ +import type { Order } from 'src/modules/orders/entities/order.entity'; + +export enum PaymentMethodEnum { + Online = 'Online', + Cash = 'Cash', + Wallet = 'Wallet', +} +export enum PaymentStatusEnum { + Pending = 'pending', + Paid = 'paid', + Failed = 'failed', + Refunded = 'refunded', +} +export enum PaymentGatewayEnum { + ZarinPal = 'zarinpal', +} + +export interface ICreatePayment { + orderId: string; + amount: number; + method: PaymentMethodEnum; + transactionId: string; + gateway?: PaymentGatewayEnum | null; +} + +export interface OrderPaymentContext { + order: Order; + amount: number; + method: PaymentMethodEnum; + gateway: PaymentGatewayEnum | null; + merchantId: string | null; + restaurantDomain: string | null; +} diff --git a/src/modules/payments/listeners/payment.listeners.ts b/src/modules/payments/listeners/payment.listeners.ts new file mode 100644 index 0000000..ed60ca7 --- /dev/null +++ b/src/modules/payments/listeners/payment.listeners.ts @@ -0,0 +1,170 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { OnEvent } from '@nestjs/event-emitter'; +import { AdminRepository } from 'src/modules/admin/repositories/admin.repository'; +import { onlinePaymentSucceedEvent, paymentSucceedEvent } from '../events/payment.events'; +import { Permission } from 'src/common/enums/permission.enum'; +import { NotifTitleEnum } from 'src/modules/notifications/interfaces/notification.interface'; +import { NotificationService } from 'src/modules/notifications/services/notification.service'; +import { ConfigService } from '@nestjs/config'; +import { OrdersService } from 'src/modules/orders/providers/orders.service'; + +@Injectable() +export class PaymentListeners { + private readonly logger = new Logger(PaymentListeners.name); + private orderCreatedSmsTemplateId: string; + private paymentSucceedSmsTemplateId: string; + constructor( + private readonly adminService: AdminRepository, + private readonly notificationService: NotificationService, + private readonly configService: ConfigService, + private readonly orderService: OrdersService, + ) { + this.orderCreatedSmsTemplateId = this.configService.get('SMS_PATTERN_ORDER_CREATED') ?? '123'; + this.paymentSucceedSmsTemplateId = this.configService.get('SMS_PATTERN_ONLINE_PAYMENT_SUCCEED') ?? '123'; + } + + private getPaymentMethodFarsi(method: string): string { + const methodMap: Record = { + Cash: 'نقدی', + Wallet: 'کیف پول', + Online: 'آنلاین', + }; + return methodMap[method] || method; + } + + @OnEvent(paymentSucceedEvent.name) + async handlePaymentSucceed(event: paymentSucceedEvent) { + try { + this.logger.log( + `Payment paid event received: ${event.orderId} for restaurant: ${event.restaurantId} and order number: ${event.orderNumber}`, + ); + // get admnin os restuaraant that have order permissuins + const admins = await this.adminService.findAdminsWithPermission(event.restaurantId, Permission.MANAGE_ORDERS); + // const order=await + const recipients = admins.map(admin => ({ + adminId: admin.id, + })); + await this.notificationService.sendNotification({ + restaurantId: event.restaurantId, + message: { + title: NotifTitleEnum.PAYMENT_SUCCESS, + content: `پرداخت سفارش شماره ${event.orderNumber} با روش ${this.getPaymentMethodFarsi(event.paymentMethod)} و مبلغ ${event.total} تومان با موفقیت انجام شد`, + sms: { + templateId: this.orderCreatedSmsTemplateId, + parameters: { + orderNumber: event.orderNumber, + + }, + }, + pushNotif: { + title: `پرداخت موفق`, + content: `پرداخت سفارش شماره ${event.orderNumber} با روش ${this.getPaymentMethodFarsi(event.paymentMethod)} و مبلغ ${event.total} تومان با موفقیت انجام شد`, + icon: ``, + action: { + type: NotifTitleEnum.PAYMENT_SUCCESS, + url: `/`, + }, + }, + }, + recipients, + metadata: { + priority: 1, + }, + }); + } catch (error) { + this.logger.error( + `Failed to send notification for order created event: ${event.restaurantId}`, + error instanceof Error ? error.stack : String(error), + ); + } + } + + @OnEvent(onlinePaymentSucceedEvent.name) + async handleOnlinePaymentSucceed(event: onlinePaymentSucceedEvent) { + try { + + this.logger.log( + `Online payment succeed event received: ${event.paymentId} for restaurant: ${event.restaurantId} and order number: ${event.orderNumber}`, + ); + const admins = await this.adminService.findAdminsWithPermission(event.restaurantId, Permission.MANAGE_ORDERS); + const recipients = admins.map(admin => ({ + adminId: admin.id, + })); + + // admin notifs + await this.notificationService.sendNotification({ + restaurantId: event.restaurantId, + message: { + title: NotifTitleEnum.ORDER_CREATED, + content: `سفارش شماره ${event.orderNumber} با مبلغ ${event.total} تومان با موفقیت ایجاد شد`, + sms: { + templateId: this.orderCreatedSmsTemplateId, + parameters: { + orderNumber: event.orderNumber, + total: event.total.toString(), + }, + }, + pushNotif: { + title: `سفارش جدید`, + content: `سفارش شماره ${event.orderNumber} با مبلغ ${event.total} تومان با موفقیت ایجاد شد`, + icon: `/`, + action: { + type: NotifTitleEnum.ORDER_CREATED, + url: `/`, + }, + }, + }, + recipients, + metadata: { + priority: 1, + }, + }); + + const order = await this.orderService.findOne(event.orderId, event.restaurantId); + if (!order) { + this.logger.error( + `Order not found: ${event.orderId} for restaurant: ${event.restaurantId}`, + ); + return; + } + const userRecipients = [ + { + userId: order.user.id, + }, + ]; + // user notif + await this.notificationService.sendNotification({ + restaurantId: event.restaurantId, + message: { + title: NotifTitleEnum.PAYMENT_SUCCESS, + content: `پرداخت سفارش شماره ${order.orderNumber} با روش ${this.getPaymentMethodFarsi(order.paymentMethod.method)} و مبلغ ${order.total} تومان با موفقیت انجام شد`, + sms: { + templateId: this.paymentSucceedSmsTemplateId, + parameters: { + orderNumber: event.orderNumber, + total: event.total.toString(), + }, + }, + pushNotif: { + title: `پرداخت موفق`, + content: `پرداخت سفارش شماره ${order.orderNumber} با روش ${this.getPaymentMethodFarsi(order.paymentMethod.method)} و مبلغ ${order.total} تومان با موفقیت انجام شد`, + icon: `/`, + action: { + type: NotifTitleEnum.PAYMENT_SUCCESS, + url: `/`, + }, + }, + }, + recipients: userRecipients, + metadata: { + priority: 1, + }, + }); + } catch (error) { + this.logger.error( + `Failed to send notification for online payment succeed event: ${event.restaurantId}`, + error instanceof Error ? error.stack : String(error), + ); + } + } +} diff --git a/src/modules/payments/payments.module.ts b/src/modules/payments/payments.module.ts new file mode 100644 index 0000000..a429d7a --- /dev/null +++ b/src/modules/payments/payments.module.ts @@ -0,0 +1,36 @@ +import { Module, forwardRef } from '@nestjs/common'; +import { PaymentsService } from './services/payments.service'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { PaymentMethod } from './entities/payment-method.entity'; +import { PaymentMethodRepository } from './repositories/payment-method.repository'; +import { PaymentMethodService } from './services/payment-method.service'; +import { Restaurant } from '../restaurants/entities/restaurant.entity'; +import { PaymentsController } from './controllers/payments.controller'; +import { AuthModule } from '../auth/auth.module'; +import { JwtModule } from '@nestjs/jwt'; +import { Payment } from './entities/payment.entity'; +import { ZarinpalGateway } from './gateways/zarinpal.gateway'; +import { GatewayManager } from './gateways/gateway.manager'; +import { PaymentRepository } from './repositories/payment.repository'; +import { InventoryModule } from '../inventory/inventory.module'; +import { PaymentListeners } from './listeners/payment.listeners'; +import { AdminModule } from '../admin/admin.module'; +import { NotificationsModule } from '../notifications/notifications.module'; +import { OrdersModule } from '../orders/orders.module'; + +@Module({ + imports: [MikroOrmModule.forFeature([PaymentMethod, Payment, Restaurant]), + AuthModule, JwtModule, InventoryModule, AdminModule, NotificationsModule, + forwardRef(() => OrdersModule)], + controllers: [PaymentsController], + providers: [PaymentsService, PaymentMethodService, PaymentMethodRepository, + PaymentRepository, ZarinpalGateway, GatewayManager, PaymentListeners], + exports: [ + PaymentMethodRepository, + PaymentRepository, + PaymentMethodService, + PaymentsService, + // PaymentGatewayService, + ], +}) +export class PaymentsModule { } diff --git a/src/modules/payments/repositories/payment-method.repository.ts b/src/modules/payments/repositories/payment-method.repository.ts new file mode 100644 index 0000000..22bf7fa --- /dev/null +++ b/src/modules/payments/repositories/payment-method.repository.ts @@ -0,0 +1,10 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { PaymentMethod } from '../entities/payment-method.entity'; + +@Injectable() +export class PaymentMethodRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, PaymentMethod); + } +} diff --git a/src/modules/payments/repositories/payment.repository.ts b/src/modules/payments/repositories/payment.repository.ts new file mode 100644 index 0000000..f157dd3 --- /dev/null +++ b/src/modules/payments/repositories/payment.repository.ts @@ -0,0 +1,10 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { Payment } from '../entities/payment.entity'; + +@Injectable() +export class PaymentRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Payment); + } +} diff --git a/src/modules/payments/services/payment-method.service.ts b/src/modules/payments/services/payment-method.service.ts new file mode 100644 index 0000000..cb40dcf --- /dev/null +++ b/src/modules/payments/services/payment-method.service.ts @@ -0,0 +1,63 @@ +import { Injectable, NotFoundException, ConflictException } from '@nestjs/common'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { PaymentMethod } from '../entities/payment-method.entity'; +import { PaymentMethodRepository } from '../repositories/payment-method.repository'; +import { CreatePaymentMethodDto } from '../dto/create-payment-method.dto'; +import { UpdatePaymentMethodDto } from '../dto/update-payment-method.dto'; +import { RequiredEntityData } from '@mikro-orm/core'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { RestMessage, PaymentMessage } from 'src/common/enums/message.enum'; + +@Injectable() +export class PaymentMethodService { + constructor( + private readonly paymentMethodRepository: PaymentMethodRepository, + private readonly em: EntityManager, + ) {} + + async create(restId: string, createPaymentMethodDto: CreatePaymentMethodDto): Promise { + // Check if restaurant exists + const restaurant = await this.em.findOne(Restaurant, { id: restId }); + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + + const paymentMethod = this.paymentMethodRepository.create({ + restaurant, + ...createPaymentMethodDto, + } as unknown as RequiredEntityData); + await this.em.persistAndFlush(paymentMethod); + return paymentMethod; + } + + async findAll(): Promise { + return this.paymentMethodRepository.findAll({ populate: ['restaurant'] }); + } + + async findOne(id: string): Promise { + const paymentMethod = await this.paymentMethodRepository.findOne({ id }, { populate: ['restaurant'] }); + if (!paymentMethod) { + throw new NotFoundException(PaymentMessage.PAYMENT_METHOD_NOT_FOUND); + } + return paymentMethod; + } + + async findByRestaurant(restaurantId: string): Promise { + return this.paymentMethodRepository.find({ restaurant: { id: restaurantId } }, { populate: ['restaurant'] }); + } + + async update(id: string, updatePaymentMethodDto: UpdatePaymentMethodDto): Promise { + const paymentMethod = await this.findOne(id); + this.em.assign(paymentMethod, updatePaymentMethodDto); + await this.em.flush(); + return paymentMethod; + } + + async remove(id: string): Promise { + const paymentMethod = await this.findOne(id); + await this.em.removeAndFlush(paymentMethod); + return paymentMethod; + } + + +} diff --git a/src/modules/payments/services/payments.service.ts b/src/modules/payments/services/payments.service.ts new file mode 100644 index 0000000..1733710 --- /dev/null +++ b/src/modules/payments/services/payments.service.ts @@ -0,0 +1,442 @@ +import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common'; +import { PaymentGatewayEnum, PaymentMethodEnum, PaymentStatusEnum } from '../interface/payment'; +import { Payment } from '../entities/payment.entity'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { Order } from '../../orders/entities/order.entity'; +import { Logger } from '@nestjs/common'; +import { GatewayManager } from '../gateways/gateway.manager'; +import { WalletTransaction } from 'src/modules/users/entities/wallet-transaction.entity'; +import { OrderPaymentContext } from '../interface/payment'; +import { OrderStatus } from 'src/modules/orders/interface/order.interface'; +import { ChartPeriodEnum, PaymentChartDto } from '../dto/payment-chart.dto'; +import { PaymentMessage, OrderMessage } from 'src/common/enums/message.enum'; +import { EventEmitter2 } from '@nestjs/event-emitter'; +import { onlinePaymentSucceedEvent, paymentSucceedEvent } from '../events/payment.events'; +import { WalletTransactionReason, WalletTransactionType } from 'src/modules/users/interface/wallet'; + +@Injectable() +export class PaymentsService { + private readonly logger = new Logger(PaymentsService.name); + + constructor( + private readonly em: EntityManager, + private readonly gatewayManager: GatewayManager, + private readonly eventEmitter: EventEmitter2, + ) { } + + async payOrder(orderId: string): Promise<{ paymentUrl: string | null }> { + const ctx = await this.loadAndValidateOrder(orderId); + + // Idempotency: avoid creating/charging again for already-paid orders + if (ctx.order.status === OrderStatus.PAID) { + return { paymentUrl: null }; + } + + switch (ctx.method) { + case PaymentMethodEnum.Cash: + await this.handleCashPayment(ctx); + return { paymentUrl: null }; + + case PaymentMethodEnum.Wallet: + await this.handleWalletPayment(ctx); + return { paymentUrl: null }; + + case PaymentMethodEnum.Online: + return this.handleOnlinePayment(ctx); + + default: + throw new BadRequestException(PaymentMessage.UNSUPPORTED_PAYMENT_METHOD); + } + } + + private async loadAndValidateOrder(orderId: string): Promise { + const order = await this.em.findOne( + Order, + { id: orderId }, + { populate: ['user', 'restaurant', 'paymentMethod', 'paymentMethod.restaurant'] }, + ); + + if (!order) { + throw new NotFoundException(OrderMessage.NOT_FOUND); + } + + if (order.total <= 0) { + throw new BadRequestException(PaymentMessage.AMOUNT_MUST_BE_GREATER_THAN_ZERO); + } + + const pm = order.paymentMethod; + if (!pm) { + throw new NotFoundException(PaymentMessage.PAYMENT_METHOD_NOT_FOUND); + } + + if (pm.method === PaymentMethodEnum.Online) { + if (!pm.gateway) throw new BadRequestException(PaymentMessage.GATEWAY_REQUIRED); + if (!pm.merchantId) throw new BadRequestException(PaymentMessage.MERCHANT_ID_REQUIRED); + if (!pm.restaurant?.domain) throw new BadRequestException(PaymentMessage.RESTAURANT_DOMAIN_REQUIRED); + } + + return { + order, + amount: order.total, + method: pm.method, + gateway: pm.gateway ?? null, + merchantId: pm.merchantId ?? null, + restaurantDomain: pm.restaurant.domain ?? null, + }; + } + + private async handleCashPayment(ctx: OrderPaymentContext): Promise { + await this.getOrCreateLatestPendingPayment(ctx.order.id, { + amount: ctx.amount, + method: PaymentMethodEnum.Cash, + gateway: null, + }); + } + + // TODO clean this code and refactor it + private async handleWalletPayment(ctx: OrderPaymentContext): Promise { + await this.em.transactional(async em => { + const order = await em.findOne(Order, { id: ctx.order.id }, { populate: ['user', 'restaurant'] }); + if (!order) throw new NotFoundException(OrderMessage.NOT_FOUND); + + if (order.status === OrderStatus.PAID) { + return; + } + + const walletTransaction = await em.findOne(WalletTransaction, { + user: { id: order.user.id }, + restaurant: { id: order.restaurant.id }, + }, { + orderBy: { createdAt: 'DESC' } + }); + + if (!walletTransaction) { + throw new NotFoundException('User wallet not found'); + } + + if (walletTransaction.balance < ctx.amount) { + throw new BadRequestException('Insufficient wallet balance'); + } + + const newBalance = walletTransaction.balance - ctx.amount; + + + const payment = await this.getOrCreateLatestPendingPayment(order.id, { + em, + amount: ctx.amount, + method: PaymentMethodEnum.Wallet, + gateway: null, + }); + + const newWalletTransaction = em.create(WalletTransaction, { + user: order.user, + restaurant: order.restaurant, + amount: ctx.amount, + type: WalletTransactionType.DEBIT, + reason: WalletTransactionReason.ORDER_PAYMENT, + balance: newBalance, + }); + + payment.status = PaymentStatusEnum.Paid; + payment.paidAt = new Date(); + order.status = OrderStatus.PAID; + + em.persist([ payment, order, newWalletTransaction]); + await em.flush(); + }); + this.eventEmitter.emit( + paymentSucceedEvent.name, + new paymentSucceedEvent(ctx.order.id, ctx.order.restaurant.id, String(ctx.order?.orderNumber) || '', ctx.method, ctx.amount), + ); + } + + private async handleOnlinePayment(ctx: OrderPaymentContext): Promise<{ paymentUrl: string }> { + const gateway = this.gatewayManager.get(ctx.gateway!); + + const payment = await this.getOrCreateLatestPendingPayment(ctx.order.id, { + amount: ctx.amount, + method: PaymentMethodEnum.Online, + gateway: ctx.gateway!, + }); + + // If we already requested a gateway transaction, just return the same URL (idempotent) + if (payment.transactionId) { + return { paymentUrl: gateway.getPaymentUrl(payment.transactionId) }; + } + + const { transactionId } = await gateway.requestPayment({ + amount: ctx.amount, + orderId: ctx.order.id, + merchantId: ctx.merchantId!, + domain: ctx.restaurantDomain!, + }); + + payment.gateway = ctx.gateway; + payment.transactionId = transactionId; + payment.status = PaymentStatusEnum.Pending; + + await this.em.persistAndFlush(payment); + + return { + paymentUrl: gateway.getPaymentUrl(transactionId), + }; + } + + async verifyOnlinePayment(transactionId: string, orderId: string): Promise { + const payment = await this.em.transactional(async em => { + const payment = await em.findOne( + Payment, + { transactionId, order: { id: orderId } }, + { populate: ['order', 'order.paymentMethod'] }, + ); + + if (!payment) { + throw new NotFoundException(PaymentMessage.PAYMENT_NOT_FOUND); + } + + if (payment.status === PaymentStatusEnum.Paid) { + return payment; + } + + const pm = payment.order.paymentMethod; + if (!pm?.merchantId || !payment.gateway) { + throw new BadRequestException(PaymentMessage.INVALID_PAYMENT_CONFIGURATION); + } + + const gateway = this.gatewayManager.get(payment.gateway); + + const result = await gateway.verifyPayment({ + merchantId: pm.merchantId, + amount: payment.amount, + transactionId: payment.transactionId!, + }); + + payment.verifyResponse = result.raw; + + if (!result.success) { + this.failPayment(payment); + return payment; + } + + this.markPaid(payment, result.referenceId); + if (payment.order.status === OrderStatus.PENDING_PAYMENT) { + payment.order.status = OrderStatus.PAID; + } + + await em.flush(); + return payment; + }); + this.eventEmitter.emit( + onlinePaymentSucceedEvent.name, + new onlinePaymentSucceedEvent(payment.id, payment.order.id, payment.order.restaurant.id, String(payment.order?.orderNumber) || '', payment.amount), + ); + return payment; + } + + findAllPaymentsByRestaurantId(restId: string, userId: string) { + return this.em.find( + Payment, + { order: { restaurant: { id: restId }, user: { id: userId } } }, + { populate: ['order', 'order.paymentMethod'] }, + ); + } + + async verifyCashPayment(id: string): Promise { + const payment = await this.em.transactional(async em => { + const payment = await em.findOne(Payment, id, { populate: ['order'] }); + if (!payment) { + throw new NotFoundException(PaymentMessage.PAYMENT_NOT_FOUND); + } + if (payment.method !== PaymentMethodEnum.Cash) { + throw new BadRequestException(PaymentMessage.PAYMENT_METHOD_NOT_CASH); + } + if (payment.status === PaymentStatusEnum.Paid) { + throw new BadRequestException(PaymentMessage.PAYMENT_ALREADY_PAID); + } + if (payment.order.status === OrderStatus.PENDING_PAYMENT) { + payment.order.status = OrderStatus.PAID; + } + payment.status = PaymentStatusEnum.Paid; + payment.paidAt = new Date(); + em.persist(payment); + em.persist(payment.order); + await em.flush(); + return payment; + }); + return payment; + } + + private markPaid(payment: Payment, referenceId: string) { + payment.status = PaymentStatusEnum.Paid; + payment.paidAt = new Date(); + payment.referenceId = referenceId; + } + + private failPayment(payment: Payment) { + payment.status = PaymentStatusEnum.Failed; + payment.failedAt = new Date(); + payment.order.status = OrderStatus.CANCELED; + } + + + private async getOrCreateLatestPendingPayment( + orderId: string, + params: { + amount: number; + method: PaymentMethodEnum; + gateway: PaymentGatewayEnum | null; + em?: EntityManager; + }, + ): Promise { + const em = params.em ?? this.em; + + const existing = await em.findOne( + Payment, + { order: { id: orderId }, status: PaymentStatusEnum.Pending }, + { orderBy: { createdAt: 'DESC' } }, + ); + + if (existing) { + if (existing.method !== params.method) { + throw new BadRequestException(PaymentMessage.EXISTING_PENDING_PAYMENT_MISMATCH); + } + + return existing; + } + + const orderRef = em.getReference(Order, orderId); + const payment = em.create(Payment, { + amount: params.amount, + order: orderRef, + method: params.method, + gateway: params.gateway, + transactionId: null, + status: PaymentStatusEnum.Pending, + }); + + em.persist(payment); + await em.flush(); + return payment; + } + + async getChartData(dto: PaymentChartDto, restaurantId: string): Promise> { + const { startDate, endDate, type = ChartPeriodEnum.Daily } = dto; + + const start = startDate ? new Date(startDate) : new Date(Date.now() - 30 * 24 * 60 * 60 * 1000); + const end = endDate ? new Date(endDate) : new Date(); + + const startOfDay = new Date(start); + startOfDay.setHours(0, 0, 0, 0); + + const endOfDay = new Date(end); + endOfDay.setHours(23, 59, 59, 999); + + // 1. Map your Enum to valid Postgres date_trunc units + // 'Daily' is not valid in PG, it must be 'day' + const pgPeriod = { + [ChartPeriodEnum.Daily]: 'day', + [ChartPeriodEnum.Weekly]: 'week', + [ChartPeriodEnum.Monthly]: 'month', + }[type] || 'day'; + + const params: any[] = [startOfDay, endOfDay]; + let restaurantFilter = ''; + + if (restaurantId) { + params.push(restaurantId); + restaurantFilter = `AND o.restaurant_id = ?`; + } + + // MikroORM uses ? placeholders for parameter binding + // Ensure paid_at is not NULL and handle timestamp casting properly + const query = ` + SELECT + TO_CHAR(DATE_TRUNC('${pgPeriod}', CAST(p.paid_at AS timestamp)), 'YYYY-MM-DD') as "date", + COALESCE(SUM(CASE WHEN p.method = '${PaymentMethodEnum.Cash}' THEN p.amount ELSE 0 END), 0)::numeric as cash, + COALESCE(SUM(CASE WHEN p.method = '${PaymentMethodEnum.Online}' THEN p.amount ELSE 0 END), 0)::numeric as online + FROM payments p + INNER JOIN orders o ON p.order_id = o.id + WHERE p.status = '${PaymentStatusEnum.Paid}' + AND p.paid_at IS NOT NULL + AND p.paid_at >= ? + AND p.paid_at <= ? + ${restaurantFilter} + GROUP BY DATE_TRUNC('${pgPeriod}', CAST(p.paid_at AS timestamp)) + ORDER BY DATE_TRUNC('${pgPeriod}', CAST(p.paid_at AS timestamp)) ASC + `; + + this.logger.debug(`Chart query params: startOfDay=${startOfDay.toISOString()}, endOfDay=${endOfDay.toISOString()}, restaurantId=${restaurantId}`); + const result = await this.em.execute(query, params); + this.logger.debug(`Chart query returned ${result.length} rows`); + + const dataMap = new Map(); + result.forEach((row: any) => { + dataMap.set(row.date, { + cash: Number(row.cash), + online: Number(row.online), + }); + }); + + const allDates = this.generateDateRange(startOfDay, endOfDay, type); + + return allDates.map(date => ({ + date, + cash: dataMap.get(date)?.cash ?? 0, + online: dataMap.get(date)?.online ?? 0, + })); + } + + private generateDateRange(start: Date, end: Date, type: ChartPeriodEnum): string[] { + const dates: string[] = []; + const current = new Date(start); + const endDate = new Date(end); + + // Normalize start date based on period type + switch (type) { + case ChartPeriodEnum.Weekly: + // Start of week (Monday) - PostgreSQL DATE_TRUNC('week') uses ISO week (Monday as first day) + const dayOfWeek = current.getDay(); + const diff = current.getDate() - dayOfWeek + (dayOfWeek === 0 ? -6 : 1); + current.setDate(diff); + current.setHours(0, 0, 0, 0); + // Also normalize end date to include the week containing it + const endDayOfWeek = endDate.getDay(); + const endDiff = endDate.getDate() - endDayOfWeek + (endDayOfWeek === 0 ? -6 : 1); + endDate.setDate(endDiff); + endDate.setHours(23, 59, 59, 999); + break; + case ChartPeriodEnum.Monthly: + // Start of month + current.setDate(1); + current.setHours(0, 0, 0, 0); + // Also normalize end date to include the month containing it + endDate.setDate(1); + endDate.setHours(23, 59, 59, 999); + break; + case ChartPeriodEnum.Daily: + default: + current.setHours(0, 0, 0, 0); + endDate.setHours(23, 59, 59, 999); + } + + while (current <= endDate) { + const dateStr = current.toISOString().split('T')[0]; + dates.push(dateStr); + + // Increment based on period type + switch (type) { + case ChartPeriodEnum.Weekly: + current.setDate(current.getDate() + 7); + break; + case ChartPeriodEnum.Monthly: + current.setMonth(current.getMonth() + 1); + break; + case ChartPeriodEnum.Daily: + default: + current.setDate(current.getDate() + 1); + } + } + + return dates; + } +} diff --git a/src/modules/restaurants/controllers/restaurants.controller.ts b/src/modules/restaurants/controllers/restaurants.controller.ts new file mode 100644 index 0000000..12d9fa6 --- /dev/null +++ b/src/modules/restaurants/controllers/restaurants.controller.ts @@ -0,0 +1,134 @@ +import { Controller, Get, Post, Body, Patch, Param, UseGuards, Delete, Query } from '@nestjs/common'; +import { RestaurantsService } from '../providers/restaurants.service'; +import { CreateRestaurantDto } from '../dto/create-restaurant.dto'; +import { UpdateRestaurantDto } from '../dto/update-restaurant.dto'; +import { UpgradeSubscriptionDto } from '../dto/upgrade-subscription.dto'; +import { FindRestaurantsDto } from '../dto/find-restaurants.dto'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { + ApiBearerAuth, + ApiBody, + ApiNotFoundResponse, + ApiOperation, + ApiParam, + ApiTags, + ApiHeader, +} from '@nestjs/swagger'; +import { RestId } from 'src/common/decorators'; +import { API_HEADER_SLUG } from 'src/common/constants'; +import { SuperAdminAuthGuard } from 'src/modules/auth/guards/superAdminAuth.guard'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { Permission } from 'src/common/enums/permission.enum'; + +@ApiTags('restaurants') +@Controller() +export class RestaurantsController { + constructor(private readonly restaurantsService: RestaurantsService) { } + + @Get('public/restaurants/:slug') + @ApiOperation({ summary: 'Get restaurant specification by slug' }) + @ApiHeader(API_HEADER_SLUG) + @ApiParam({ name: 'slug', required: true, description: 'Restaurant slug' }) + @ApiNotFoundResponse({ description: 'Restaurant not found' }) + findBySlug(@Param('slug') slug: string) { + return this.restaurantsService.getRestaurantSpecification(slug); + } + + /** Admin Endpoints */ + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.UPDATE_RESTAURANT) + @ApiOperation({ summary: 'Get restaurant by ID from request' }) + @Get('admin/restaurants/my-restaurant') + async findOne(@RestId() restId: string) { + return await this.restaurantsService.findOne(restId); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.UPDATE_RESTAURANT) + @ApiOperation({ summary: 'Update a restaurant' }) + @ApiBody({ type: UpdateRestaurantDto }) + @Patch('admin/restaurants/my-restaurant') + updateMyRestaurant(@RestId() restId: string, @Body() updateRestaurantDto: UpdateRestaurantDto) { + return this.restaurantsService.update(restId, updateRestaurantDto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.UPDATE_RESTAURANT) + @ApiOperation({ summary: 'Delete a restaurant' }) + @Delete('admin/restaurants/:id') + remove(@Param('id') id: string) { + return this.restaurantsService.remove(id); + } + + /** Super Admin Endpoints */ + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get all restaurants with pagination and filters' }) + @Get('super-admin/restaurants') + findAll(@Query() dto: FindRestaurantsDto) { + return this.restaurantsService.findAll(dto); + } + + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Create a new restaurant' }) + @Post('super-admin/restaurants') + createRestaurant(@Body() createRestaurantDto: CreateRestaurantDto) { + return this.restaurantsService.setupRestuarant(createRestaurantDto); + } + + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get restaurant by subscription ID' }) + @ApiParam({ name: 'subscriptionId', required: true, description: 'Subscription ID' }) + @Get('super-admin/restaurants/subscription/:subscriptionId') + findOneBySubscriptionId(@Param('subscriptionId') subscriptionId: string) { + return this.restaurantsService.findOneBySubscriptionId(subscriptionId); + } + + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get restaurant by ID' }) + @ApiParam({ name: 'id', required: true, description: 'Restaurant ID' }) + @Get('super-admin/restaurants/:id') + findOneById(@Param('id') id: string) { + return this.restaurantsService.findOne(id); + } + + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Update a restaurant by ID' }) + @ApiParam({ name: 'id', required: true, description: 'Restaurant ID' }) + @ApiBody({ type: UpdateRestaurantDto }) + @Patch('super-admin/restaurants/:id') + updateRestaurant(@Param('id') id: string, @Body() updateRestaurantDto: UpdateRestaurantDto) { + return this.restaurantsService.update(id, updateRestaurantDto); + } + + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Upgrade subscription for a restaurant' }) + @ApiParam({ name: 'subscriptionId', required: true, description: 'Subscription ID' }) + @ApiBody({ type: UpgradeSubscriptionDto }) + @Patch('super-admin/restaurants/subscription/:subscriptionId/upgrade') + upgradeSubscription( + @Param('subscriptionId') subscriptionId: string, + @Body() upgradeSubscriptionDto: UpgradeSubscriptionDto + ) { + return this.restaurantsService.upgradeSubscription(subscriptionId, upgradeSubscriptionDto); + } + + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Hard delete a restaurant and all related data' }) + @ApiParam({ name: 'id', required: true, description: 'Restaurant ID' }) + @Delete('super-admin/restaurants/:id/hard-delete') + hardDeleteRestaurant(@Param('id') id: string) { + return this.restaurantsService.hardDeleteRestaurant(id); + } + +} diff --git a/src/modules/restaurants/controllers/schedule.controller.ts b/src/modules/restaurants/controllers/schedule.controller.ts new file mode 100644 index 0000000..65a7a76 --- /dev/null +++ b/src/modules/restaurants/controllers/schedule.controller.ts @@ -0,0 +1,107 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards, Query, ValidationPipe } from '@nestjs/common'; +import { + ApiTags, + ApiOperation, + ApiCreatedResponse, + ApiOkResponse, + ApiNotFoundResponse, + ApiParam, + ApiBody, + ApiBearerAuth, + ApiQuery, + ApiHeader, +} from '@nestjs/swagger'; +import { ScheduleService } from '../providers/schedule.service'; +import { CreateScheduleDto } from '../dto/create-schedule.dto'; +import { UpdateScheduleDto } from '../dto/update-schedule.dto'; +import { FindSchedulesDto } from '../dto/find-schedules.dto'; +import { Schedule } from '../entities/schedule.entity'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { RestId } from 'src/common/decorators/rest-id.decorator'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { Permission } from 'src/common/enums/permission.enum'; +import { API_HEADER_SLUG } from 'src/common/constants'; + +@ApiTags('schedules') +@Controller() +export class ScheduleController { + constructor(private readonly scheduleService: ScheduleService) { } + + @Get('public/schedules/restaurant/:slug') + @ApiOperation({ summary: 'Get schedule of a restaurant by slug' }) + @ApiHeader(API_HEADER_SLUG) + @ApiParam({ name: 'slug', description: 'Restaurant Slug' }) + @ApiOkResponse({ description: 'Today schedule of the restaurant', type: Schedule }) + async getTodaySchedules(@Param('slug') slug: string): Promise { + return this.scheduleService.findScheduleBySlug(slug); + } + + /******************** Admin Routes **********************/ + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_SCHEDULES) + @Post('admin/schedules') + @ApiOperation({ summary: 'Create a new schedule' }) + @ApiBody({ type: CreateScheduleDto }) + @ApiCreatedResponse({ description: 'Schedule created successfully', type: Schedule }) + create(@Body() createScheduleDto: CreateScheduleDto, @RestId() restId: string) { + return this.scheduleService.create(restId, createScheduleDto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_SCHEDULES) + @Get('admin/schedules') + @ApiOperation({ summary: 'Get all schedules' }) + @ApiQuery({ + name: 'weekDay', + required: false, + type: Number, + description: 'Filter by week days (0=Sunday, 6=Saturday).', + }) + @ApiOkResponse({ description: 'List of schedules', type: [Schedule] }) + findAll( + @Query(new ValidationPipe({ transform: true, whitelist: true })) query: FindSchedulesDto, + @RestId() restId: string, + ) { + return this.scheduleService.findAll(restId, query); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_SCHEDULES) + @Get('admin/schedules/:id') + @ApiOperation({ summary: 'Get a schedule by ID' }) + @ApiParam({ name: 'id', description: 'Schedule ID' }) + @ApiOkResponse({ description: 'Schedule details', type: Schedule }) + @ApiNotFoundResponse({ description: 'Schedule not found' }) + findOne(@Param('id') id: string, @RestId() restId: string) { + return this.scheduleService.findOne(id, restId); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_SCHEDULES) + @Patch('admin/schedules/:id') + @ApiOperation({ summary: 'Update a schedule' }) + @ApiParam({ name: 'id', description: 'Schedule ID' }) + @ApiBody({ type: UpdateScheduleDto }) + @ApiOkResponse({ description: 'Schedule updated successfully', type: Schedule }) + @ApiNotFoundResponse({ description: 'Schedule not found' }) + update(@Param('id') id: string, @Body() updateScheduleDto: UpdateScheduleDto, @RestId() restId: string) { + return this.scheduleService.update(id, restId, updateScheduleDto); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_SCHEDULES) + @Delete('admin/schedules/:id') + @ApiOperation({ summary: 'Delete a schedule' }) + @ApiParam({ name: 'id', description: 'Schedule ID' }) + @ApiOkResponse({ description: 'Schedule deleted successfully' }) + @ApiNotFoundResponse({ description: 'Schedule not found' }) + remove(@Param('id') id: string, @RestId() restId: string) { + return this.scheduleService.remove(id, restId); + } +} diff --git a/src/modules/restaurants/crone/restaurant.crone.ts b/src/modules/restaurants/crone/restaurant.crone.ts new file mode 100644 index 0000000..b521563 --- /dev/null +++ b/src/modules/restaurants/crone/restaurant.crone.ts @@ -0,0 +1,50 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { Cron } from '@nestjs/schedule'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { Restaurant } from '../entities/restaurant.entity'; + +@Injectable() +export class RestaurantCrone { + private readonly logger = new Logger(RestaurantCrone.name); + + constructor(private readonly em: EntityManager) { } + + // run every day at 03:00 (3:00 AM) + @Cron('0 3 * * *', { + name: 'deactivateExpiredSubscriptions', + timeZone: 'UTC', + }) + async handleCron() { + try { + this.logger.debug('Starting daily subscription expiration check'); + + // Get current date + const now = new Date(); + + // Find restaurants where subscription has expired and they're still active + const expiredRestaurants = await this.em.find(Restaurant, { + subscriptionEndDate: { $lt: now }, + isActive: true, + }); + + if (!expiredRestaurants || expiredRestaurants.length === 0) { + this.logger.debug('No restaurants with expired subscriptions found'); + return; + } + + this.logger.log(`Found ${expiredRestaurants.length} restaurants with expired subscriptions`); + + // Deactivate expired restaurants + for (const restaurant of expiredRestaurants) { + restaurant.isActive = false; + } + + // Persist all changes + await this.em.persistAndFlush(expiredRestaurants); + + this.logger.log(`Successfully deactivated ${expiredRestaurants.length} restaurants with expired subscriptions`); + } catch (err) { + this.logger.error(`RestaurantCrone failed: ${err?.message}`, err); + } + } +} diff --git a/src/modules/restaurants/dto/create-restaurant.dto.ts b/src/modules/restaurants/dto/create-restaurant.dto.ts new file mode 100644 index 0000000..fbfb106 --- /dev/null +++ b/src/modules/restaurants/dto/create-restaurant.dto.ts @@ -0,0 +1,54 @@ +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; +import { IsString, IsOptional, IsNumber, IsDate, IsEnum, IsBoolean } from 'class-validator'; +import { Type } from 'class-transformer'; +import { PlanEnum } from '../interface/plan.interface'; + +export class CreateRestaurantDto { + @ApiProperty({ example: 'کافه ژیوان', description: 'نام رستوران' }) + @IsString() + name!: string; + + @ApiPropertyOptional({ example: 'zhivan', description: 'شناسه (slug) رستوران، لاتین و بدون فاصله (اختیاری - در صورت عدم ارسال، از نام رستوران تولید می‌شود)' }) + @IsOptional() + @IsString() + slug?: string; + + @ApiPropertyOptional({ example: 'zhivan.dmenu.ir', description: 'دامنه اختصاصی رستوران' }) + @IsOptional() + @IsString() + domain?: string; + + @ApiPropertyOptional({ example: 2020, description: 'سال تأسیس' }) + @IsOptional() + @IsNumber() + establishedYear: number; + + @ApiPropertyOptional({ example: '09123456789', description: 'شماره تلفن' }) + @IsOptional() + @IsString() + phone: string; + + @ApiProperty({ example: 'base', enum: PlanEnum, description: 'پلن رستوران' }) + @IsEnum(PlanEnum) + plan!: PlanEnum; + + @ApiProperty({ example: 'sub_1234567890', description: 'شناسه اشتراک' }) + @IsString() + subscriptionId!: string; + + @ApiProperty({ example: '2025-12-26', description: 'تاریخ انقضای اشتراک' }) + @Type(() => Date) + @IsDate() + subscriptionEndDate!: Date; + + @ApiProperty({ example: '2025-12-26', description: 'تاریخ شروع اشتراک' }) + @Type(() => Date) + @IsDate() + subscriptionStartDate!: Date; + + + @ApiProperty() + @IsBoolean() + isActive?: boolean; + +} diff --git a/src/modules/restaurants/dto/create-schedule.dto.ts b/src/modules/restaurants/dto/create-schedule.dto.ts new file mode 100644 index 0000000..bdb4595 --- /dev/null +++ b/src/modules/restaurants/dto/create-schedule.dto.ts @@ -0,0 +1,32 @@ +import { IsNumber, IsBoolean, IsOptional, IsString, Min, Max, Matches } from 'class-validator'; +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; + +export class CreateScheduleDto { + @ApiProperty({ example: 1, description: 'روز هفته (۰=یکشنبه، ۶=شنبه)' }) + @IsNumber() + @Min(0) + @Max(6) + @Type(() => Number) + weekDay!: number; + + @ApiProperty({ example: '08:00', description: 'زمان باز شدن (HH:MM, از ۰۰:۰۰ تا ۲۳:۵۹)' }) + @IsString() + @Matches(/^([01]\d|2[0-3]):([0-5]\d)$/, { + message: 'openTime باید در فرمت HH:MM باشد (00:00 تا 23:59)', + }) + openTime!: string; + + @ApiProperty({ example: '23:00', description: 'زمان بستن (HH:MM, از ۰۰:۰۰ تا ۲۳:۵۹)' }) + @IsString() + @Matches(/^([01]\d|2[0-3]):([0-5]\d)$/, { + message: 'closeTime باید در فرمت HH:MM باشد (00:00 تا 23:59)', + }) + closeTime!: string; + + @ApiPropertyOptional({ example: true, description: 'آیا این برنامه فعال است؟' }) + @IsOptional() + @IsBoolean() + @Type(() => Boolean) + isActive?: boolean; +} diff --git a/src/modules/restaurants/dto/find-restaurants.dto.ts b/src/modules/restaurants/dto/find-restaurants.dto.ts new file mode 100644 index 0000000..1840dff --- /dev/null +++ b/src/modules/restaurants/dto/find-restaurants.dto.ts @@ -0,0 +1,73 @@ +import { + IsOptional, + IsString, + IsNumber, + Min, + IsIn, + IsEnum, + IsBoolean, +} from 'class-validator'; +import { Type, Transform } from 'class-transformer'; +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { PlanEnum } from '../interface/plan.interface'; + +const sortOrderOptions = ['asc', 'desc'] as const; +type SortOrder = (typeof sortOrderOptions)[number]; + +export class FindRestaurantsDto { + @ApiPropertyOptional({ default: 1, minimum: 1 }) + @IsOptional() + @Type(() => Number) + @IsNumber() + @Min(1) + page: number = 1; + + @ApiPropertyOptional({ default: 10, minimum: 1 }) + @IsOptional() + @Type(() => Number) + @IsNumber() + @Min(1) + limit: number = 10; + + @ApiPropertyOptional({ + description: 'Search by name, slug, domain, or address', + }) + @IsOptional() + @IsString() + search?: string; + + @ApiPropertyOptional({ + description: 'Filter by active status', + type: Boolean, + }) + @IsOptional() + @Transform(({ value }) => { + if (value === 'true') return true; + if (value === 'false') return false; + return value; + }) + @IsBoolean() + isActive?: boolean; + + @ApiPropertyOptional({ + enum: PlanEnum, + description: 'Filter by plan type', + }) + @IsOptional() + @IsEnum(PlanEnum) + plan?: PlanEnum; + + @ApiPropertyOptional({ default: 'createdAt' }) + @IsOptional() + @IsString() + orderBy: string = 'createdAt'; + + @ApiPropertyOptional({ + enum: sortOrderOptions, + default: 'desc', + }) + @IsOptional() + @IsIn(sortOrderOptions) + order: SortOrder = 'desc'; +} + diff --git a/src/modules/restaurants/dto/find-schedules.dto.ts b/src/modules/restaurants/dto/find-schedules.dto.ts new file mode 100644 index 0000000..28917a7 --- /dev/null +++ b/src/modules/restaurants/dto/find-schedules.dto.ts @@ -0,0 +1,16 @@ +import { IsOptional, IsNumber, Min, Max } from 'class-validator'; +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; + +export class FindSchedulesDto { + @IsOptional() + @Type(() => Number) + @IsNumber() + @Min(0) + @Max(6) + @ApiPropertyOptional({ + description: 'Filter by week days (0=Sunday, 6=Saturday)', + type: Number, + }) + weekDay?: number; +} diff --git a/src/modules/restaurants/dto/restaurant-specification.dto.ts b/src/modules/restaurants/dto/restaurant-specification.dto.ts new file mode 100644 index 0000000..bfd4ac0 --- /dev/null +++ b/src/modules/restaurants/dto/restaurant-specification.dto.ts @@ -0,0 +1,92 @@ +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; + +export class RestaurantSpecificationDto { + @ApiProperty({ example: '550e8400-e29b-41d4-a716-446655440000', description: 'Restaurant ID' }) + id!: string; + + @ApiProperty({ example: 'کافه ژیوان', description: 'Restaurant name' }) + name!: string; + + @ApiProperty({ example: 'zhivan', description: 'Restaurant slug' }) + slug!: string; + + @ApiPropertyOptional({ example: 'https://example.com/logo.png', description: 'Logo URL' }) + logo?: string; + + @ApiPropertyOptional({ example: 'تهران، خیابان ولیعصر پلاک ۱۲۳', description: 'Address' }) + address?: string; + + @ApiPropertyOptional({ example: '#ff6600', description: 'Menu color (hex)' }) + menuColor?: string; + + @ApiPropertyOptional({ example: 35.6892, description: 'Latitude' }) + latitude?: number; + + @ApiPropertyOptional({ example: 51.389, description: 'Longitude' }) + longitude?: number; + + @ApiPropertyOptional({ + example: { + type: 'Polygon', + coordinates: [ + [ + [51.389, 35.6892], + [51.39, 35.6892], + [51.39, 35.6902], + [51.389, 35.6902], + [51.389, 35.6892], + ], + ], + }, + description: 'Service area as GeoJSON Polygon', + }) + serviceArea?: { + type: 'Polygon'; + coordinates: number[][][]; + }; + + @ApiPropertyOptional({ example: 2020, description: 'Established year' }) + establishedYear?: number; + + @ApiPropertyOptional({ example: '+989123456789', description: 'Phone number' }) + phoneNumber?: string; + + @ApiPropertyOptional({ example: '09123456789', description: 'Phone' }) + phone?: string; + + @ApiPropertyOptional({ example: 'https://instagram.com/cafemorteza', description: 'Instagram URL' }) + instagram?: string; + + @ApiPropertyOptional({ example: 'https://t.me/cafemorteza', description: 'Telegram URL' }) + telegram?: string; + + @ApiPropertyOptional({ example: 'https://wa.me/989123456789', description: 'WhatsApp URL' }) + whatsapp?: string; + + @ApiPropertyOptional({ example: 'محل دنج با بهترین قهوه شهر.', description: 'Description' }) + description?: string; + + @ApiPropertyOptional({ example: 'بهترین کافه تهران', description: 'SEO title' }) + seoTitle?: string; + + @ApiPropertyOptional({ example: 'کافه مرتضی ارائه‌دهنده قهوه با کیفیت بالا.', description: 'SEO description' }) + seoDescription?: string; + + @ApiPropertyOptional({ example: ['قهوه', 'صبحانه', 'کافه'], description: 'Tag names', type: [String] }) + tagNames?: string[]; + + @ApiPropertyOptional({ + example: ['https://example.com/image1.jpg', 'https://example.com/image2.jpg'], + description: 'Image URLs', + type: [String], + }) + images?: string[]; + + @ApiPropertyOptional({ example: 0.09, description: 'VAT rate (e.g., 0.09 for 9%)' }) + vat?: number; + + @ApiPropertyOptional({ example: { registerScore: 100 }, description: 'Score' }) + score?: { + registerScore?: number; + }; +} diff --git a/src/modules/restaurants/dto/update-restaurant.dto.ts b/src/modules/restaurants/dto/update-restaurant.dto.ts new file mode 100644 index 0000000..d029d5f --- /dev/null +++ b/src/modules/restaurants/dto/update-restaurant.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateRestaurantDto } from './create-restaurant.dto'; + +export class UpdateRestaurantDto extends PartialType(CreateRestaurantDto) {} diff --git a/src/modules/restaurants/dto/update-schedule.dto.ts b/src/modules/restaurants/dto/update-schedule.dto.ts new file mode 100644 index 0000000..c07e905 --- /dev/null +++ b/src/modules/restaurants/dto/update-schedule.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/swagger'; +import { CreateScheduleDto } from './create-schedule.dto'; + +export class UpdateScheduleDto extends PartialType(CreateScheduleDto) {} diff --git a/src/modules/restaurants/dto/upgrade-subscription.dto.ts b/src/modules/restaurants/dto/upgrade-subscription.dto.ts new file mode 100644 index 0000000..4552f69 --- /dev/null +++ b/src/modules/restaurants/dto/upgrade-subscription.dto.ts @@ -0,0 +1,15 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsString, IsDate, IsEnum } from 'class-validator'; +import { Type } from 'class-transformer'; +import { PlanEnum } from '../interface/plan.interface'; + +export class UpgradeSubscriptionDto { + @ApiProperty({ example: 'premium', enum: PlanEnum, description: 'New plan for the subscription' }) + @IsEnum(PlanEnum) + newPlan!: PlanEnum; + + @ApiProperty({ example: '2025-12-31', description: 'New subscription end date' }) + @Type(() => Date) + @IsDate() + subscriptionEndDate!: Date; +} diff --git a/src/modules/restaurants/entities/restaurant.entity.ts b/src/modules/restaurants/entities/restaurant.entity.ts new file mode 100644 index 0000000..fa472be --- /dev/null +++ b/src/modules/restaurants/entities/restaurant.entity.ts @@ -0,0 +1,112 @@ +import { Collection, Entity, Enum, Index, OneToMany, Property } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Delivery } from '../../delivery/entities/delivery.entity'; +import { PlanEnum } from '../interface/plan.interface'; + +@Entity({ tableName: 'restaurants' }) +@Index({ properties: ['isActive'] }) +@Index({ properties: ['slug', 'isActive'] }) +export class Restaurant extends BaseEntity { + // --- اطلاعات پایه --- + @Property() + name!: string; + + @Property({ unique: true }) + slug!: string; + + @Property({ nullable: true }) + logo?: string; + + @Property({ nullable: true }) + address?: string; + + @Property({ nullable: true }) + menuColor?: string; + + // --- مختصات جغرافیایی --- + @Property({ type: 'decimal', precision: 10, scale: 7, nullable: true }) + latitude?: number; + + @Property({ type: 'decimal', precision: 10, scale: 7, nullable: true }) + longitude?: number; + + @Property({ type: 'json', nullable: true }) + serviceArea?: { + type: 'Polygon'; + coordinates: number[][][]; + }; + + // --- وضعیت‌ها --- + @Property({ default: true }) + isActive: boolean = true; + + @Property({ nullable: true }) + establishedYear?: number; + + @Property({ nullable: true }) + phone?: string; + + @Property({ nullable: true }) + instagram?: string; + + @Property({ nullable: true }) + telegram?: string; + + @Property({ nullable: true }) + whatsapp?: string; + + // --- توضیحات --- + @Property({ type: 'text', nullable: true }) + description?: string; + + // --- سئو --- + @Property({ nullable: true }) + seoTitle?: string; + + @Property({ nullable: true, type: 'text' }) + seoDescription?: string; + + @Property({ nullable: true, type: 'json' }) + tagNames?: string[]; + + // --- تصاویر --- + @Property({ nullable: true, type: 'json' }) + images?: string[]; + + // --- مالیات یا VAT --- + @Property({ type: 'decimal', default: 0 }) + vat?: number = 0; + + @Property() + domain!: string; + + // --- روش‌های ارسال --- + @OneToMany(() => Delivery, delivery => delivery.restaurant) + deliveries = new Collection(this); + + @Property({ type: 'json', nullable: true }) + score: { + purchaseAmount: string; + purchaseScore: string; + scoreAmount: string; + scoreCredit: string; + // bonus score + birthdayScore: string; + registerScore: string; + marriageDateScore: string; + referrerScore: string; + } | null = null; + + @Enum(() => PlanEnum) + plan: PlanEnum = PlanEnum.Base; + + @Property({unique: true,nullable: true}) + subscriptionId?: string; + + @Property({nullable: true}) + subscriptionEndDate?: Date; + + @Property({nullable: true}) + subscriptionStartDate?: Date; + +} diff --git a/src/modules/restaurants/entities/schedule.entity.ts b/src/modules/restaurants/entities/schedule.entity.ts new file mode 100644 index 0000000..e78fedf --- /dev/null +++ b/src/modules/restaurants/entities/schedule.entity.ts @@ -0,0 +1,20 @@ +import { Entity, Property } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; + +@Entity({ tableName: 'schedules' }) +export class Schedule extends BaseEntity { + @Property({ type: 'int' }) + weekDay!: number; + + @Property({ type: 'time' }) + openTime!: string; + + @Property({ type: 'time' }) + closeTime!: string; + + @Property({ default: true }) + isActive: boolean = true; + + @Property() + restId!: string; +} diff --git a/src/modules/restaurants/interface/plan.interface.ts b/src/modules/restaurants/interface/plan.interface.ts new file mode 100644 index 0000000..a5cb074 --- /dev/null +++ b/src/modules/restaurants/interface/plan.interface.ts @@ -0,0 +1,4 @@ +export enum PlanEnum { + Base = 'base', + Premium = 'premium', +} diff --git a/src/modules/restaurants/providers/restaurants.service.ts b/src/modules/restaurants/providers/restaurants.service.ts new file mode 100644 index 0000000..c75bfc6 --- /dev/null +++ b/src/modules/restaurants/providers/restaurants.service.ts @@ -0,0 +1,281 @@ +import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common'; +import { CreateRestaurantDto } from '../dto/create-restaurant.dto'; +import { UpdateRestaurantDto } from '../dto/update-restaurant.dto'; +import { UpgradeSubscriptionDto } from '../dto/upgrade-subscription.dto'; +import { Restaurant } from '../entities/restaurant.entity'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { RestRepository } from '../repositories/rest.repository'; +import { RestMessage } from 'src/common/enums/message.enum'; +import { FindRestaurantsDto } from '../dto/find-restaurants.dto'; +import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; +import { PlanEnum } from '../interface/plan.interface'; +import { Admin } from '../../admin/entities/admin.entity'; +import { AdminRole } from '../../admin/entities/adminRole.entity'; +import { Role } from '../../roles/entities/role.entity'; +import { normalizePhone } from 'src/modules/utils/phone.util'; +import slugify from 'slugify'; +import { NotificationPreference } from '../../notifications/entities/notification-preference.entity'; +import { notificationPreferencesData } from '../../../seeders/data/notification-preferences.data'; +import { Order } from '../../orders/entities/order.entity'; +import { Coupon } from '../../coupons/entities/coupon.entity'; +import { Category } from '../../foods/entities/category.entity'; +import { Food } from '../../foods/entities/food.entity'; +import { Delivery } from '../../delivery/entities/delivery.entity'; +import { PaymentMethod } from '../../payments/entities/payment-method.entity'; +import { Pager } from '../../pager/entities/pager.entity'; +import { Schedule } from '../entities/schedule.entity'; +import { WalletTransaction } from '../../users/entities/wallet-transaction.entity'; +import { SmsLog } from '../../notifications/entities/smsLogs.entity'; +import { Notification } from '../../notifications/entities/notification.entity'; + + +@Injectable() +export class RestaurantsService { + constructor( + private readonly em: EntityManager, + private readonly restRepository: RestRepository, + ) { } + + async setupRestuarant(dto: CreateRestaurantDto): Promise { + return await this.em.transactional(async (em) => { + // Generate or validate slug + const slug = slugify(dto.slug ?? dto.name, { + lower: true, + strict: true, + locale: 'fa' + }); + + + const validateSubscriptionId = await em.findOne(Restaurant, { subscriptionId: dto.subscriptionId }) + if (validateSubscriptionId) { + throw new BadRequestException("Duplicate subscriptionId: " + dto.subscriptionId) + } + + // Create restaurant + const restaurant = em.create(Restaurant, { + name: dto.name, + slug, + establishedYear: dto.establishedYear, + phone: dto.phone, + isActive: true, + plan: dto.plan, + domain: `https://dmenu.danakcorp.com/${slug}`, + subscriptionId: dto.subscriptionId, + subscriptionEndDate: dto.subscriptionEndDate, + subscriptionStartDate: dto.subscriptionStartDate, + }); + + // Find the appropriate role based on plan + const roleName = dto.plan === PlanEnum.Base ? 'مدیر (پلن پایه)' : 'مدیر ( پلن ویژه)'; + const role = await em.findOne(Role, { name: roleName }); + if (!role) { + throw new BadRequestException(`Role not found for plan: ${dto.plan}`); + } + + const normalizedPhone = normalizePhone(dto.phone); + let admin = await em.findOne(Admin, { phone: normalizedPhone }); + if (!admin) { + admin = em.create(Admin, { + phone: normalizedPhone, + firstName: '[نام]', + lastName: '[نام خانوادگی]', + }); + } + + // Create admin role relationship + const adminRole = em.create(AdminRole, { + admin, + role, + restaurant, + }); + + // Create notification preferences for the restaurant + const notificationPreferences = notificationPreferencesData.map(preferenceData => + em.create(NotificationPreference, { + restaurant, + title: preferenceData.title, + channels: preferenceData.channels, + }) + ); + + // Persist all entities + em.persist([restaurant, admin, adminRole, ...notificationPreferences]); + await em.flush(); + + return restaurant; + }); + } + + async findAll(dto: FindRestaurantsDto): Promise> { + return this.restRepository.findAllPaginated({ + page: dto.page, + limit: dto.limit, + search: dto.search, + isActive: dto.isActive, + plan: dto.plan, + orderBy: dto.orderBy, + order: dto.order, + }); + } + + async findBySlug(slug: string): Promise { + const restaurant = await this.em.findOne(Restaurant, { slug }); + + if (!restaurant) { + throw new NotFoundException(`Restaurant with slug "${slug}" not found`); + } + + return restaurant; + } + + async findOne(id: string): Promise { + const restaurant = await this.restRepository.findOne({ id }); + + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + + return restaurant; + } + + async findOneBySubscriptionId(subscriptionId: string): Promise { + console.log('subscriptionId', subscriptionId) + const restaurant = await this.restRepository.findOne({ subscriptionId }); + console.log('restaurant', restaurant) + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + return restaurant; + } + + async getRestaurantSpecification(slug: string) { + const restaurant = await this.findBySlug(slug); + return restaurant; + } + // TODO : it must be done inside transaction + async update(id: string, dto: UpdateRestaurantDto): Promise { + + const restaurant = await this.restRepository.findOne({ id: id }); + + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + + if (dto.plan && dto.plan !== restaurant.plan) { + const isPremium = dto.plan === PlanEnum.Premium + // find admins and make them premium or base + const adminRoles = await this.em.find(AdminRole, { + restaurant: { + id + }, + role: { + name: isPremium ? 'مدیر (پلن پایه)' : 'مدیر ( پلن ویژه)' + } + }) + const newRole = await this.em.findOne(Role, { + name: isPremium ? 'مدیر ( پلن ویژه)' : 'مدیر (پلن پایه)' + }) + if (!newRole) { + throw new BadRequestException("Role Not Found") + } + adminRoles.forEach(a => { + a.role = newRole + }) + + this.em.persistAndFlush(adminRoles) + + } + + this.restRepository.assign(restaurant, dto); + + await this.em.persistAndFlush(restaurant); + + return restaurant; + } + + async remove(id: string) { + // Soft delete the restaurant by setting isActive to false + const restaurant = await this.restRepository.findOne({ id }); + + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + + restaurant.isActive = false; + await this.em.persistAndFlush(restaurant); + + return restaurant; + } + + async upgradeSubscription(subscriptionId: string, dto: UpgradeSubscriptionDto): Promise { + const restaurant = await this.restRepository.findOne({ subscriptionId }); + + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + + const isActive = new Date(dto.subscriptionEndDate) > new Date() + + await this.update(restaurant.id, { + plan: dto.newPlan, + subscriptionEndDate: dto.subscriptionEndDate, + isActive + }) + + return restaurant; + } + + async hardDeleteRestaurant(id: string): Promise { + return await this.em.transactional(async (em) => { + // Find the restaurant first + const restaurant = await em.findOne(Restaurant, { id }); + + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + + // Delete orders first (will cascade to order items and payments due to cascade settings) + await em.nativeDelete(Order, { restaurant: id }); + + // Delete coupons + await em.nativeDelete(Coupon, { restaurant: id }); + + // Delete foods (will cascade to reviews, favorites, and inventory due to cascade settings) + await em.nativeDelete(Food, { restaurant: id }); + + // Delete categories (foods should be deleted by cascade, but delete explicitly to be safe) + await em.nativeDelete(Category, { restaurant: id }); + + // Delete deliveries + await em.nativeDelete(Delivery, { restaurant: id }); + + // Delete schedules + await em.nativeDelete(Schedule, { restId: id }); + + // Delete notification preferences + await em.nativeDelete(NotificationPreference, { restaurant: id }); + + // Delete notifications + await em.nativeDelete(Notification, { restaurant: id }); + + // Delete SMS logs + await em.nativeDelete(SmsLog, { restaurant: id }); + + // Delete admin roles for this restaurant + await em.nativeDelete(AdminRole, { restaurant: id }); + + // Delete payment methods + await em.nativeDelete(PaymentMethod, { restaurant: id }); + + // Delete pagers + await em.nativeDelete(Pager, { restaurant: id }); + + // Delete wallet transactions + await em.nativeDelete(WalletTransaction, { restaurant: id }); + + // Finally, delete the restaurant itself + await em.nativeDelete(Restaurant, { id }); + }); + } + +} diff --git a/src/modules/restaurants/providers/schedule.service.ts b/src/modules/restaurants/providers/schedule.service.ts new file mode 100644 index 0000000..2955046 --- /dev/null +++ b/src/modules/restaurants/providers/schedule.service.ts @@ -0,0 +1,122 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { EntityManager, RequiredEntityData } from '@mikro-orm/postgresql'; +import { FilterQuery } from '@mikro-orm/core'; +import { Schedule } from '../entities/schedule.entity'; +import { ScheduleRepository } from '../repositories/schedule.repository'; +import { CreateScheduleDto } from '../dto/create-schedule.dto'; +import { UpdateScheduleDto } from '../dto/update-schedule.dto'; +import { FindSchedulesDto } from '../dto/find-schedules.dto'; +import { RestRepository } from '../repositories/rest.repository'; +import { Restaurant } from '../entities/restaurant.entity'; +import { RestMessage } from 'src/common/enums/message.enum'; +// import { RestMessage } from 'src/common/enums/message.enum'; + +@Injectable() +export class ScheduleService { + constructor( + private readonly scheduleRepository: ScheduleRepository, + private readonly restRepository: RestRepository, + private readonly em: EntityManager, + ) {} + + async create(restId: string, createScheduleDto: CreateScheduleDto): Promise { + const rest = await this.restRepository.findOne({ id: restId }); + if (!rest) { + throw new NotFoundException(`رستوران با شناسه ${restId} یافت نشد.`); + } + + const data: RequiredEntityData = { + weekDay: createScheduleDto.weekDay, + openTime: createScheduleDto.openTime, + closeTime: createScheduleDto.closeTime, + isActive: createScheduleDto.isActive ?? true, + restId, + }; + + const schedule = this.scheduleRepository.create(data); + await this.em.persistAndFlush(schedule); + return schedule; + } + + async findAll(restId?: string, query?: FindSchedulesDto): Promise { + const where: FilterQuery = restId ? { restId } : {}; + + if (query?.weekDay !== undefined) { + where.weekDay = query.weekDay; + } + + return this.scheduleRepository.find(where, { orderBy: { weekDay: 'asc' } }); + } + + async findTodaySchedules(slug: string): Promise { + const restaurant = await this.em.findOne(Restaurant, { slug }); + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + const today = new Date(); + const weekDay = today.getDay(); // 0 = Sunday, 6 = Saturday + + const where: FilterQuery = { + restId: restaurant.id.toString(), + weekDay, + isActive: true, + }; + + return this.scheduleRepository.findOne(where); + } + + async findScheduleBySlug(slug: string): Promise { + const restaurant = await this.em.findOne(Restaurant, { slug }); + if (!restaurant) { + throw new NotFoundException(RestMessage.NOT_FOUND); + } + + const where: FilterQuery = { + restId: restaurant.id.toString(), + isActive: true, + }; + + return this.scheduleRepository.find(where); + } + + async findOne(id: string, restId: string): Promise { + const schedule = await this.scheduleRepository.findOne({ id, restId }); + if (!schedule) { + throw new NotFoundException(`برنامه با شناسه ${id} یافت نشد.`); + } + return schedule; + } + + async update(id: string, restId: string, updateScheduleDto: UpdateScheduleDto): Promise { + const schedule = await this.scheduleRepository.findOne({ id, restId }); + if (!schedule) { + throw new NotFoundException(`برنامه با شناسه ${id} یافت نشد.`); + } + + const updateData: Partial = {}; + if (updateScheduleDto.weekDay !== undefined) { + updateData.weekDay = updateScheduleDto.weekDay; + } + if (updateScheduleDto.openTime !== undefined) { + updateData.openTime = updateScheduleDto.openTime; + } + if (updateScheduleDto.closeTime !== undefined) { + updateData.closeTime = updateScheduleDto.closeTime; + } + if (updateScheduleDto.isActive !== undefined) { + updateData.isActive = updateScheduleDto.isActive; + } + + this.em.assign(schedule, updateData); + await this.em.persistAndFlush(schedule); + return schedule; + } + + async remove(id: string, restId: string): Promise { + const schedule = await this.scheduleRepository.findOne({ id, restId }); + if (!schedule) { + throw new NotFoundException(`برنامه با شناسه ${id} یافت نشد.`); + } + await this.em.removeAndFlush(schedule); + } +} diff --git a/src/modules/restaurants/repositories/rest.repository.ts b/src/modules/restaurants/repositories/rest.repository.ts new file mode 100644 index 0000000..7eb58db --- /dev/null +++ b/src/modules/restaurants/repositories/rest.repository.ts @@ -0,0 +1,79 @@ +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { FilterQuery } from '@mikro-orm/core'; +import { Restaurant } from '../entities/restaurant.entity'; +import { Injectable } from '@nestjs/common'; +import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; +import { PlanEnum } from '../interface/plan.interface'; + +type FindRestaurantsOpts = { + page?: number; + limit?: number; + search?: string; + isActive?: boolean; + plan?: PlanEnum; + orderBy?: string; + order?: 'asc' | 'desc'; +}; + +@Injectable() +export class RestRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Restaurant); + } + + /** + * Find restaurants with pagination and optional filters. + * Supports: search (name/slug/domain/address), isActive, plan, ordering. + */ + async findAllPaginated(opts: FindRestaurantsOpts = {}): Promise> { + const { + page = 1, + limit = 10, + search, + isActive, + plan, + orderBy = 'createdAt', + order = 'desc', + } = opts; + + const offset = (page - 1) * limit; + + const where: FilterQuery = {}; + + if (typeof isActive === 'boolean') { + where.isActive = isActive; + } + + if (plan) { + where.plan = plan; + } + + if (search) { + const pattern = `%${search}%`; + where.$or = [ + { name: { $ilike: pattern } }, + { slug: { $ilike: pattern } }, + { domain: { $ilike: pattern } }, + { address: { $ilike: pattern } }, + ]; + } + + const [data, total] = await this.findAndCount(where, { + limit, + offset, + orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' }, + }); + + const totalPages = Math.ceil(total / limit); + + return { + data, + meta: { + total, + page, + limit, + totalPages, + }, + }; + } +} diff --git a/src/modules/restaurants/repositories/schedule.repository.ts b/src/modules/restaurants/repositories/schedule.repository.ts new file mode 100644 index 0000000..f5fd3ef --- /dev/null +++ b/src/modules/restaurants/repositories/schedule.repository.ts @@ -0,0 +1,10 @@ +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { Injectable } from '@nestjs/common'; +import { Schedule } from '../entities/schedule.entity'; + +@Injectable() +export class ScheduleRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Schedule); + } +} diff --git a/src/modules/restaurants/restaurants.module.ts b/src/modules/restaurants/restaurants.module.ts new file mode 100644 index 0000000..62a5bd4 --- /dev/null +++ b/src/modules/restaurants/restaurants.module.ts @@ -0,0 +1,21 @@ +import { Module, forwardRef } from '@nestjs/common'; +import { RestaurantsService } from './providers/restaurants.service'; +import { RestaurantsController } from './controllers/restaurants.controller'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { Restaurant } from './entities/restaurant.entity'; +import { RestRepository } from './repositories/rest.repository'; +import { ScheduleRepository } from './repositories/schedule.repository'; +import { Schedule } from './entities/schedule.entity'; +import { ScheduleService } from './providers/schedule.service'; +import { ScheduleController } from './controllers/schedule.controller'; +import { RestaurantCrone } from './crone/restaurant.crone'; +import { JwtModule } from '@nestjs/jwt'; +import { AuthModule } from '../auth/auth.module'; + +@Module({ + controllers: [RestaurantsController, ScheduleController], + providers: [RestaurantsService, RestRepository, ScheduleRepository, ScheduleService, RestaurantCrone], + imports: [MikroOrmModule.forFeature([Restaurant, Schedule]), JwtModule, forwardRef(() => AuthModule)], + exports: [RestRepository, ScheduleRepository, ScheduleService], +}) +export class RestaurantsModule {} diff --git a/src/modules/review/controllers/review.controller.ts b/src/modules/review/controllers/review.controller.ts new file mode 100644 index 0000000..36ad8fc --- /dev/null +++ b/src/modules/review/controllers/review.controller.ts @@ -0,0 +1,165 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete, Query, UseGuards } from '@nestjs/common'; +import { ReviewService } from '../providers/review.service'; +import { CreateReviewDto } from '../dto/create-review.dto'; +import { UpdateReviewDto } from '../dto/update-review.dto'; +import { FindReviewsDto, FindRestuarantReviewsDto } from '../dto/find-reviews.dto'; +import { ChangeStatusDto } from '../dto/change-status.dto'; +import { + ApiTags, + ApiOperation, + ApiCreatedResponse, + ApiOkResponse, + ApiQuery, + ApiBody, + ApiParam, + ApiBearerAuth, + ApiHeader, +} from '@nestjs/swagger'; +import { AuthGuard } from 'src/modules/auth/guards/auth.guard'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { UserId } from 'src/common/decorators/user-id.decorator'; +import { RestId } from 'src/common/decorators/rest-id.decorator'; +import { ReviewStatus } from '../enums/review-status.enum'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { Permission } from 'src/common/enums/permission.enum'; +import { API_HEADER_SLUG } from 'src/common/constants'; + +@ApiTags('review') +@Controller() +export class ReviewController { + constructor(private readonly reviewService: ReviewService) {} + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Post('public/reviews') + @ApiOperation({ summary: 'Create a new review and rating' }) + @ApiHeader(API_HEADER_SLUG) + @ApiCreatedResponse({ description: 'The review has been successfully created.' }) + @ApiBody({ type: CreateReviewDto }) + create(@Body() createReviewDto: CreateReviewDto, @UserId() userId: string) { + return this.reviewService.create(userId, createReviewDto); + } + + @Get('public/reviews/:foodId') + @ApiOperation({ summary: 'Get all reviews of food by id(public - only approved)' }) + @ApiHeader(API_HEADER_SLUG) + @ApiOkResponse({ description: 'List of approved reviews' }) + @ApiParam({ name: 'foodId', required: true, type: String }) + @ApiQuery({ name: 'page', required: false, type: Number }) + @ApiQuery({ name: 'limit', required: false, type: Number }) + @ApiQuery({ name: 'orderBy', required: false, type: String }) + @ApiQuery({ name: 'order', required: false, enum: ['asc', 'desc'] }) + findAll(@Query() dto: FindReviewsDto, @Param('foodId') foodId: string) { + // Only show approved reviews for public endpoint + return this.reviewService.findAll({ ...dto, status: ReviewStatus.APPROVED, foodId }); + } + + @Get('public/reviews/restuarant/:restuarantSlug') + @ApiOperation({ summary: 'Get all reviews of restuarant by slug(public - only approved)' }) + @ApiHeader(API_HEADER_SLUG) + @ApiParam({ name: 'restuarantSlug', required: true, type: String }) + @ApiQuery({ name: 'page', required: false, type: Number }) + @ApiQuery({ name: 'limit', required: false, type: Number }) + @ApiQuery({ name: 'orderBy', required: false, type: String }) + @ApiQuery({ name: 'order', required: false, enum: ['asc', 'desc'] }) + findRestuarantAllReviews(@Query() dto: FindRestuarantReviewsDto, @Param('restuarantSlug') restuarantSlug: string) { + // Only show approved reviews for public endpoint + return this.reviewService.findRestuarantAllReviews({ ...dto, status: ReviewStatus.APPROVED, restuarantSlug }); + } + + // @Get('public/reviews/:id') + // @ApiOperation({ summary: 'Get a review by id' }) + // @ApiParam({ name: 'id', required: true }) + // @ApiOkResponse({ description: 'The review' }) + // @ApiNotFoundResponse({ description: 'Review not found' }) + // findById(@Param('id') id: string) { + // return this.reviewService.findById(id); + // } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Patch('public/reviews/:reviewId') + @ApiOperation({ summary: 'Update a review (own reviews only)' }) + @ApiHeader(API_HEADER_SLUG) + @ApiParam({ name: 'reviewId', required: true }) + @ApiBody({ type: UpdateReviewDto }) + @ApiOkResponse({ description: 'The updated review' }) + update(@Param('reviewId') reviewId: string, @Body() updateReviewDto: UpdateReviewDto, @UserId() userId: string) { + return this.reviewService.update(reviewId, userId, updateReviewDto, false); + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Delete('public/reviews/:id') + @ApiOperation({ summary: 'Delete a review (own reviews only)' }) + @ApiHeader(API_HEADER_SLUG) + @ApiParam({ name: 'id', required: true }) + remove(@Param('id') id: string, @UserId() userId: string) { + return this.reviewService.remove(id, userId, false); + } + + /******************** Admin Routes **********************/ + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_REVIEWS) + @Get('admin/reviews') + @ApiOperation({ summary: 'Get all reviews (admin - including unapproved)' }) + @ApiOkResponse({ description: 'List of all reviews' }) + @ApiQuery({ name: 'page', required: false, type: Number }) + @ApiQuery({ name: 'limit', required: false, type: Number }) + @ApiQuery({ name: 'foodId', required: false, type: String }) + @ApiQuery({ name: 'userId', required: false, type: String }) + @ApiQuery({ name: 'status', required: false, enum: ReviewStatus }) + @ApiQuery({ name: 'orderBy', required: false, type: String }) + @ApiQuery({ name: 'order', required: false, enum: ['asc', 'desc'] }) + findAllAdmin(@Query() dto: FindReviewsDto, @RestId() restId: string) { + return this.reviewService.findAll({ ...dto, restId: restId }); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_REVIEWS) + @Patch('admin/reviews/:id') + @ApiOperation({ summary: 'Update a review (admin - can change approval status)' }) + @ApiParam({ name: 'id', required: true }) + @ApiBody({ type: UpdateReviewDto }) + updateAdmin(@Param('id') id: string, @Body() updateReviewDto: UpdateReviewDto, @UserId() userId: string) { + return this.reviewService.update(id, userId, updateReviewDto, true); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_REVIEWS) + @Get('admin/reviews/:id') + @ApiOperation({ summary: 'review detail' }) + @ApiParam({ name: 'id', required: true }) + reviewDetail(@Param('id') reviewId: string, @RestId() restaurantId: string) { + return this.reviewService.findById(reviewId, restaurantId); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_REVIEWS) + @Patch('admin/reviews/:id/status') + @ApiOperation({ summary: 'Change review status (pending, approved, rejected)' }) + @ApiParam({ name: 'id', required: true }) + @ApiBody({ type: ChangeStatusDto }) + changeStatus( + @Param('id') reviewId: string, + @Body() changeStatusDto: ChangeStatusDto, + @RestId() restaurantId: string, + ) { + return this.reviewService.changeStatus(reviewId, changeStatusDto.status, restaurantId); + } + + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_REVIEWS) + @ApiBearerAuth() + @Delete('admin/reviews/:id') + @ApiOperation({ summary: 'Delete a review (admin)' }) + @ApiParam({ name: 'id', required: true }) + removeAdmin(@Param('id') id: string, @UserId() userId: string) { + return this.reviewService.remove(id, userId, true); + } +} diff --git a/src/modules/review/dto/change-status.dto.ts b/src/modules/review/dto/change-status.dto.ts new file mode 100644 index 0000000..3be9bd7 --- /dev/null +++ b/src/modules/review/dto/change-status.dto.ts @@ -0,0 +1,13 @@ +import { IsEnum } from 'class-validator'; +import { ApiProperty } from '@nestjs/swagger'; +import { ReviewStatus } from '../enums/review-status.enum'; + +export class ChangeStatusDto { + @IsEnum(ReviewStatus) + @ApiProperty({ + enum: ReviewStatus, + description: 'Review status: pending, approved, or rejected', + example: ReviewStatus.APPROVED, + }) + status: ReviewStatus; +} diff --git a/src/modules/review/dto/create-review.dto.ts b/src/modules/review/dto/create-review.dto.ts new file mode 100644 index 0000000..0304d0b --- /dev/null +++ b/src/modules/review/dto/create-review.dto.ts @@ -0,0 +1,51 @@ +import { IsNotEmpty, IsNumber, IsOptional, IsString, Max, Min, IsArray, IsEnum } from 'class-validator'; +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; +import { PositivePoint, NegativePoint } from '../enums/review-point.enum'; + +export class CreateReviewDto { + @IsNotEmpty() + @IsString() + @ApiProperty({ description: 'Food ID' }) + foodId: string; + + @IsNotEmpty() + @IsString() + @ApiProperty({ description: 'Order ID' }) + orderId: string; + + @IsNotEmpty() + @IsNumber() + @Min(1) + @Max(5) + @Type(() => Number) + @ApiProperty({ description: 'Rating from 1 to 5', example: 5, minimum: 1, maximum: 5 }) + rating: number; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ description: 'Comment text', example: 'Very delicious food!' }) + comment?: string; + + @IsOptional() + @IsArray() + @IsEnum(PositivePoint, { each: true }) + @ApiPropertyOptional({ + description: 'Positive points about the food', + example: [PositivePoint.GREAT_TASTE, PositivePoint.FAST_DELIVERY], + enum: PositivePoint, + isArray: true, + }) + positivePoints?: PositivePoint[]; + + @IsOptional() + @IsArray() + @IsEnum(NegativePoint, { each: true }) + @ApiPropertyOptional({ + description: 'Negative points about the food', + example: [NegativePoint.SMALL_PORTION], + enum: NegativePoint, + isArray: true, + }) + negativePoints?: NegativePoint[]; +} diff --git a/src/modules/review/dto/find-reviews.dto.ts b/src/modules/review/dto/find-reviews.dto.ts new file mode 100644 index 0000000..b4a0377 --- /dev/null +++ b/src/modules/review/dto/find-reviews.dto.ts @@ -0,0 +1,55 @@ +import { IsEnum, IsNumber, IsOptional, IsString } from 'class-validator'; +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; +import { ReviewStatus } from '../enums/review-status.enum'; + +export class FindReviewsDto { + @IsOptional() + @IsNumber() + @Type(() => Number) + @ApiPropertyOptional({ description: 'Page number', example: 1 }) + page?: number; + + @IsOptional() + @IsNumber() + @Type(() => Number) + @ApiPropertyOptional({ description: 'Items per page', example: 10 }) + limit?: number; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ description: 'Food ID to filter comments' }) + foodId?: string; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ description: 'Restaurant ID to filter comments' }) + restId?: string; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ description: 'User ID to filter comments' }) + userId?: string; + + @IsOptional() + @IsEnum(ReviewStatus) + @ApiPropertyOptional({ description: 'Filter by review status', enum: ReviewStatus }) + status?: ReviewStatus; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ description: 'Order by field', example: 'createdAt' }) + orderBy?: string; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ description: 'Order direction', enum: ['asc', 'desc'], example: 'desc' }) + order?: 'asc' | 'desc'; +} + +export class FindRestuarantReviewsDto extends FindReviewsDto { + @IsOptional() + @IsString() + @ApiPropertyOptional({ description: 'Restaurant slug to filter comments' }) + restuarantSlug?: string; +} diff --git a/src/modules/review/dto/update-review.dto.ts b/src/modules/review/dto/update-review.dto.ts new file mode 100644 index 0000000..a377045 --- /dev/null +++ b/src/modules/review/dto/update-review.dto.ts @@ -0,0 +1,45 @@ +import { IsNumber, IsOptional, IsString, Max, Min, IsArray, IsEnum } from 'class-validator'; +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { Type } from 'class-transformer'; +import { PositivePoint, NegativePoint } from '../enums/review-point.enum'; +import { ReviewStatus } from '../enums/review-status.enum'; + +export class UpdateReviewDto { + @IsOptional() + @IsNumber() + @Min(1) + @Max(5) + @Type(() => Number) + @ApiPropertyOptional({ description: 'Rating from 1 to 5', minimum: 1, maximum: 5 }) + rating?: number; + + @IsOptional() + @IsString() + @ApiPropertyOptional({ description: 'Comment text' }) + comment?: string; + + @IsOptional() + @IsArray() + @IsEnum(PositivePoint, { each: true }) + @ApiPropertyOptional({ + description: 'Positive points about the food', + enum: PositivePoint, + isArray: true, + }) + positivePoints?: PositivePoint[]; + + @IsOptional() + @IsArray() + @IsEnum(NegativePoint, { each: true }) + @ApiPropertyOptional({ + description: 'Negative points about the food', + enum: NegativePoint, + isArray: true, + }) + negativePoints?: NegativePoint[]; + + @IsOptional() + @IsEnum(ReviewStatus) + @ApiPropertyOptional({ description: 'Review status (admin only)', enum: ReviewStatus }) + status?: ReviewStatus; +} diff --git a/src/modules/review/entities/review.entity.ts b/src/modules/review/entities/review.entity.ts new file mode 100644 index 0000000..aec0853 --- /dev/null +++ b/src/modules/review/entities/review.entity.ts @@ -0,0 +1,39 @@ +import { Entity, Index, ManyToOne, Property, Unique, Enum } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Food } from '../../foods/entities/food.entity'; +import { User } from '../../users/entities/user.entity'; +import { Order } from 'src/modules/orders/entities/order.entity'; +import { PositivePoint, NegativePoint } from '../enums/review-point.enum'; +import { ReviewStatus } from '../enums/review-status.enum'; + +@Entity({ tableName: 'reviews' }) +@Unique({ properties: ['order', 'food', 'user'] }) +@Index({ properties: ['food', 'status'] }) +@Index({ properties: ['user'] }) +@Index({ properties: ['order'] }) +export class Review extends BaseEntity { + @ManyToOne(() => Order) + order: Order; + + @ManyToOne(() => Food) + food: Food; + + @ManyToOne(() => User) + user: User; + + @Property({ type: 'text', nullable: true }) + comment?: string; + + @Property({ type: 'int', nullable: false }) + rating: number = 0; + + @Property({ type: 'json', nullable: true }) + positivePoints?: PositivePoint[]; + + @Property({ type: 'json', nullable: true }) + negativePoints?: NegativePoint[]; + + @Enum(() => ReviewStatus) + @Property({ type: 'string', default: ReviewStatus.PENDING }) + status: ReviewStatus = ReviewStatus.PENDING; +} diff --git a/src/modules/review/enums/review-point.enum.ts b/src/modules/review/enums/review-point.enum.ts new file mode 100644 index 0000000..05f4058 --- /dev/null +++ b/src/modules/review/enums/review-point.enum.ts @@ -0,0 +1,15 @@ +export enum PositivePoint { + GREAT_TASTE = 'great_taste', + FAST_DELIVERY = 'fast_delivery', + GOOD_QUALITY = 'good_quality', + GOOD_PORTION_SIZE = 'good_portion_size', + FRIENDLY_SERVICE = 'friendly_service', +} + +export enum NegativePoint { + SMALL_PORTION = 'small_portion', + SLOW_DELIVERY = 'slow_delivery', + POOR_QUALITY = 'poor_quality', + OVERPRICED = 'overpriced', + UNFRIENDLY_SERVICE = 'unfriendly_service', +} diff --git a/src/modules/review/enums/review-status.enum.ts b/src/modules/review/enums/review-status.enum.ts new file mode 100644 index 0000000..b46c121 --- /dev/null +++ b/src/modules/review/enums/review-status.enum.ts @@ -0,0 +1,5 @@ +export enum ReviewStatus { + PENDING = 'pending', + REJECTED = 'rejected', + APPROVED = 'approved', +} diff --git a/src/modules/review/events/review.events.ts b/src/modules/review/events/review.events.ts new file mode 100644 index 0000000..4d6f08d --- /dev/null +++ b/src/modules/review/events/review.events.ts @@ -0,0 +1,13 @@ +export class ReviewCreatedEvent { + constructor( + public readonly reviewId: string, + public readonly restaurantId: string, + public readonly userId: string, + public readonly foodId: string, + public readonly foodName: string, + public readonly orderId: string, + public readonly orderNumber: string | number, + public readonly rating: number, + ) {} +} + diff --git a/src/modules/review/listeners/review.listeners.ts b/src/modules/review/listeners/review.listeners.ts new file mode 100644 index 0000000..69c6a40 --- /dev/null +++ b/src/modules/review/listeners/review.listeners.ts @@ -0,0 +1,77 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { OnEvent } from '@nestjs/event-emitter'; +import { ReviewCreatedEvent } from '../events/review.events'; +import { AdminRepository } from 'src/modules/admin/repositories/admin.repository'; +import { Permission } from 'src/common/enums/permission.enum'; +import { NotifTitleEnum } from 'src/modules/notifications/interfaces/notification.interface'; +import { NotificationService } from 'src/modules/notifications/services/notification.service'; +import { ConfigService } from '@nestjs/config'; + +@Injectable() +export class ReviewListeners { + private readonly logger = new Logger(ReviewListeners.name); + private reviewCreatedSmsTemplateId: string; + + constructor( + private readonly adminService: AdminRepository, + private readonly notificationService: NotificationService, + private readonly configService: ConfigService, + ) { + this.reviewCreatedSmsTemplateId = this.configService.get('SMS_PATTERN_REVIEW_CREATED') ?? '123'; + } + + @OnEvent(ReviewCreatedEvent.name) + async handleReviewCreated(event: ReviewCreatedEvent) { + try { + this.logger.log( + `Review created event received: ${event.reviewId} for restaurant: ${event.restaurantId}, food: ${event.foodName}, rating: ${event.rating}`, + ); + + // Get admins of restaurant that have review management permissions + const admins = await this.adminService.findAdminsWithPermission(event.restaurantId, Permission.MANAGE_REVIEWS); + const recipients = admins.map(admin => ({ + adminId: admin.id, + })); + + if (recipients.length === 0) { + this.logger.warn(`No admins found with MANAGE_REVIEWS permission for restaurant ${event.restaurantId}`); + return; + } + + await this.notificationService.sendNotification({ + restaurantId: event.restaurantId, + message: { + title: NotifTitleEnum.REVIEW_CREATED, + content: `نظر جدید برای غذا "${event.foodName}" با امتیاز ${event.rating} از 5 برای سفارش شماره ${event.orderNumber} ثبت شد`, + sms: { + templateId: this.reviewCreatedSmsTemplateId, + parameters: { + foodName: event.foodName, + rating: event.rating.toString(), + orderNumber: String(event.orderNumber), + }, + }, + pushNotif: { + title: `نظر جدید`, + content: `نظر جدید برای غذا "${event.foodName}" با امتیاز ${event.rating} ثبت شد`, + icon: `/`, + action: { + type: NotifTitleEnum.REVIEW_CREATED, + url: `/`, + }, + }, + }, + recipients, + metadata: { + priority: 1, + }, + }); + } catch (error) { + this.logger.error( + `Failed to send notification for review created event: ${event.reviewId}`, + error instanceof Error ? error.stack : String(error), + ); + } + } +} + diff --git a/src/modules/review/providers/food-rating-cron.service.ts b/src/modules/review/providers/food-rating-cron.service.ts new file mode 100644 index 0000000..2053326 --- /dev/null +++ b/src/modules/review/providers/food-rating-cron.service.ts @@ -0,0 +1,77 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { Cron } from '@nestjs/schedule'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { FoodRepository } from '../../foods/repositories/food.repository'; +import { ReviewRepository } from '../repositories/review.repository'; +import { ReviewStatus } from '../enums/review-status.enum'; + +@Injectable() +export class FoodRatingCronService { + private readonly logger = new Logger(FoodRatingCronService.name); + + constructor( + private readonly em: EntityManager, + private readonly foodRepository: FoodRepository, + private readonly reviewRepository: ReviewRepository, + ) { } + + /** + * Cron job that runs at midnight every day (00:00:00 UTC) + * Calculates and updates the average rating for each restaurant food + */ + @Cron('0 0 * * *', { + name: 'calculateFoodRatings', + timeZone: 'UTC', + }) + async handleCron() { + this.logger.log('Starting daily food rating calculation cron job...'); + + try { + // Get all foods from all restaurants + const foods = await this.foodRepository.find({}); + + this.logger.log(`Found ${foods.length} foods to process`); + + let updatedCount = 0; + let errorCount = 0; + + // Process each food item + for (const food of foods) { + try { + // Get all approved reviews for this food that are not deleted + const reviews = await this.reviewRepository.find( + { + food: { id: food.id }, + status: ReviewStatus.APPROVED, + deletedAt: null, + }, + { fields: ['rating'] }, + ); + + // Calculate average rating + let averageRating = 0; + if (reviews.length > 0) { + const sum = reviews.reduce((acc, review) => acc + review.rating, 0); + averageRating = sum / reviews.length; + } + + // Update food score + food.score = parseFloat(averageRating.toFixed(2)); + this.em.persist(food); + + updatedCount++; + } catch (error) { + this.logger.error(`Error processing food ${food.id}: ${error.message}`, error.stack); + errorCount++; + } + } + + // Flush all updates at once for better performance + await this.em.flush(); + + this.logger.log(`Food rating calculation completed. Updated: ${updatedCount}, Errors: ${errorCount}`); + } catch (error) { + this.logger.error(`Error in food rating cron job: ${error.message}`, error.stack); + } + } +} diff --git a/src/modules/review/providers/review.service.ts b/src/modules/review/providers/review.service.ts new file mode 100644 index 0000000..f498176 --- /dev/null +++ b/src/modules/review/providers/review.service.ts @@ -0,0 +1,219 @@ +import { Injectable, NotFoundException, BadRequestException } from '@nestjs/common'; +import { CreateReviewDto } from '../dto/create-review.dto'; +import { UpdateReviewDto } from '../dto/update-review.dto'; +import { FindRestuarantReviewsDto, FindReviewsDto } from '../dto/find-reviews.dto'; +import { ReviewRepository } from '../repositories/review.repository'; +import { FoodRepository } from '../../foods/repositories/food.repository'; +import { UserRepository } from '../../users/repositories/user.repository'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { RequiredEntityData } from '@mikro-orm/core'; +import { Review } from '../entities/review.entity'; +import { FoodMessage, UserMessage, ReviewMessage } from 'src/common/enums/message.enum'; +import { Order } from '../../orders/entities/order.entity'; +import { OrderItem } from '../../orders/entities/order-item.entity'; +import { Restaurant } from 'src/modules/restaurants/entities/restaurant.entity'; +import { ReviewStatus } from '../enums/review-status.enum'; +import { EventEmitter2 } from '@nestjs/event-emitter'; +import { ReviewCreatedEvent } from '../events/review.events'; +import { sanitizeText } from '../../utils/sanitize.util'; + +@Injectable() +export class ReviewService { + constructor( + private readonly reviewRepository: ReviewRepository, + private readonly foodRepository: FoodRepository, + private readonly userRepository: UserRepository, + private readonly em: EntityManager, + private readonly eventEmitter: EventEmitter2, + ) { } + + async create(userId: string, createReviewDto: CreateReviewDto): Promise { + const { foodId, orderId, rating, comment, positivePoints, negativePoints } = createReviewDto; + + const food = await this.foodRepository.findOne({ id: foodId }); + if (!food) { + throw new NotFoundException(FoodMessage.NOT_FOUND); + } + + const user = await this.userRepository.findOne({ id: userId }); + if (!user) { + throw new NotFoundException(UserMessage.USER_NOT_FOUND); + } + + // Find order and verify it belongs to the user, populate restaurant to get restaurantId + const order = await this.em.findOne(Order, { id: orderId, user: { id: userId } }, { populate: ['restaurant'] }); + if (!order) { + throw new NotFoundException('Order not found or does not belong to the current user'); + } + + // Verify the food is in the order + const orderItem = await this.em.findOne(OrderItem, { + order: { id: orderId }, + food: { id: foodId }, + }); + if (!orderItem) { + throw new BadRequestException('Food is not in the specified order'); + } + + // Check if user already commented on this food for this order + const existingReview = await this.reviewRepository.findOne({ + order: { id: orderId }, + food: { id: foodId }, + user: { id: userId }, + }); + + if (existingReview) { + throw new BadRequestException(ReviewMessage.ALREADY_COMMENTED); + } + + const data: RequiredEntityData = { + order, + food, + user, + rating, + comment: sanitizeText(comment) || undefined, + positivePoints: positivePoints || undefined, + negativePoints: negativePoints || undefined, + status: ReviewStatus.PENDING, + }; + + const review = this.reviewRepository.create(data); + if (!review) { + throw new BadRequestException('Failed to create review entity'); + } + + await this.em.persistAndFlush(review); + + // Update food rating average + await this.updateFoodRating(foodId); + + // Emit ReviewCreatedEvent + this.eventEmitter.emit( + ReviewCreatedEvent.name, + new ReviewCreatedEvent( + review.id, + order.restaurant.id, + userId, + foodId, + food.title || 'Unknown Food', + orderId, + order.orderNumber || '', + rating, + ), + ); + + return review; + } + + async findAll(dto: FindReviewsDto) { + return this.reviewRepository.findAllPaginated(dto); + } + + async findRestuarantAllReviews(dto: FindRestuarantReviewsDto) { + const { restuarantSlug, ...restDto } = dto; + const restaurant = await this.em.findOne(Restaurant, { slug: restuarantSlug }); + if (!restaurant) { + throw new NotFoundException('RestaurantMessage.NOT_FOUND'); + } + return this.reviewRepository.findAllPaginated({ ...restDto, restId: restaurant.id }); + } + + async findById(id: string, restaurantId: string): Promise { + const review = await this.reviewRepository.findOne( + { id, order: { restaurant: { id: restaurantId } } }, + { populate: ['food', 'user', 'order'] }, + ); + if (!review) { + throw new NotFoundException(ReviewMessage.NOT_FOUND); + } + return review; + } + + async update(id: string, userId: string, dto: UpdateReviewDto, isAdmin: boolean = false): Promise { + const review = await this.reviewRepository.findOne({ id }, { populate: ['food', 'user', 'order'] }); + if (!review) { + throw new NotFoundException(ReviewMessage.NOT_FOUND); + } + + // Only allow user to update their own reviews (unless admin) + if (!isAdmin && review.user.id !== userId) { + throw new BadRequestException(ReviewMessage.CAN_ONLY_UPDATE_OWN); + } + + // Users can only update rating and comment, not status + if (!isAdmin && dto.status !== undefined) { + throw new BadRequestException('Only admins can change review status'); + } + + const oldRating = review.rating; + + // Sanitize comment if provided + const sanitizedDto = { + ...dto, + comment: dto.comment !== undefined ? sanitizeText(dto.comment) || undefined : undefined, + }; + + this.em.assign(review, sanitizedDto); + await this.em.persistAndFlush(review); + + // Update food rating average if rating changed + if (dto.rating !== undefined && dto.rating !== oldRating) { + await this.updateFoodRating(review.food.id); + } + + return review; + } + + async changeStatus(reviewId: string, status: ReviewStatus, restaurantId: string): Promise { + const review = await this.reviewRepository.findOne({ id: reviewId, order: { restaurant: { id: restaurantId } } }); + if (!review) { + throw new NotFoundException(ReviewMessage.NOT_FOUND); + } + review.status = status; + await this.em.persistAndFlush(review); + return review; + } + + async remove(id: string, userId: string, isAdmin: boolean = false) { + const review = await this.reviewRepository.findOne({ id }, { populate: ['food', 'user', 'order'] }); + if (!review) { + throw new NotFoundException(ReviewMessage.NOT_FOUND); + } + + // Only allow user to delete their own reviews (unless admin) + if (!isAdmin && review.user.id !== userId) { + throw new BadRequestException(ReviewMessage.CAN_ONLY_DELETE_OWN); + } + + const foodId = review.food.id; + review.deletedAt = new Date(); + await this.em.persistAndFlush(review); + + // Update food rating average + await this.updateFoodRating(foodId); + } + + private async updateFoodRating(foodId: string): Promise { + const reviews = await this.reviewRepository.find( + { food: { id: foodId }, status: ReviewStatus.APPROVED, deletedAt: null }, + { fields: ['rating'] }, + ); + + if (reviews.length === 0) { + const food = await this.foodRepository.findOne({ id: foodId }); + if (food) { + food.score = 0; + await this.em.persistAndFlush(food); + } + return; + } + + const averageRating = reviews.reduce((sum, review) => sum + review.rating, 0) / reviews.length; + + const food = await this.foodRepository.findOne({ id: foodId }); + if (food) { + food.score = parseFloat(averageRating.toFixed(2)); + await this.em.persistAndFlush(food); + } + } +} diff --git a/src/modules/review/repositories/review.repository.ts b/src/modules/review/repositories/review.repository.ts new file mode 100644 index 0000000..5114e1e --- /dev/null +++ b/src/modules/review/repositories/review.repository.ts @@ -0,0 +1,71 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { FilterQuery } from '@mikro-orm/core'; +import { Review } from '../entities/review.entity'; +import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; +import { ReviewStatus } from '../enums/review-status.enum'; + +type FindReviewsOpts = { + page?: number; + limit?: number; + foodId?: string; + userId?: string; + status?: ReviewStatus; + orderBy?: string; + restId?: string; + order?: 'asc' | 'desc'; +}; + +@Injectable() +export class ReviewRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, Review); + } + + /** + * Find reviews with pagination and optional filters. + * Supports: foodId, userId, status, ordering. + */ + async findAllPaginated(opts: FindReviewsOpts = {}): Promise> { + const { page = 1, limit = 10, foodId, restId, userId, status, orderBy = 'createdAt', order = 'desc' } = opts; + + const offset = (page - 1) * limit; + + const where: FilterQuery = {}; + + if (foodId) { + where.food = { id: foodId }; + } + + if (restId) { + where.food = { restaurant: { id: restId } }; + } + + if (userId) { + where.user = { id: userId }; + } + + if (status) { + where.status = status; + } + + const [data, total] = await this.findAndCount(where, { + limit, + offset, + orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' }, + populate: ['food', 'user'], + }); + + const totalPages = Math.ceil(total / limit); + + return { + data, + meta: { + total, + page, + limit, + totalPages, + }, + }; + } +} diff --git a/src/modules/review/review.module.ts b/src/modules/review/review.module.ts new file mode 100644 index 0000000..c76b69d --- /dev/null +++ b/src/modules/review/review.module.ts @@ -0,0 +1,22 @@ +import { Module } from '@nestjs/common'; +import { ReviewService } from './providers/review.service'; +import { ReviewController } from './controllers/review.controller'; +import { ReviewRepository } from './repositories/review.repository'; +import { FoodRatingCronService } from './providers/food-rating-cron.service'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { Review } from './entities/review.entity'; +import { FoodModule } from '../foods/food.module'; +import { UserModule } from '../users/user.module'; +import { AuthModule } from '../auth/auth.module'; +import { JwtModule } from '@nestjs/jwt'; +import { ReviewListeners } from './listeners/review.listeners'; +import { AdminModule } from '../admin/admin.module'; +import { NotificationsModule } from '../notifications/notifications.module'; + +@Module({ + imports: [MikroOrmModule.forFeature([Review]), FoodModule, UserModule, AuthModule, JwtModule, AdminModule, NotificationsModule], + controllers: [ReviewController], + providers: [ReviewService, ReviewRepository, FoodRatingCronService, ReviewListeners], + exports: [ReviewRepository], +}) +export class ReviewModule {} diff --git a/src/modules/roles/controllers/roles.controller.ts b/src/modules/roles/controllers/roles.controller.ts new file mode 100644 index 0000000..f727fc0 --- /dev/null +++ b/src/modules/roles/controllers/roles.controller.ts @@ -0,0 +1,93 @@ +import { Controller, Get, Post, Body, Param, Patch, Delete, UseGuards } from '@nestjs/common'; +import { ApiTags, ApiOperation, ApiBody, ApiBearerAuth, ApiHeader } from '@nestjs/swagger'; +import { RolesService } from '../providers/roles.service'; +import { PermissionsService } from '../providers/permissions.service'; +import { CreateRoleDto } from '../dto/create-role.dto'; +import { UpdateRoleDto } from '../dto/update-role.dto'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { SuperAdminAuthGuard } from 'src/modules/auth/guards/superAdminAuth.guard'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { RestId } from 'src/common/decorators'; +import { AdminId } from 'src/common/decorators/admin-id.decorator'; +import { Permission } from 'src/common/enums/permission.enum'; + + + +@ApiTags('roles') +@Controller() +export class RolesController { + constructor( + private readonly roleService: RolesService, + private readonly permissionService: PermissionsService, + ) { } + + @Get('admin/roles') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ROLES) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get all through restaurant roles with pagination and filters' }) + findAll(@RestId() restId: string) { + return this.roleService.findAllGeneralAndRestaurantRoles(restId); + } + + @Get('admin/roles/permissions') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ROLES) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get all permissions that the admin has' }) + async findAllPermissions(@AdminId() adminId: string, @RestId() restId: string) { + const adminPermissionNames = await this.permissionService.getAdminFullPermissions(adminId, restId); + + return adminPermissionNames; + } + + + + @Post('admin/roles') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ROLES) + @ApiBearerAuth() + @ApiOperation({ summary: 'Create a new role' }) + @ApiBody({ type: CreateRoleDto }) + create(@Body() dto: CreateRoleDto, @RestId() restId: string) { + return this.roleService.createRestaurantRole(dto, restId); + } + + @Get('admin/roles/:id') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ROLES) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get a specific role by ID' }) + findOne(@Param('id') id: string, @RestId() restId: string) { + return this.roleService.findOne(restId, id); + } + + @Patch('admin/roles/:id') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ROLES) + @ApiBearerAuth() + @ApiOperation({ summary: 'Update a role' }) + @ApiBody({ type: UpdateRoleDto }) + update(@Param('id') id: string, @Body() dto: UpdateRoleDto, @RestId() restId: string) { + return this.roleService.update(restId, id, dto); + } + + @Delete('admin/roles/:id') + @UseGuards(AdminAuthGuard) + @Permissions(Permission.MANAGE_ROLES) + @ApiBearerAuth() + @ApiOperation({ summary: 'Delete a role' }) + remove(@Param('id') id: string, @RestId() restId: string) { + return this.roleService.remove(restId, id); + } + + /** Super Admin Endpoints */ + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get all system roles for super-admin' }) + @Get('super-admin/system-roles') + @ApiOperation({ summary: 'Get all system roles for super-admin' }) + findAllSystemRoles() { + return this.roleService.findAllSystemRoles(); + } +} diff --git a/src/modules/roles/dto/create-role.dto.ts b/src/modules/roles/dto/create-role.dto.ts new file mode 100644 index 0000000..8048ef3 --- /dev/null +++ b/src/modules/roles/dto/create-role.dto.ts @@ -0,0 +1,14 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsString, IsArray, IsOptional } from 'class-validator'; + +export class CreateRoleDto { + @ApiProperty({ description: 'Role name' }) + @IsNotEmpty() + @IsString() + name!: string; + + @ApiProperty({ description: 'List of permission IDs', isArray: true, required: false }) + @IsOptional() + @IsArray() + permissionIds?: string[]; +} diff --git a/src/modules/roles/dto/update-role.dto.ts b/src/modules/roles/dto/update-role.dto.ts new file mode 100644 index 0000000..ccf9939 --- /dev/null +++ b/src/modules/roles/dto/update-role.dto.ts @@ -0,0 +1,14 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsOptional, IsString, IsArray } from 'class-validator'; + +export class UpdateRoleDto { + @ApiProperty({ description: 'Role name', required: false }) + @IsOptional() + @IsString() + name?: string; + + @ApiProperty({ description: 'List of permission IDs', isArray: true, required: false }) + @IsOptional() + @IsArray() + permissionIds?: string[]; +} diff --git a/src/modules/roles/entities/permission.entity.ts b/src/modules/roles/entities/permission.entity.ts new file mode 100755 index 0000000..2dab209 --- /dev/null +++ b/src/modules/roles/entities/permission.entity.ts @@ -0,0 +1,17 @@ +import { Entity, Property, Unique, ManyToMany, Collection } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Role } from './role.entity'; + +@Entity({ tableName: 'permissions' }) +export class Permission extends BaseEntity { + @Property() + @Unique() + name!: string; + + @Property() + title!: string; + + + @ManyToMany({ entity: () => Role, mappedBy: 'permissions' }) + roles = new Collection(this); +} diff --git a/src/modules/roles/entities/role.entity.ts b/src/modules/roles/entities/role.entity.ts new file mode 100755 index 0000000..620d681 --- /dev/null +++ b/src/modules/roles/entities/role.entity.ts @@ -0,0 +1,25 @@ +import { Collection, Entity, Index, ManyToMany, OneToMany, ManyToOne, Property } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Permission } from './permission.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { RolePermission } from './rolePermission.entity'; +import { AdminRole } from 'src/modules/admin/entities/adminRole.entity'; + +@Entity({ tableName: 'roles' }) +@Index({ properties: ['restaurant'] }) +export class Role extends BaseEntity { + @Property() + name!: string; + + @Property({ default: false }) + isSystem: boolean = false; + + @ManyToMany({ entity: () => Permission, pivotEntity: () => RolePermission, inversedBy: p => p.roles }) + permissions = new Collection(this); + + @ManyToOne(() => Restaurant, { nullable: true }) + restaurant?: Restaurant; + + @OneToMany(() => AdminRole, adminRole => adminRole.role) + admins = new Collection(this); +} diff --git a/src/modules/roles/entities/rolePermission.entity.ts b/src/modules/roles/entities/rolePermission.entity.ts new file mode 100644 index 0000000..a99538a --- /dev/null +++ b/src/modules/roles/entities/rolePermission.entity.ts @@ -0,0 +1,16 @@ +import { Entity, ManyToOne } from '@mikro-orm/core'; +import { Role } from './role.entity'; +import { Permission } from './permission.entity'; + +@Entity({ tableName: 'role_permissions' }) +export class RolePermission { + // دو ManyToOne دقیقاً؛ هر کدام می‌تونن primary: true باشند برای composite PK + @ManyToOne(() => Role, { primary: true }) + role!: Role; + + @ManyToOne(() => Permission, { primary: true }) + permission!: Permission; + + // **نکته:** اینجا *فقط* همین دو خصوصیت کافی است — + // از تعریف جداگانه‌ی roleId / permissionId با @PrimaryKey خودداری کن مگر بخوای نام/نوع ستون را سفارشی کنی. +} diff --git a/src/modules/roles/providers/permissions.service.ts b/src/modules/roles/providers/permissions.service.ts new file mode 100644 index 0000000..b3f9b41 --- /dev/null +++ b/src/modules/roles/providers/permissions.service.ts @@ -0,0 +1,105 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@mikro-orm/nestjs'; +import { EntityManager, EntityRepository } from '@mikro-orm/core'; +import { Permission } from '../entities/permission.entity'; +import { CacheService } from 'src/modules/utils/cache.service'; +import { AdminRepository } from 'src/modules/admin/repositories/admin.repository'; +import { AdminRole } from 'src/modules/admin/entities/adminRole.entity'; + +@Injectable() +export class PermissionsService { + private readonly ADMIN_PERMISSIONS_KEY = 'admin-perms'; + + constructor( + @InjectRepository(Permission) + private readonly permissionRepository: EntityRepository, + private readonly cacheService: CacheService, + private readonly adminRepository: AdminRepository, + private readonly em: EntityManager, + ) { } + + async findAll() { + const permissions = await this.permissionRepository.findAll(); + return permissions; + } + + /** + * Get admin permissions from cache or database + * @param adminId - The admin ID + * @param restId - The restaurant ID + * @returns Array of permission names (string[]) + */ + async getAdminPermissions(adminId: string, restId: string): Promise { + const cacheKey = `${this.ADMIN_PERMISSIONS_KEY}:${adminId}:${restId}`; + + // Try to get from cache first + const cachedPermissions = await this.cacheService.get(cacheKey); + if (cachedPermissions) { + try { + const parsed: unknown = JSON.parse(cachedPermissions); + // Ensure it's an array of strings + if (Array.isArray(parsed) && parsed.every((p): p is string => typeof p === 'string')) { + return parsed; + } + // If invalid format, continue to fetch from DB + } catch { + // If parsing fails, continue to fetch from DB + } + } + + // If not in cache, fetch from database + const admin = await this.adminRepository.findOne( + { id: adminId, roles: { restaurant: { id: restId } } }, + { populate: ['roles', 'roles.role', 'roles.role.permissions'] }, + ); + + if (!admin || !admin.roles) { + return []; + } + + // Ensure roles collection is loaded + await admin.roles.loadItems(); + + // Extract permission names as array of strings + const permissions = await Promise.all( + admin.roles + .getItems() + .filter(r => r.role) // Filter out any null/undefined roles + .map(async r => { + // Ensure permissions collection is initialized + if (!r.role.permissions.isInitialized()) { + await r.role.permissions.loadItems(); + } + return r.role.permissions.getItems(); + }), + ); + + return permissions.flat().map(p => p.name); + } + + async getAdminFullPermissions(adminId: string, restId: string): Promise { + const listOfPermissions = [] + const adminRoles = await this.em.findOne(AdminRole, { + admin: { + id: adminId, + }, + restaurant: { + id: restId, + }, + }, { populate: ['role', 'role.permissions'] }); + if (adminRoles) { + listOfPermissions.push(...adminRoles.role.permissions.getItems()); + } + return listOfPermissions + } + + /** + * Invalidate admin permissions cache + * @param adminId - The admin ID + * @param restId - The restaurant ID + */ + async invalidateAdminPermissionsCache(adminId: string, restId: string): Promise { + const cacheKey = `${this.ADMIN_PERMISSIONS_KEY}:${adminId}:${restId}`; + await this.cacheService.del(cacheKey); + } +} diff --git a/src/modules/roles/providers/roles.service.ts b/src/modules/roles/providers/roles.service.ts new file mode 100644 index 0000000..c13bc4e --- /dev/null +++ b/src/modules/roles/providers/roles.service.ts @@ -0,0 +1,134 @@ +import { Injectable, NotFoundException, BadRequestException } from '@nestjs/common'; +import { InjectRepository } from '@mikro-orm/nestjs'; +import { EntityRepository, FilterQuery } from '@mikro-orm/core'; +import { Role } from '../entities/role.entity'; +import { Permission } from '../entities/permission.entity'; +import { Restaurant } from '../../restaurants/entities/restaurant.entity'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { CreateRoleDto } from '../dto/create-role.dto'; +import { UpdateRoleDto } from '../dto/update-role.dto'; +import { RolePermission } from '../entities/rolePermission.entity'; +import { RoleMessage } from 'src/common/enums/message.enum'; + +@Injectable() +export class RolesService { + constructor( + @InjectRepository(Role) + private readonly roleRepository: EntityRepository, + @InjectRepository(Permission) + private readonly permissionRepository: EntityRepository, + private readonly em: EntityManager, + ) { } + + async createRestaurantRole(dto: CreateRoleDto, restId: string) { + const { name, permissionIds } = dto; + + const restaurant = await this.em.findOne(Restaurant, { id: restId }); + + if (!restaurant) { + throw new NotFoundException('Restaurant not found'); + } + // Check if role already exists + const existing = await this.roleRepository.findOne({ name, restaurant }); + if (existing) { + throw new BadRequestException('Role with this name already exists for the restaurant'); + } + + + const role = this.roleRepository.create({ + name, + restaurant, + isSystem: false, + }); + + // Add permissions if provided + if (permissionIds && permissionIds.length > 0) { + const permissions = await this.permissionRepository.find({ id: { $in: permissionIds } }); + if (permissions.length !== permissionIds.length) { + throw new BadRequestException('One or more permissions not found'); + } + permissions.forEach(p => role.permissions.add(p)); + } + + await this.em.persistAndFlush(role); + return role; + } + + async findAllGeneralAndRestaurantRoles(restId: string) { + const where: FilterQuery = { $or: [{ restaurant: restId }, { restaurant: null }], isSystem: false }; + + const roles = await this.roleRepository.find(where, { + orderBy: { createdAt: 'desc' }, + populate: ['permissions', 'restaurant'], + }); + + return roles; + } + + async findOne(restId: string, id: string) { + const role = await this.findOneOrFail(id); + if (role.restaurant && role.restaurant.id !== restId) { + throw new NotFoundException('Role not found'); + } + return role; + } + + async findOneOrFail(id: string) { + const role = await this.roleRepository.findOne( + { id }, + { populate: ['permissions', 'restaurant','admins'] }, + ); + if (!role) { + throw new NotFoundException('Role not found'); + } + return role; + } + + async update(restId: string, id: string, dto: UpdateRoleDto) { + const role = await this.findOne(restId, id); + + if (dto.name) { + role.name = dto.name; + } + + if (dto.permissionIds && dto.permissionIds.length >= 0) { + // Clear existing permissions and add new ones + role.permissions.removeAll(); + const permissions = await this.permissionRepository.find({ id: { $in: dto.permissionIds } }); + if (permissions.length !== dto.permissionIds.length) { + throw new BadRequestException('One or more permissions not found'); + } + permissions.forEach(p => role.permissions.add(p)); + } + + await this.em.persistAndFlush(role); + return role; + } + + async findAllSystemRoles() { + const roles = await this.roleRepository.find( + { isSystem: true }, + { + orderBy: { createdAt: 'desc' }, + populate: ['permissions', 'restaurant'], + }, + ); + + return roles; + } + + async remove(restId: string, id: string) { + const role = await this.findOne(restId, id); + + if (!role.admins.isEmpty()) { + throw new BadRequestException(RoleMessage.ROLE_HAS_ADMINS); + } + + // Hard delete pivot table entries (role_permissions) before soft deleting the role + await this.em.nativeDelete(RolePermission, { role: { id: role.id } }); + + // Soft delete the role + role.deletedAt = new Date(); + return this.em.persistAndFlush(role); + } +} diff --git a/src/modules/roles/roles.module.ts b/src/modules/roles/roles.module.ts new file mode 100644 index 0000000..3367e3c --- /dev/null +++ b/src/modules/roles/roles.module.ts @@ -0,0 +1,20 @@ +import { Global, Module } from '@nestjs/common'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { RolesService } from './providers/roles.service'; +import { RolesController } from './controllers/roles.controller'; +import { PermissionsService } from './providers/permissions.service'; +import { Role } from './entities/role.entity'; +import { Permission } from './entities/permission.entity'; +import { RolePermission } from './entities/rolePermission.entity'; +import { JwtModule } from '@nestjs/jwt'; +import { UtilsModule } from '../utils/utils.module'; +import { AdminModule } from '../admin/admin.module'; + +@Global() +@Module({ + imports: [MikroOrmModule.forFeature([Role, Permission, RolePermission]), JwtModule, UtilsModule, AdminModule], + controllers: [RolesController], + providers: [RolesService, PermissionsService], + exports: [RolesService, PermissionsService], +}) +export class RolesModule {} diff --git a/src/modules/uploader/DTO/upload-file.dto.ts b/src/modules/uploader/DTO/upload-file.dto.ts new file mode 100755 index 0000000..75312db --- /dev/null +++ b/src/modules/uploader/DTO/upload-file.dto.ts @@ -0,0 +1,19 @@ +import type { File } from '@nest-lab/fastify-multer'; +import { ApiProperty } from '@nestjs/swagger'; + +export class UploadSingleFileDto { + @ApiProperty({ type: 'string', format: 'binary', nullable: false }) + file: File; +} + +export class UploadMultipleFileDto { + @ApiProperty({ + required: true, + type: 'array', + items: { + type: 'string', + format: 'binary', + }, + }) + files: File[]; +} diff --git a/src/modules/uploader/controllers/uploader.controller.ts b/src/modules/uploader/controllers/uploader.controller.ts new file mode 100644 index 0000000..60d924f --- /dev/null +++ b/src/modules/uploader/controllers/uploader.controller.ts @@ -0,0 +1,57 @@ +import { type File, FileInterceptor, FilesInterceptor } from '@nest-lab/fastify-multer'; +import { Controller, Post, UploadedFile, UploadedFiles, UseGuards, UseInterceptors } from '@nestjs/common'; +import { ApiBody, ApiConsumes, ApiOperation, ApiBearerAuth, ApiTags } from '@nestjs/swagger'; +import { UploadMultipleFileDto, UploadSingleFileDto } from '../DTO/upload-file.dto'; +import { UploaderService } from '../providers/uploader.service'; +import { AdminAuthGuard } from '../../auth/guards/adminAuth.guard'; +import { AuthGuard } from '../../auth/guards/auth.guard'; + +@ApiTags('uploader') +@Controller() +export class UploaderController { + constructor(private readonly uploaderService: UploaderService) {} + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Upload a file (admin)' }) + @ApiConsumes('multipart/form-data') + @UseInterceptors(FileInterceptor('file')) + @ApiBody({ type: UploadSingleFileDto }) + @Post('public/single-file') + uploadFile(@UploadedFile() file: File) { + return this.uploaderService.uploadFile(file); + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Uploads multiple files' }) + @ApiConsumes('multipart/form-data') + @UseInterceptors(FilesInterceptor('files')) + @ApiBody({ type: UploadMultipleFileDto }) + @Post('public/multi-file') + uploadFiles(@UploadedFiles() files: File[]) { + return this.uploaderService.uploadMultiple(files); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Upload a file (admin)' }) + @ApiConsumes('multipart/form-data') + @UseInterceptors(FileInterceptor('file')) + @ApiBody({ type: UploadSingleFileDto }) + @Post('admin/single-file') + uploadFileAdmin(@UploadedFile() file: File) { + return this.uploaderService.uploadFile(file); + } + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Uploads multiple files' }) + @ApiConsumes('multipart/form-data') + @UseInterceptors(FilesInterceptor('files')) + @ApiBody({ type: UploadMultipleFileDto }) + @Post('admin/multi-file') + uploadFilesAdmin(@UploadedFiles() files: File[]) { + return this.uploaderService.uploadMultiple(files); + } +} diff --git a/src/modules/uploader/interfaces/file.interface.ts b/src/modules/uploader/interfaces/file.interface.ts new file mode 100644 index 0000000..b4825b9 --- /dev/null +++ b/src/modules/uploader/interfaces/file.interface.ts @@ -0,0 +1,41 @@ +import type { File } from '@nest-lab/fastify-multer'; + +export interface FileUploadResult { + file: File; + url: string; +} + +export interface FileStreamResult { + stream: NodeJS.ReadableStream; + file: File; +} + +export interface FileMetadata { + width?: number; + height?: number; + duration?: number; + bitrate?: number; + codec?: string; + language?: string; +} + +export type FileType = 'video' | 'audio' | 'image' | 'document' | 'text' | 'unknown'; + +export interface FileValidationOptions { + maxFileSize: number; + allowedMimeTypes: string[]; +} + +export interface FileUploadOptions { + roomId?: string; + metadata?: Record; +} + +// File processing status +export type FileProcessingStatus = 'pending' | 'processing' | 'completed' | 'failed'; + +export interface FileProcessingResult { + status: FileProcessingStatus; + metadata?: FileMetadata; + error?: string; +} diff --git a/src/modules/uploader/interfaces/s3.interface.ts b/src/modules/uploader/interfaces/s3.interface.ts new file mode 100644 index 0000000..2791d05 --- /dev/null +++ b/src/modules/uploader/interfaces/s3.interface.ts @@ -0,0 +1,37 @@ +export interface S3UploadResult { + key: string; + url: string; + bucket: string; +} + +export interface S3UploadOptions { + contentType: string; + metadata?: Record; + acl?: 'private' | 'public-read' | 'public-read-write'; +} + +export interface S3DownloadOptions { + expiresIn?: number; + responseContentType?: string; + responseContentDisposition?: string; +} + +export interface S3FileInfo { + key: string; + bucket: string; + size: number; + lastModified: Date; + contentType: string; + etag: string; +} + +export interface S3DeleteResult { + deleted: boolean; + key: string; +} + +export interface S3ListResult { + files: S3FileInfo[]; + continuationToken?: string; + isTruncated: boolean; +} diff --git a/src/modules/uploader/providers/s3.service.ts b/src/modules/uploader/providers/s3.service.ts new file mode 100644 index 0000000..f7c204d --- /dev/null +++ b/src/modules/uploader/providers/s3.service.ts @@ -0,0 +1,173 @@ +import { randomInt } from 'node:crypto'; +import { Readable } from 'node:stream'; + +import { DeleteObjectCommand, GetObjectCommand, PutObjectCommand, S3Client } from '@aws-sdk/client-s3'; +import { getSignedUrl } from '@aws-sdk/s3-request-presigner'; +import { Injectable, Logger } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { FileType } from '../interfaces/file.interface'; +import { S3UploadResult } from '../interfaces/s3.interface'; + +@Injectable() +export class S3Service { + private readonly logger = new Logger(S3Service.name); + private readonly s3Client: S3Client; + private readonly bucketName: string; + private readonly region: string; // Region is often 'us-east-1' or similar for Liara, but depends on your config + private readonly endpointUrl: string; // Renamed 'url' to 'endpointUrl' for clarity + + constructor(private readonly configService: ConfigService) { + // --- Configuration for Liara S3 --- + this.bucketName = this.configService.getOrThrow('BUCKET_NAME'); + // Liara S3 usually requires a specific endpoint URL + this.endpointUrl = this.configService.getOrThrow('LIARA_S3_ENDPOINT'); + // The region for Liara S3 is often 'us-east-1' or just a placeholder, + // but we'll keep it configurable for consistency. + this.region = this.configService.getOrThrow('BUCKET_REGION'); + + this.s3Client = new S3Client({ + region: this.region, // Use the configured region + endpoint: this.endpointUrl, // This is the crucial change for Liara S3 + forcePathStyle: true, // Often required when using custom S3 endpoints like Liara + credentials: { + accessKeyId: this.configService.getOrThrow('BUCKET_ACCESS_KEY'), + secretAccessKey: this.configService.getOrThrow('BUCKET_SECRET_KEY'), + }, + }); + // ------------------------------------ + } + + /** + * Upload file to S3 + */ + async uploadFile( + buffer: Buffer, + key: string, + contentType: string, + metadata?: Record, + ): Promise { + try { + const sanitizedMetadata = metadata + ? Object.entries(metadata).reduce( + (acc, [key, value]) => { + // Encode all values to be ASCII-safe + acc[key] = encodeURIComponent(value); + return acc; + }, + {} as Record, + ) + : undefined; + // NOTE: 'ACL: public-read' might not be supported or necessary for Liara S3, + // depending on your bucket configuration on Liara. + // If uploads fail, try removing this line. + const command = new PutObjectCommand({ + Bucket: this.bucketName, + Key: key, + Body: buffer, + // ACL: 'public-read', + ContentType: contentType, + Metadata: sanitizedMetadata, + }); + + await this.s3Client.send(command); + + // --- URL for Liara S3 --- + // The public URL for Liara S3 files is typically: ${endpoint}/${bucketName}/${key} + const url = `${this.endpointUrl}/${this.bucketName}/${key}`; + + this.logger.log(`File uploaded to S3: ${key}`); + + return { + key, + url, + bucket: this.bucketName, + }; + } catch (error: unknown) { + this.logger.error(`Failed to upload file to S3: ${(error as Error).message}`, (error as Error).stack); + throw error; + } + } + + // --- Other methods remain the same as they use the S3Client which is now configured for Liara --- + + /** + * Get file stream from S3 + */ + + async getFileStream(key: string): Promise { + try { + const command = new GetObjectCommand({ + Bucket: this.bucketName, + Key: key, + }); + + const response = await this.s3Client.send(command); + + // ✅ VALIDATION + if (response.Body instanceof Readable) { + return response.Body; + } + + // If it's not a Readable stream, throw a specific error + throw new Error(`File body is not a readable stream for key: ${key}`); + } catch (error: unknown) { + this.logger.error(`Failed to get file from S3: ${(error as Error).message}`, (error as Error).stack); + throw error; + } + } + /** + * Generate presigned URL for file download + */ + async getPresignedUrl(key: string, expiresIn: number = 3600): Promise { + try { + const command = new GetObjectCommand({ + Bucket: this.bucketName, + Key: key, + }); + + return await getSignedUrl(this.s3Client, command, { expiresIn }); + } catch (error: unknown) { + this.logger.error(`Failed to generate presigned URL: ${(error as Error).message}`, (error as Error).stack); + throw error; + } + } + + /** + * Delete file from S3 + */ + async deleteFile(key: string): Promise { + try { + const command = new DeleteObjectCommand({ + Bucket: this.bucketName, + Key: key, + }); + + await this.s3Client.send(command); + this.logger.log(`File deleted from S3: ${key}`); + } catch (error: unknown) { + this.logger.error(`Failed to delete file from S3: ${(error as Error).message}`, (error as Error).stack); + throw error; + } + } + + /** + * Generate S3 key for file + */ + generateFileKey(originalName: string, fileType: FileType): string { + const timestamp = Date.now(); + const randomSuffix = randomInt(1000000, 9999999); + const extension = originalName.split('.').pop(); + + const basePathMap: Record = { + image: 'images', + video: 'videos', + audio: 'audio', + document: 'documents', + text: 'texts', + unknown: 'unknowns', + }; + + const basePath = basePathMap[fileType]; + return `${basePath}/${timestamp}-${randomSuffix}.${extension}`; + } +} diff --git a/src/modules/uploader/providers/uploader.service.ts b/src/modules/uploader/providers/uploader.service.ts new file mode 100644 index 0000000..9bda649 --- /dev/null +++ b/src/modules/uploader/providers/uploader.service.ts @@ -0,0 +1,133 @@ +import { File } from '@nest-lab/fastify-multer'; +import { BadRequestException, Injectable, Logger } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; + +import { S3Service } from './s3.service'; +import { UploaderMessage } from '../../../common/enums/message.enum'; +import { FileType } from '../interfaces/file.interface'; + +@Injectable() +export class UploaderService { + private readonly logger = new Logger(UploaderService.name); + private readonly maxFileSize: number; + private readonly allowedMimeTypes: string[]; + + constructor( + private readonly configService: ConfigService, + private readonly s3Service: S3Service, + ) { + this.maxFileSize = this.configService.get('MAX_FILE_SIZE', 1024 * 1024 * 100); // 100MB + this.allowedMimeTypes = [ + 'video/mp4', + 'video/webm', + 'video/ogg', + 'video/avi', + 'video/mov', + 'video/mkv', + 'audio/mp3', + 'audio/wav', + 'audio/ogg', + 'audio/webm', + 'audio/m4a', + 'audio/aac', + 'audio/flac', + 'audio/m4a', + 'image/jpeg', + 'image/png', + 'image/gif', + 'image/webp', + 'image/svg+xml', + 'image/tiff', + 'image/bmp', + 'application/pdf', + 'text/plain', + 'text/csv', + 'application/msword', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'application/vnd.ms-excel', + 'application/vnd.ms-powerpoint', + 'application/vnd.ms-excel.sheet.macroEnabled.12', + 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', + 'application/vnd.ms-excel.template.macroEnabled.12', + 'application/vnd.ms-powerpoint.template.macroEnabled.12', + 'application/vnd.ms-excel.addin.macroEnabled.12', + 'application/vnd.ms-powerpoint.addin.macroEnabled.12', + 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', + 'application/vnd.ms-powerpoint.presentation.binary.macroEnabled.12', + 'application/vnd.ms-excel.template.binary.macroEnabled.12', + 'application/vnd.ms-powerpoint.template.binary.macroEnabled.12', + 'application/vnd.ms-excel.addin.binary.macroEnabled.12', + ]; + } + + async uploadMultiple(files: File[]) { + return await Promise.all(files.map(file => this.uploadFile(file))); + } + + /** + * Handle file upload + */ + async uploadFile(file: File) { + if (!file || !file.buffer || !file.size) { + throw new BadRequestException(UploaderMessage.UPLOAD_FILE_INVALID); + } + this.logger.log(`Uploading file: ${file.originalname}`); + + this.validateFile(file); + + const fileType = await this.determineFileType(file.mimetype); + + const s3Key = this.s3Service.generateFileKey(file.originalname, fileType); + + // Upload to S3 + const s3Result = await this.s3Service.uploadFile(file.buffer, s3Key, file.mimetype, { + originalName: file.originalname, + uploadedBy: 'admin', + }); + + this.logger.log(`File uploaded successfully: `); + + return { + file: s3Result, + url: s3Result.url, + }; + } + + /** + * Validate uploaded file + */ + private validateFile(file: File): void { + if (!file) throw new BadRequestException(UploaderMessage.UPLOAD_FILE_INVALID); + + if (file.size && file.size > this.maxFileSize) + throw new BadRequestException( + UploaderMessage.UPLOAD_FILE_TOO_LARGE.replace('[MAX_FILE_SIZE]', this.maxFileSize.toString()), + ); + + if (!this.allowedMimeTypes.includes(file.mimetype)) + throw new BadRequestException( + UploaderMessage.UPLOAD_FILE_TYPE_NOT_SUPPORTED.replace('[MIME_TYPES]', file.mimetype), + ); + } + + /** + * Determine file type based on mimetype + */ + private async determineFileType(mimetype: string): Promise { + if (mimetype.startsWith('video/')) { + return 'video'; + } else if (mimetype.startsWith('audio/')) { + return 'audio'; + } else if (mimetype.startsWith('image/')) { + return 'image'; + } else if (mimetype.startsWith('text/')) { + return 'text'; + } else if (mimetype.startsWith('application/')) { + return 'document'; + } + return 'unknown'; + } +} diff --git a/src/modules/uploader/uploader.module.ts b/src/modules/uploader/uploader.module.ts new file mode 100644 index 0000000..960cc78 --- /dev/null +++ b/src/modules/uploader/uploader.module.ts @@ -0,0 +1,14 @@ +import { Module } from '@nestjs/common'; + +import { S3Service } from './providers/s3.service'; +import { UploaderService } from './providers/uploader.service'; +import { UploaderController } from './controllers/uploader.controller'; +import { JwtModule } from '@nestjs/jwt'; + +@Module({ + controllers: [UploaderController], + providers: [UploaderService, S3Service], + exports: [UploaderService, S3Service], + imports: [JwtModule], +}) +export class UploaderModule {} diff --git a/src/modules/users/controllers/users.controller.ts b/src/modules/users/controllers/users.controller.ts new file mode 100644 index 0000000..a32a6de --- /dev/null +++ b/src/modules/users/controllers/users.controller.ts @@ -0,0 +1,183 @@ +import { Controller, Get, UseGuards, Patch, Body, ValidationPipe, Post, Query, Delete, Param } from '@nestjs/common'; +import { ApiTags, ApiBearerAuth, ApiOperation, ApiBody, ApiOkResponse, ApiHeader } from '@nestjs/swagger'; +import { AuthGuard } from 'src/modules/auth/guards/auth.guard'; +import { UserService } from '../providers/user.service'; +import { UpdateUserDto } from '../dto/update-user.dto'; +import { CreateUserAddressDto } from '../dto/create-user-address.dto'; +import { UpdateUserAddressDto } from '../dto/update-user-address.dto'; +import { UserId } from 'src/common/decorators/user-id.decorator'; +import { RestId } from 'src/common/decorators'; +import { FindUsersDto } from '../dto/find-user.dto'; +import { FindWalletTransactionsDto } from '../dto/find-wallet-transactions.dto'; +import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard'; +import { API_HEADER_SLUG } from 'src/common/constants/index'; +import { UserSuccessMessage } from 'src/common/enums/message.enum'; +import { Permissions } from 'src/common/decorators/permissions.decorator'; +import { Permission } from 'src/common/enums/permission.enum'; +import { WalletService } from '../providers/wallet.service'; + +@ApiTags('User') +@Controller() +export class UsersController { + constructor( + private readonly userService: UserService, + private readonly walletService: WalletService, + ) {} + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get the current authenticated user profile' }) + @ApiHeader(API_HEADER_SLUG) + @Get('public/user/me') + async getUser(@UserId() userId: string) { + const user = await this.userService.findById(userId); + return user; + } + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Update the authenticated user profile' }) + @ApiHeader(API_HEADER_SLUG) + @ApiBody({ type: UpdateUserDto }) + @Patch('public/user/update') + async updateUser(@UserId() userId: string, @RestId() restId: string, @Body() dto: UpdateUserDto) { + const user = await this.userService.updateUser(userId, restId, dto); + return user; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get all addresses for the authenticated user' }) + @ApiHeader(API_HEADER_SLUG) + @ApiOkResponse({ description: 'List of user addresses' }) + @Get('public/user/addresses') + async getUserAddresses(@UserId() userId: string) { + const addresses = await this.userService.getUserAddresses(userId); + return addresses; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get User Wallet' }) + @ApiHeader(API_HEADER_SLUG) + @Get('public/user/wallet/balance') + async getUserWalletBalance(@UserId() userId: string, @RestId() restId: string) { + const wallet = await this.walletService.getUserCurrentWalletBalance(userId, restId); + return wallet; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get User Wallet' }) + @ApiHeader(API_HEADER_SLUG) + @Get('public/user/points/balance') + async getUserWallet(@UserId() userId: string, @RestId() restId: string) { + const wallet = await this.walletService.getUserCurrentPoinrBalance(userId, restId); + return wallet; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get User Wallet Transactions' }) + @ApiHeader(API_HEADER_SLUG) + @Get('public/user/wallet/transactions') + async getUserWalletTransactions( + @UserId() userId: string, + @RestId() restId: string, + @Query(new ValidationPipe({ transform: true, whitelist: true })) + query: FindWalletTransactionsDto, + ) { + const transactions = await this.userService.getUserWalletTransactions(userId, restId, query); + return transactions; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Create a new address for the authenticated user' }) + @ApiHeader(API_HEADER_SLUG) + @ApiBody({ type: CreateUserAddressDto }) + @ApiOkResponse({ description: 'Created user address' }) + @Post('public/user/addresses') + async createUserAddress( + @UserId() userId: string, + @Body(new ValidationPipe({ transform: true, whitelist: true })) dto: CreateUserAddressDto, + ) { + const address = await this.userService.createUserAddress(userId, dto); + return address; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Get a single address by ID for the authenticated user' }) + @ApiHeader(API_HEADER_SLUG) + @ApiOkResponse({ description: 'User address details' }) + @Get('public/user/addresses/:addressId') + async getUserAddress(@UserId() userId: string, @Param('addressId') addressId: string) { + const address = await this.userService.getUserAddress(userId, addressId); + return address; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Update an address for the authenticated user' }) + @ApiHeader(API_HEADER_SLUG) + @ApiBody({ type: UpdateUserAddressDto }) + @ApiOkResponse({ description: 'Updated user address' }) + @Patch('public/user/addresses/:addressId') + async updateUserAddress( + @UserId() userId: string, + @Param('addressId') addressId: string, + @Body(new ValidationPipe({ transform: true, whitelist: true })) dto: UpdateUserAddressDto, + ) { + const address = await this.userService.updateUserAddress(userId, addressId, dto); + return address; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Delete an address for the authenticated user' }) + @ApiHeader(API_HEADER_SLUG) + @ApiOkResponse({ description: 'Address deleted successfully' }) + @Delete('public/user/addresses/:addressId') + async deleteUserAddress(@UserId() userId: string, @Param('addressId') addressId: string) { + await this.userService.deleteUserAddress(userId, addressId); + return { message: UserSuccessMessage.ADDRESS_DELETED_SUCCESS }; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Set an address as default for the authenticated user' }) + @ApiHeader(API_HEADER_SLUG) + @ApiOkResponse({ description: 'Address set as default' }) + @Patch('public/user/addresses/:addressId/default') + async setDefaultAddress(@UserId() userId: string, @Param('addressId') addressId: string) { + const address = await this.userService.setDefaultAddress(userId, addressId); + return address; + } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Convert user score (points) to wallet balance' }) + @ApiHeader(API_HEADER_SLUG) + @Post('public/user/convert-score-to-wallet') + async convertScoreToWallet(@UserId() userId: string, @RestId() restId: string) { + await this.userService.convertScoreToWallet(userId, restId); + return { + message: UserSuccessMessage.SCORE_CONVERTED_SUCCESS, + }; + } + + /******************** Admin Routes **********************/ + + @UseGuards(AdminAuthGuard) + @ApiBearerAuth() + @Permissions(Permission.MANAGE_USERS) + @ApiOperation({ summary: 'Get paginated list of restuarant users with filters' }) + @Get('admin/users') + async findAllRestaurantUsers( + @Query(new ValidationPipe({ transform: true, whitelist: true })) + query: FindUsersDto, + @RestId() restId: string, + ) { + return this.userService.findAll(restId, query); + } +} diff --git a/src/modules/users/dto/create-user-address.dto.ts b/src/modules/users/dto/create-user-address.dto.ts new file mode 100644 index 0000000..0e6a454 --- /dev/null +++ b/src/modules/users/dto/create-user-address.dto.ts @@ -0,0 +1,51 @@ +import { IsString, IsOptional, IsNumber, IsBoolean, Min, Max } from 'class-validator'; +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; + +/** + * DTO for creating a new user address. + */ +export class CreateUserAddressDto { + @ApiProperty({ description: 'Address title/label (e.g., "Home", "Work")', example: 'Home' }) + @IsString() + title!: string; + + @ApiProperty({ description: 'Street address', example: '123 Main Street' }) + @IsString() + address!: string; + + @ApiProperty({ description: 'City name', example: 'Tehran' }) + @IsString() + city!: string; + + @ApiPropertyOptional({ description: 'Province', example: 'Tehran Province' }) + @IsOptional() + @IsString() + province?: string; + + @ApiPropertyOptional({ description: 'Postal/ZIP code', example: '12345-6789' }) + @IsOptional() + @IsString() + postalCode?: string; + + @ApiProperty({ description: 'Latitude coordinate', example: 35.6892, minimum: -90, maximum: 90 }) + @IsNumber() + @Min(-90) + @Max(90) + latitude!: number; + + @ApiProperty({ description: 'Longitude coordinate', example: 51.389, minimum: -180, maximum: 180 }) + @IsNumber() + @Min(-180) + @Max(180) + longitude!: number; + + @ApiPropertyOptional({ description: 'Contact phone for this address', example: '+989123456789' }) + @IsOptional() + @IsString() + phone?: string; + + @ApiPropertyOptional({ description: 'Set as default address', example: false, default: false }) + @IsOptional() + @IsBoolean() + isDefault?: boolean; +} diff --git a/src/modules/users/dto/create-wallet-transaction.dto.ts b/src/modules/users/dto/create-wallet-transaction.dto.ts new file mode 100644 index 0000000..7f52fc3 --- /dev/null +++ b/src/modules/users/dto/create-wallet-transaction.dto.ts @@ -0,0 +1,34 @@ +import { IsNotEmpty, IsNumber, IsIn } from 'class-validator'; +import { Type } from 'class-transformer'; +import { ApiProperty } from '@nestjs/swagger'; +import { WalletTransactionType, WalletTransactionReason } from '../interface/wallet'; + +export class CreateWalletTransactionDto { + @ApiProperty({ + description: 'Transaction amount', + type: Number, + example: 1000, + }) + @IsNotEmpty() + @IsNumber() + @Type(() => Number) + amount!: number; + + @ApiProperty({ + description: 'Transaction type', + enum: WalletTransactionType, + example: WalletTransactionType.CREDIT, + }) + @IsNotEmpty() + @IsIn(Object.values(WalletTransactionType)) + type!: WalletTransactionType; + + @ApiProperty({ + description: 'Transaction reason', + enum: WalletTransactionReason, + example: WalletTransactionReason.ORDER_PAYMENT, + }) + @IsNotEmpty() + @IsIn(Object.values(WalletTransactionReason)) + reason!: WalletTransactionReason; +} diff --git a/src/modules/users/dto/find-user.dto.ts b/src/modules/users/dto/find-user.dto.ts new file mode 100644 index 0000000..ba3852b --- /dev/null +++ b/src/modules/users/dto/find-user.dto.ts @@ -0,0 +1,80 @@ +import { IsOptional, IsString, IsNumber, Min, IsIn } from 'class-validator'; +import { Type } from 'class-transformer'; +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { User } from '../entities/user.entity'; + +// Define the valid sort directions +const sortOrderOptions = ['asc', 'desc'] as const; +type SortOrder = (typeof sortOrderOptions)[number]; + +export class FindUsersDto { + /** + * The page number to retrieve. + * @default 1 + */ + @ApiPropertyOptional({ + description: 'شماره صفحه', + type: Number, + default: 1, + minimum: 1, + }) + @IsOptional() + @IsNumber() + @Min(1) + @Type(() => Number) + page?: number = 1; + + /** + * The number of items per page. + * @default 10 + */ + @ApiPropertyOptional({ + description: 'تعداد مورد در هر صفحه', + type: Number, + default: 10, + minimum: 1, + }) + @IsOptional() + @IsNumber() + @Min(1) + @Type(() => Number) + limit?: number = 10; + + /** + * A general search term to filter by. + * Searches firstName, lastName, phone, and nationalCode. + */ + @ApiPropertyOptional({ + description: 'جستجو بر اساس نام، نام‌خانوادگی یا شماره تماس', + type: String, + }) + @IsOptional() + @IsString() + search?: string; + + /** + * The field to sort the results by. + * @default "createdAt" + */ + @ApiPropertyOptional({ + description: 'فیلد مرتب‌سازی', + type: String, + default: 'createdAt', + }) + @IsOptional() + @IsString() + orderBy?: keyof User = 'createdAt'; + + /** + * The direction to sort the results. + * @default "desc" + */ + @ApiPropertyOptional({ + description: 'جهت مرتب‌سازی (asc یا desc)', + enum: sortOrderOptions, + default: 'desc', + }) + @IsOptional() + @IsIn(sortOrderOptions) + order?: SortOrder = 'desc'; +} diff --git a/src/modules/users/dto/find-wallet-transactions.dto.ts b/src/modules/users/dto/find-wallet-transactions.dto.ts new file mode 100644 index 0000000..2aa5d4b --- /dev/null +++ b/src/modules/users/dto/find-wallet-transactions.dto.ts @@ -0,0 +1,136 @@ +import { IsOptional, IsString, IsNumber, Min, IsIn, IsDateString } from 'class-validator'; +import { Type } from 'class-transformer'; +import { ApiPropertyOptional } from '@nestjs/swagger'; +import { WalletTransactionType, WalletTransactionReason } from '../interface/wallet'; + +// Define the valid sort directions +const sortOrderOptions = ['asc', 'desc'] as const; +type SortOrder = (typeof sortOrderOptions)[number]; + +export class FindWalletTransactionsDto { + /** + * The page number to retrieve. + * @default 1 + */ + @ApiPropertyOptional({ + description: 'Page number', + type: Number, + default: 1, + minimum: 1, + }) + @IsOptional() + @IsNumber() + @Min(1) + @Type(() => Number) + page?: number = 1; + + /** + * The number of items per page. + * @default 10 + */ + @ApiPropertyOptional({ + description: 'Items per page', + type: Number, + default: 10, + minimum: 1, + }) + @IsOptional() + @IsNumber() + @Min(1) + @Type(() => Number) + limit?: number = 10; + + /** + * Filter by transaction type + */ + @ApiPropertyOptional({ + description: 'Transaction type filter', + enum: WalletTransactionType, + }) + @IsOptional() + @IsIn(Object.values(WalletTransactionType)) + type?: WalletTransactionType; + + /** + * Filter by transaction reason + */ + @ApiPropertyOptional({ + description: 'Transaction reason filter', + enum: WalletTransactionReason, + }) + @IsOptional() + @IsIn(Object.values(WalletTransactionReason)) + reason?: WalletTransactionReason; + + /** + * Filter transactions from this date onwards + */ + @ApiPropertyOptional({ + description: 'Start date filter (ISO 8601 format)', + type: String, + }) + @IsOptional() + @IsDateString() + startDate?: string; + + /** + * Filter transactions up to this date + */ + @ApiPropertyOptional({ + description: 'End date filter (ISO 8601 format)', + type: String, + }) + @IsOptional() + @IsDateString() + endDate?: string; + + /** + * Minimum amount filter + */ + @ApiPropertyOptional({ + description: 'Minimum amount filter', + type: Number, + }) + @IsOptional() + @IsNumber() + @Type(() => Number) + minAmount?: number; + + /** + * Maximum amount filter + */ + @ApiPropertyOptional({ + description: 'Maximum amount filter', + type: Number, + }) + @IsOptional() + @IsNumber() + @Type(() => Number) + maxAmount?: number; + + /** + * The field to sort the results by. + * @default "createdAt" + */ + @ApiPropertyOptional({ + description: 'Sort field', + type: String, + default: 'createdAt', + }) + @IsOptional() + @IsString() + orderBy?: string = 'createdAt'; + + /** + * The direction to sort the results. + * @default "desc" + */ + @ApiPropertyOptional({ + description: 'Sort direction', + enum: sortOrderOptions, + default: 'desc', + }) + @IsOptional() + @IsIn(sortOrderOptions) + order?: SortOrder = 'desc'; +} diff --git a/src/modules/users/dto/update-user-address.dto.ts b/src/modules/users/dto/update-user-address.dto.ts new file mode 100644 index 0000000..e82330c --- /dev/null +++ b/src/modules/users/dto/update-user-address.dto.ts @@ -0,0 +1,56 @@ +import { IsString, IsOptional, IsNumber, IsBoolean, Min, Max } from 'class-validator'; +import { ApiPropertyOptional } from '@nestjs/swagger'; + +/** + * DTO for updating a user address. + */ +export class UpdateUserAddressDto { + @ApiPropertyOptional({ description: 'Address title/label (e.g., "Home", "Work")', example: 'Home' }) + @IsOptional() + @IsString() + title?: string; + + @ApiPropertyOptional({ description: 'Street address', example: '123 Main Street' }) + @IsOptional() + @IsString() + address?: string; + + @ApiPropertyOptional({ description: 'City name', example: 'Tehran' }) + @IsOptional() + @IsString() + city?: string; + + @ApiPropertyOptional({ description: 'Province', example: 'Tehran Province' }) + @IsOptional() + @IsString() + province?: string; + + @ApiPropertyOptional({ description: 'Postal/ZIP code', example: '12345-6789' }) + @IsOptional() + @IsString() + postalCode?: string; + + @ApiPropertyOptional({ description: 'Latitude coordinate', example: 35.6892, minimum: -90, maximum: 90 }) + @IsOptional() + @IsNumber() + @Min(-90) + @Max(90) + latitude?: number; + + @ApiPropertyOptional({ description: 'Longitude coordinate', example: 51.389, minimum: -180, maximum: 180 }) + @IsOptional() + @IsNumber() + @Min(-180) + @Max(180) + longitude?: number; + + @ApiPropertyOptional({ description: 'Contact phone for this address', example: '+989123456789' }) + @IsOptional() + @IsString() + phone?: string; + + @ApiPropertyOptional({ description: 'Set as default address', example: false }) + @IsOptional() + @IsBoolean() + isDefault?: boolean; +} diff --git a/src/modules/users/dto/update-user.dto.ts b/src/modules/users/dto/update-user.dto.ts new file mode 100644 index 0000000..533545c --- /dev/null +++ b/src/modules/users/dto/update-user.dto.ts @@ -0,0 +1,35 @@ +import { IsString, IsOptional, IsBoolean } from 'class-validator'; +import { ApiPropertyOptional } from '@nestjs/swagger'; + +export class UpdateUserDto { + @ApiPropertyOptional({ description: "User's first name", example: 'John' }) + @IsOptional() + @IsString() + firstName?: string; + + @ApiPropertyOptional({ description: "User's last name", example: 'Doe' }) + @IsOptional() + @IsString() + lastName?: string; + + @ApiPropertyOptional({ description: "User's birth date (ISO)", example: '1990-01-01' }) + @IsOptional() + // keep as string here, caller should send ISO date; service will assign to Date + @IsString() + birthDate?: string; + + @ApiPropertyOptional({ description: "User's marriage date (ISO)", example: '2015-06-01' }) + @IsOptional() + @IsString() + marriageDate?: string; + + @ApiPropertyOptional({ description: 'Gender flag (boolean)', example: true }) + @IsOptional() + @IsBoolean() + gender?: boolean; + + @ApiPropertyOptional({ description: 'Avatar URL' }) + @IsOptional() + @IsString() + avatarUrl?: string; +} diff --git a/src/modules/users/entities/point-transaction.entity.ts b/src/modules/users/entities/point-transaction.entity.ts new file mode 100644 index 0000000..91e97a2 --- /dev/null +++ b/src/modules/users/entities/point-transaction.entity.ts @@ -0,0 +1,30 @@ +import { Entity, Property, ManyToOne, Index, Enum } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { Restaurant } from 'src/modules/restaurants/entities/restaurant.entity'; +import { User } from './user.entity'; +import { PointTransactionReason } from '../interface/point'; +import { PointTransactionType } from '../interface/point'; + +@Entity({ tableName: 'point_transactions' }) +@Index({ properties: ['user', 'restaurant'] }) // Composite index for most common query: find wallet by user and restaurant +@Index({ properties: ['user'] }) // Index for queries finding all wallets for a user +@Index({ properties: ['restaurant'] }) // Index for queries finding all wallets for a restaurant +export class PointTransaction extends BaseEntity { + @ManyToOne(() => User) + user!: User; + + @ManyToOne(() => User) + restaurant!: Restaurant; + + @Property({ type: 'decimal', precision: 10, scale: 0 }) + amount!: number; + + @Property({ type: 'decimal', precision: 10, scale: 0 }) + balance!: number; + + @Enum(() => PointTransaction) + type!: PointTransactionType; + + @Enum(() => PointTransactionReason) + reason!: PointTransactionReason; +} diff --git a/src/modules/users/entities/user-address.entity.ts b/src/modules/users/entities/user-address.entity.ts new file mode 100644 index 0000000..d2ae78c --- /dev/null +++ b/src/modules/users/entities/user-address.entity.ts @@ -0,0 +1,36 @@ +import { Entity, Property, ManyToOne } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { User } from './user.entity'; + +@Entity({ tableName: 'user_addresses' }) +export class UserAddress extends BaseEntity { + @ManyToOne(() => User) + user!: User; + + @Property() + title!: string; // e.g., "Home", "Work", "Office" + + @Property() + address!: string; + + @Property() + city!: string; + + @Property({ nullable: true }) + province?: string; + + @Property({ nullable: true }) + postalCode?: string | null = null; + + @Property({ type: 'float' }) + latitude!: number; + + @Property({ type: 'float' }) + longitude!: number; + + @Property({ nullable: true }) + phone?: string; // Contact phone for this address + + @Property({ default: false }) + isDefault: boolean = false; // Whether this is the default address +} diff --git a/src/modules/users/entities/user.entity.ts b/src/modules/users/entities/user.entity.ts new file mode 100644 index 0000000..794b103 --- /dev/null +++ b/src/modules/users/entities/user.entity.ts @@ -0,0 +1,53 @@ +import { Entity, Index, Property, OneToMany, Collection, Cascade } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { UserAddress } from './user-address.entity'; +import { Order } from 'src/modules/orders/entities/order.entity'; +import { normalizePhone } from '../../utils/phone.util'; + +@Entity({ tableName: 'users' }) +@Index({ properties: ['isActive'] }) +export class User extends BaseEntity { + @OneToMany(() => Order, order => order.user) + orders = new Collection(this); + + @Property() + firstName!: string; + + @Property({ nullable: true }) + lastName?: string; + + private _phone!: string; + + @Property({ unique: true }) + get phone(): string { + return this._phone; + } + + set phone(value: string) { + this._phone = normalizePhone(value); + } + + @Property({ default: null, type: 'date', nullable: true }) + birthDate?: Date; + + @Property({ default: null, type: 'date', nullable: true }) + marriageDate?: Date; + + @Property({ nullable: true }) + referrer?: string; + + @Property({ default: true }) + isActive?: boolean = true; + + @Property({ default: true, nullable: true }) + gender?: boolean; + + @Property({ nullable: true }) + avatarUrl?: string; + + @OneToMany(() => UserAddress, address => address.user, { + cascade: [Cascade.ALL], + orphanRemoval: true, + }) + addresses = new Collection(this); +} diff --git a/src/modules/users/entities/wallet-transaction.entity.ts b/src/modules/users/entities/wallet-transaction.entity.ts new file mode 100644 index 0000000..087f9a2 --- /dev/null +++ b/src/modules/users/entities/wallet-transaction.entity.ts @@ -0,0 +1,29 @@ +import { Entity, Index, Property, ManyToOne, Enum } from '@mikro-orm/core'; +import { BaseEntity } from '../../../common/entities/base.entity'; +import { User } from './user.entity'; +import { WalletTransactionReason, WalletTransactionType } from '../interface/wallet'; +import { Restaurant } from 'src/modules/restaurants/entities/restaurant.entity'; + +@Entity({ tableName: 'wallet_transactions' }) +@Index({ properties: ['user', 'restaurant'] }) +@Index({ properties: ['user'] }) +@Index({ properties: ['restaurant'] }) +export class WalletTransaction extends BaseEntity { + @ManyToOne(() => User) + user!: User; + + @ManyToOne(() => Restaurant) + restaurant!: Restaurant; + + @Property({ type: 'decimal', precision: 10, scale: 0 }) + amount!: number; + + @Property({ type: 'decimal', precision: 10, scale: 0 }) + balance!: number; + + @Enum(() => WalletTransactionType) + type!: WalletTransactionType; + + @Enum(() => WalletTransactionReason) + reason!: WalletTransactionReason; +} diff --git a/src/modules/users/interface/point.ts b/src/modules/users/interface/point.ts new file mode 100644 index 0000000..fa8a1c5 --- /dev/null +++ b/src/modules/users/interface/point.ts @@ -0,0 +1,10 @@ +export enum PointTransactionType { + CREDIT = 'credit', + DEBIT = 'debit', +} + + +export enum PointTransactionReason { + ORDER_COMPLETED_DEPOSIT = 'order_completed_deposit', + CONVERT_SCORE_TO_POINT = 'convert_score_to_point', +} \ No newline at end of file diff --git a/src/modules/users/interface/wallet.ts b/src/modules/users/interface/wallet.ts new file mode 100644 index 0000000..ad91490 --- /dev/null +++ b/src/modules/users/interface/wallet.ts @@ -0,0 +1,13 @@ +export enum WalletTransactionType { + CREDIT = 'credit', + DEBIT = 'debit', +} + + +export enum WalletTransactionReason { + ORDER_PAYMENT = 'order_payment', + ORDER_REFUND = 'order_refund', + CONVERT_SCORE_TO_WALLET = 'convert_score_to_wallet', + WITHDRAW = 'withdraw', + DEPOSIT = 'deposit', +} \ No newline at end of file diff --git a/src/modules/users/providers/user.service.ts b/src/modules/users/providers/user.service.ts new file mode 100644 index 0000000..bbc2972 --- /dev/null +++ b/src/modules/users/providers/user.service.ts @@ -0,0 +1,388 @@ +import { Injectable, NotFoundException, BadRequestException } from '@nestjs/common'; +import { FilterQuery, RequiredEntityData } from '@mikro-orm/core'; +import { User } from '../entities/user.entity'; +import { UserAddress } from '../entities/user-address.entity'; +import { Restaurant } from 'src/modules/restaurants/entities/restaurant.entity'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { UpdateUserDto } from '../dto/update-user.dto'; +import { FindUsersDto } from '../dto/find-user.dto'; +import { FindWalletTransactionsDto } from '../dto/find-wallet-transactions.dto'; +import { CreateWalletTransactionDto } from '../dto/create-wallet-transaction.dto'; +import { CreateUserAddressDto } from '../dto/create-user-address.dto'; +import { UpdateUserAddressDto } from '../dto/update-user-address.dto'; +import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; +import { UserRepository } from '../repositories/user.repository'; +import { normalizePhone } from '../../utils/phone.util'; +import { RestRepository } from 'src/modules/restaurants/repositories/rest.repository'; +import { WalletTransactionRepository } from '../repositories/wallet-transaction.repository'; +import { WalletService } from './wallet.service'; +import { WalletTransactionReason, WalletTransactionType } from '../interface/wallet'; +import { WalletTransaction } from '../entities/wallet-transaction.entity'; + +@Injectable() +export class UserService { + constructor( + private readonly userRepository: UserRepository, + private readonly restaurantRepository: RestRepository, + private readonly walletTransactionRepository: WalletTransactionRepository, + private readonly walletService: WalletService, + private readonly em: EntityManager, + ) { } + + async findOrCreateByPhone(phone: string): Promise { + const normalizedPhone = normalizePhone(phone); + let user = await this.userRepository.findOne({ phone: normalizedPhone }); + + if (!user) { + // firstName is required on the entity; use phone as a sensible default + const _raw = { + phone: normalizedPhone, + firstName: '[نام]', + // keep dates undefined (no value) — cast through unknown to satisfy TS typing + birthDate: undefined, + marriageDate: undefined, + wallet: 0, + points: 0, + }; + + const createData = _raw as unknown as RequiredEntityData; + + user = this.userRepository.create(createData); + await this.em.persistAndFlush(user); + } + + return user; + } + + // async updateUser(userId: string, dto: UpdateUserDto): Promise { + // const user = await this.em.findOneOrFail(User, userId, {}).catch(() => { + // throw new NotFoundException(`User with ID ${userId} not found.`); + // }); + + // this.em.assign(user, { ...dto }); + + // await this.em.flush(); + + // return user; + // } + + async findByPhone(phone: string): Promise { + const normalizedPhone = normalizePhone(phone); + return this.userRepository.findOne({ phone: normalizedPhone }); + } + + async findById(id: string): Promise { + return this.userRepository.findOne({ id }); + } + // todo : transaction code here + async create(phone: string, restId: string): Promise { + const normalizedPhone = normalizePhone(phone); + const _raw = { + phone: normalizedPhone, + firstName: normalizedPhone, + birthDate: undefined, + marriageDate: undefined, + }; + // get registerscore from restaurant + const restaurant = await this.restaurantRepository.findOne({ id: restId }); + if (!restaurant) { + throw new NotFoundException(`Restaurant not found.`); + } + const points = Number(restaurant.score?.registerScore || 0); + const createData = _raw as unknown as RequiredEntityData; + + const user = this.userRepository.create(createData); + const newWalletTransaction = this.walletTransactionRepository.create({ + user: user, + restaurant: restaurant, + balance: 0, + amount: points, + type: WalletTransactionType.CREDIT, + reason: WalletTransactionReason.DEPOSIT + }); + await this.em.persistAndFlush([user, newWalletTransaction]); + return user; + } + + async updateUser(userId: string, restId: string, dto: UpdateUserDto): Promise { + const user = await this.userRepository.findOne({ id: userId }); + if (!user) { + throw new NotFoundException(`User with ID ${userId} not found.`); + } + + // Normalize date strings into Date objects if provided + const assignData: Partial = { ...dto } as Partial; + if (dto.birthDate) { + assignData.birthDate = new Date(dto.birthDate); + } + if (dto.marriageDate) { + assignData.marriageDate = new Date(dto.marriageDate); + } + // get restuarant + this.em.assign(user, assignData); + await this.em.flush(); + + return user; + } + + async findAll(restId: string, dto: FindUsersDto): Promise> { + const { page = 1, limit = 10, search, orderBy = 'createdAt', order = 'desc' } = dto; + + // 1. Calculate pagination + const offset = (page - 1) * limit; + + // 2. Build the 'where' filter query + const where: FilterQuery = { + orders: { + restaurant: { + id: restId, + }, + }, + }; + + // 4. Add 'search' logic (case-insensitive) + if (search) { + const searchPattern = `%${search}%`; + const normalizedSearch = normalizePhone(search); + const normalizedSearchPattern = `%${normalizedSearch}%`; + // $ilike is case-insensitive (PostgreSQL). Use $like for MySQL (often CI by default) + // Search with both original and normalized phone patterns to handle various input formats + where.$or = [ + { firstName: { $ilike: searchPattern } }, + { lastName: { $ilike: searchPattern } }, + { phone: { $ilike: searchPattern } }, + ...(normalizedSearch !== search ? [{ phone: { $ilike: normalizedSearchPattern } }] : []), + ]; + } + + // 5. Execute the query using findAndCount + const [users, total] = await this.userRepository.findAndCount(where, { + limit, + offset, + orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' }, + }); + + // 6. Calculate total pages + const totalPages = Math.ceil(total / limit); + + // 7. Return the paginated result + return { + data: users, + meta: { + total, + page, + limit, + totalPages, + }, + }; + } + + async getUserAddresses(userId: string): Promise { + const user = await this.userRepository.findOne({ id: userId }, { populate: ['addresses'] }); + if (!user) { + throw new NotFoundException(`User with ID ${userId} not found.`); + } + + // Load addresses if not already loaded + await user.addresses.loadItems(); + return user.addresses.getItems(); + } + + async createUserAddress(userId: string, dto: CreateUserAddressDto): Promise { + const user = await this.userRepository.findOne({ id: userId }); + if (!user) { + throw new NotFoundException(`User with ID ${userId} not found.`); + } + + // If setting as default, unset other default addresses + if (dto.isDefault) { + const existingAddresses = await this.em.find(UserAddress, { user: { id: userId }, isDefault: true }); + for (const address of existingAddresses) { + address.isDefault = false; + } + await this.em.flush(); + } + + // Create new address + const address = this.em.create(UserAddress, { + user, + title: dto.title, + address: dto.address, + city: dto.city, + province: dto.province, + postalCode: dto.postalCode, + latitude: dto.latitude, + longitude: dto.longitude, + phone: dto.phone, + isDefault: dto.isDefault ?? false, + }); + + await this.em.persistAndFlush(address); + return address; + } + + async getUserAddress(userId: string, addressId: string): Promise { + const address = await this.em.findOne(UserAddress, { + id: addressId, + user: { id: userId }, + }); + + if (!address) { + throw new NotFoundException(`Address with ID ${addressId} not found for user ${userId}.`); + } + + return address; + } + + async updateUserAddress(userId: string, addressId: string, dto: UpdateUserAddressDto): Promise { + const address = await this.em.findOne(UserAddress, { + id: addressId, + user: { id: userId }, + }); + + if (!address) { + throw new NotFoundException(`Address with ID ${addressId} not found for user ${userId}.`); + } + + // If setting as default, unset other default addresses + if (dto.isDefault === true) { + const existingAddresses = await this.em.find(UserAddress, { + user: { id: userId }, + isDefault: true, + id: { $ne: addressId }, + }); + for (const existingAddress of existingAddresses) { + existingAddress.isDefault = false; + } + await this.em.flush(); + } + + // Update address fields + this.em.assign(address, dto); + await this.em.flush(); + + return address; + } + + async deleteUserAddress(userId: string, addressId: string): Promise { + const address = await this.em.findOne(UserAddress, { + id: addressId, + user: { id: userId }, + }); + + if (!address) { + throw new NotFoundException(`Address with ID ${addressId} not found for user ${userId}.`); + } + + // Soft delete the address + address.deletedAt = new Date(); + await this.em.persistAndFlush(address); + } + + async setDefaultAddress(userId: string, addressId: string): Promise { + const address = await this.em.findOne(UserAddress, { + id: addressId, + user: { id: userId }, + }); + + if (!address) { + throw new NotFoundException(`Address with ID ${addressId} not found for user ${userId}.`); + } + + // Unset all other default addresses + const existingAddresses = await this.em.find(UserAddress, { + user: { id: userId }, + isDefault: true, + id: { $ne: addressId }, + }); + for (const existingAddress of existingAddresses) { + existingAddress.isDefault = false; + } + + // Set this address as default + address.isDefault = true; + await this.em.flush(); + + return address; + } + + async convertScoreToWallet(userId: string, restId: string) { + return this.em.transactional(async em => { + const user = await em.findOne(User, { id: userId }); + if (!user) { + throw new NotFoundException(`User with ID ${userId} not found.`); + } + const restaurant = await em.findOne(Restaurant, { id: restId }); + if (!restaurant) { + throw new NotFoundException(`Restaurant with ID ${restId} not found.`); + } + let walletTransaction = await em.findOne(WalletTransaction, { user: { id: userId }, restaurant: { id: restId } }, + { orderBy: { createdAt: 'DESC' } }); + + if (!walletTransaction) { + walletTransaction = em.create(WalletTransaction, + { + user: user, + restaurant, + balance: 0, + amount: 0, + type: WalletTransactionType.CREDIT, + reason: WalletTransactionReason.DEPOSIT + }); + await em.persistAndFlush(walletTransaction); + } + // Determine how many points to convert + const pointsToConvert = walletTransaction.balance; + + // Validate points to convert + if (pointsToConvert <= 0) { + throw new BadRequestException('Points to convert must be greater than 0.'); + } + + if (!restaurant.score) { + throw new BadRequestException('Restaurant score not found.'); + } + if (!restaurant.score.purchaseScore) { + throw new BadRequestException('Restaurant purchase score not found.'); + } + if (!restaurant.score.purchaseAmount) { + throw new BadRequestException('Restaurant purchase amount not found.'); + } + const walletIncreaseAmount = + (Number(pointsToConvert) * Number(restaurant.score.purchaseAmount)) / Number(restaurant.score.purchaseScore); + // Convert points to wallet (1:1 ratio - can be made configurable) + + const newWalletTransaction = em.create(WalletTransaction, { + user: user, + restaurant: restaurant, + amount: walletIncreaseAmount, + type: WalletTransactionType.CREDIT, + reason: WalletTransactionReason.CONVERT_SCORE_TO_WALLET, + balance: walletTransaction.balance + walletIncreaseAmount, + }); + // Update user's wallet and points + walletTransaction.balance = walletTransaction.balance + walletIncreaseAmount; + em.persist([newWalletTransaction]); + + await em.flush(); + + return user; + }); + } + + getUserWallet(userId: string, restId: string): Promise { + return this.walletTransactionRepository.findOne({ user: { id: userId }, restaurant: { id: restId } }, + { orderBy: { createdAt: 'DESC' } }); + } + + getUserWalletTransactions(userId: string, restId: string, dto: FindWalletTransactionsDto) { + return this.walletService.getUserWalletTransactions(userId, restId, dto); + } + + async createWalletTransaction(userId: string, restId: string, dto: CreateWalletTransactionDto) { + return this.em.transactional(async em => { + return this.walletService.createTransaction(em, userId, restId, dto); + }); + } + +} diff --git a/src/modules/users/providers/wallet.service.ts b/src/modules/users/providers/wallet.service.ts new file mode 100644 index 0000000..57da157 --- /dev/null +++ b/src/modules/users/providers/wallet.service.ts @@ -0,0 +1,183 @@ +import { Injectable, NotFoundException, BadRequestException } from '@nestjs/common'; +import { FilterQuery } from '@mikro-orm/core'; +import { EntityManager } from '@mikro-orm/postgresql'; +import { WalletTransaction } from '../entities/wallet-transaction.entity'; +import { WalletTransactionRepository } from '../repositories/wallet-transaction.repository'; +import { FindWalletTransactionsDto } from '../dto/find-wallet-transactions.dto'; +import { CreateWalletTransactionDto } from '../dto/create-wallet-transaction.dto'; +import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; +import { WalletTransactionType } from '../interface/wallet'; +import { PointTransactionRepository } from '../repositories/point-transaction.repository'; + +@Injectable() +export class WalletService { + constructor( + private readonly walletTransactionRepository: WalletTransactionRepository, + private readonly pointTransactionRepository: PointTransactionRepository, + ) {} + + async getUserWalletTransactions( + userId: string, + restId: string, + dto: FindWalletTransactionsDto, + ): Promise> { + const { + page = 1, + limit = 10, + type, + reason, + startDate, + endDate, + minAmount, + maxAmount, + orderBy = 'createdAt', + order = 'desc', + } = dto; + + // Calculate pagination + const offset = (page - 1) * limit; + + // Find the user's wallet for this restaurant + const walletTransaction = await this.walletTransactionRepository.findOne({ + user: { id: userId }, + restaurant: { id: restId }, + }); + + if (!walletTransaction) { + throw new NotFoundException(`User wallet not found for user ${userId} and restaurant ${restId}.`); + } + + // Build the 'where' filter query + const where: FilterQuery = { + user: { id: userId }, + restaurant: { id: restId }, + }; + + // Add type filter + if (type) { + where.type = type; + } + + // Add reason filter + if (reason) { + where.reason = reason; + } + + // Add date range filters + if (startDate || endDate) { + where.createdAt = {}; + if (startDate) { + where.createdAt.$gte = new Date(startDate); + } + if (endDate) { + where.createdAt.$lte = new Date(endDate); + } + } + + // Add amount range filters + if (minAmount !== undefined || maxAmount !== undefined) { + where.amount = {}; + if (minAmount !== undefined) { + where.amount.$gte = minAmount; + } + if (maxAmount !== undefined) { + where.amount.$lte = maxAmount; + } + } + + // Execute the query using findAndCount + const [transactions, total] = await this.walletTransactionRepository.findAndCount(where, { + limit, + offset, + orderBy: { [orderBy]: order.toLowerCase() as 'asc' | 'desc' }, + }); + + // Calculate total pages + const totalPages = Math.ceil(total / limit); + + // Return the paginated result + return { + data: transactions, + meta: { + total, + page, + limit, + totalPages, + }, + }; + } + + getUserWallet(userId: string, restId: string): Promise { + return this.walletTransactionRepository.findOne( + { + user: { id: userId }, + restaurant: { id: restId }, + }, + { orderBy: { createdAt: 'DESC' } }, + ); + } + + async createTransaction( + em: EntityManager, + userId: string, + restId: string, + dto: CreateWalletTransactionDto, + ): Promise { + const { amount, type, reason } = dto; + + // Validate amount + if (amount <= 0) { + throw new BadRequestException('Transaction amount must be greater than 0.'); + } + + // Find the user's wallet for this restaurant + const walletTransaction = await em.findOne(WalletTransaction, { + user: { id: userId }, + restaurant: { id: restId }, + }); + + if (!walletTransaction) { + throw new NotFoundException(`User wallet not found for user ${userId} and restaurant ${restId}.`); + } + + // Calculate new balance + const currentBalance = walletTransaction.balance || 0; + let newBalance: number; + + if (type === WalletTransactionType.CREDIT) { + newBalance = currentBalance + amount; + } else if (type === WalletTransactionType.DEBIT) { + if (currentBalance < amount) { + throw new BadRequestException(`Insufficient wallet balance. Current: ${currentBalance}, Required: ${amount}.`); + } + newBalance = currentBalance - amount; + } else { + throw new BadRequestException(`Invalid transaction type: ${type}`); + } + + // Update wallet balance + walletTransaction.balance = newBalance; + await em.persistAndFlush(walletTransaction); + + // Create transaction record + const transaction = em.create(WalletTransaction, { + user: walletTransaction.user, + restaurant: walletTransaction.restaurant, + amount, + type, + reason, + balance: newBalance, + }); + await em.persistAndFlush([walletTransaction, transaction]); + return transaction; + } + + async getUserCurrentWalletBalance(userId: string, restuarantId: string) { + const balance = await this.walletTransactionRepository.getCurrentWalletBalance(userId, restuarantId); + return { balance }; + } + async getUserCurrentPoinrBalance(userId: string, restuarantId: string) { + const balance = await this.pointTransactionRepository.getcurrentPointBalance(userId, restuarantId); + return { balance }; + } +} diff --git a/src/modules/users/repositories/point-transaction.repository.ts b/src/modules/users/repositories/point-transaction.repository.ts new file mode 100644 index 0000000..bbdaa66 --- /dev/null +++ b/src/modules/users/repositories/point-transaction.repository.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { PointTransaction } from '../entities/point-transaction.entity'; + +@Injectable() +export class PointTransactionRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, PointTransaction); + } + async getcurrentPointBalance(userId: string, restaurantId: string): Promise { + const pointTransaction = await this.em.findOne(PointTransaction, { + user: { id: userId }, + restaurant: { id: restaurantId }, + }); + return pointTransaction?.balance || 0; + } +} diff --git a/src/modules/users/repositories/user.repository.ts b/src/modules/users/repositories/user.repository.ts new file mode 100644 index 0000000..07516dc --- /dev/null +++ b/src/modules/users/repositories/user.repository.ts @@ -0,0 +1,10 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { User } from '../entities/user.entity'; + +@Injectable() +export class UserRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, User); + } +} diff --git a/src/modules/users/repositories/wallet-transaction.repository.ts b/src/modules/users/repositories/wallet-transaction.repository.ts new file mode 100644 index 0000000..a127509 --- /dev/null +++ b/src/modules/users/repositories/wallet-transaction.repository.ts @@ -0,0 +1,21 @@ +import { Injectable } from '@nestjs/common'; +import { EntityManager, EntityRepository } from '@mikro-orm/postgresql'; +import { WalletTransaction } from '../entities/wallet-transaction.entity'; + +@Injectable() +export class WalletTransactionRepository extends EntityRepository { + constructor(readonly em: EntityManager) { + super(em, WalletTransaction); + } + async getCurrentWalletBalance(userId: string, restaurantId: string): Promise { + const walletTransaction = await this.em.findOne( + WalletTransaction, + { + user: { id: userId }, + restaurant: { id: restaurantId }, + }, + { orderBy: { createdAt: 'desc' } }, + ); + return walletTransaction?.balance || 0; + } +} diff --git a/src/modules/users/user.module.ts b/src/modules/users/user.module.ts new file mode 100644 index 0000000..61a74d1 --- /dev/null +++ b/src/modules/users/user.module.ts @@ -0,0 +1,26 @@ +import { Module } from '@nestjs/common'; +import { UserService } from './providers/user.service'; +import { UsersController } from './controllers/users.controller'; +import { MikroOrmModule } from '@mikro-orm/nestjs'; +import { User } from './entities/user.entity'; +import { UserAddress } from './entities/user-address.entity'; +import { JwtModule } from '@nestjs/jwt'; +import { UserRepository } from './repositories/user.repository'; +import { RestaurantsModule } from '../restaurants/restaurants.module'; +import { WalletTransactionRepository } from './repositories/wallet-transaction.repository'; +import { WalletService } from './providers/wallet.service'; +import { WalletTransaction } from './entities/wallet-transaction.entity'; +import { PointTransaction } from './entities/point-transaction.entity'; +import { PointTransactionRepository } from './repositories/point-transaction.repository'; + +@Module({ + providers: [UserService, WalletService, UserRepository, WalletTransactionRepository, PointTransactionRepository], + controllers: [UsersController], + imports: [ + MikroOrmModule.forFeature([User, UserAddress, WalletTransaction, PointTransaction]), + JwtModule, + RestaurantsModule, + ], + exports: [UserService, WalletService, UserRepository, WalletTransactionRepository, PointTransactionRepository], +}) +export class UserModule {} diff --git a/src/modules/utils/cache.service.ts b/src/modules/utils/cache.service.ts new file mode 100755 index 0000000..b9e7a32 --- /dev/null +++ b/src/modules/utils/cache.service.ts @@ -0,0 +1,52 @@ +import { CACHE_MANAGER, Cache } from '@nestjs/cache-manager'; +import { Inject, Injectable, Logger, OnModuleInit } from '@nestjs/common'; + +@Injectable() +export class CacheService implements OnModuleInit { + private readonly logger = new Logger(CacheService.name); + + constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {} + + async onModuleInit() { +; + this.logger.log(`Active Cache Store: ${JSON.stringify(this.cacheManager as any)}`); + + // Should log 'Keyv' or 'KeyvRedis'. If it says 'Memory', the config is still wrong. + this.logger.log('Pinging Redis to check connection...'); + try { + await this.set('ping', 'pong', 10); // TTL in seconds + const result = await this.get('ping'); + + if (result === 'pong') { + this.logger.log('✅ Redis connection successful (set/get test passed).'); + } else { + this.logger.error(`❌ Redis connection test failed. Expected 'pong', got '${result}'.`); + } + + await this.del('ping'); + } catch (error: any) { + this.logger.error('❌ Failed to connect to Redis during ping test:', error.message); + } + } + + /** Get value from cache */ + async get(key: string): Promise { + return await this.cacheManager.get(key); + } + + /** Set value in cache with TTL in seconds */ + async set(key: string, value: any, ttlSeconds: number) { + // cache-manager expects TTL in seconds + await this.cacheManager.set(key, value, ttlSeconds * 1000); + } + + /** Delete a key from cache */ + async del(key: string) { + await this.cacheManager.del(key); + } + + /** Get remaining TTL in seconds */ + async getTtl(key: string): Promise { + return await this.cacheManager.ttl(key); + } +} diff --git a/src/modules/utils/phone.util.ts b/src/modules/utils/phone.util.ts new file mode 100644 index 0000000..d659e29 --- /dev/null +++ b/src/modules/utils/phone.util.ts @@ -0,0 +1,30 @@ +/** + * Normalizes Iranian phone numbers to a standard format: 9120000001 + * Removes +98 prefix, leading 0, and any spaces/dashes + * @param phone - The phone number to normalize + * @returns Normalized phone number (e.g., 9120000001) + */ +export function normalizePhone(phone: string): string { + if (!phone) { + return phone; + } + + // Remove all spaces, dashes, and parentheses + let normalized = phone.replace(/[\s\-\(\)]/g, ''); + + // Remove +98 prefix (Iran country code) + if (normalized.startsWith('+98')) { + normalized = normalized.substring(3); + } else if (normalized.startsWith('0098')) { + normalized = normalized.substring(4); + } else if (normalized.startsWith('98')) { + normalized = normalized.substring(2); + } + + // Remove leading 0 + if (normalized.startsWith('0')) { + normalized = normalized.substring(1); + } + + return normalized; +} diff --git a/src/modules/utils/sanitize.util.ts b/src/modules/utils/sanitize.util.ts new file mode 100644 index 0000000..bb5a7d1 --- /dev/null +++ b/src/modules/utils/sanitize.util.ts @@ -0,0 +1,20 @@ +import sanitizeHtml from 'sanitize-html'; + +/** + * Sanitizes user input to prevent XSS attacks and remove malicious content + * Allows only safe text content, removing all HTML tags and scripts + * @param input - The string to sanitize + * @returns Sanitized string with all HTML tags and scripts removed + */ +export function sanitizeText(input: string | undefined | null): string | undefined | null { + if (!input) { + return input; + } + + return sanitizeHtml(input, { + allowedTags: [], // No HTML tags allowed + allowedAttributes: {}, // No attributes allowed + allowedSchemes: [], // No URL schemes allowed + }).trim(); +} + diff --git a/src/modules/utils/utils.module.ts b/src/modules/utils/utils.module.ts new file mode 100644 index 0000000..2f7cef5 --- /dev/null +++ b/src/modules/utils/utils.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { CacheService } from './cache.service'; + + +@Module({ + imports: [], + controllers: [], + providers: [CacheService, ], + exports: [CacheService], +}) +export class UtilsModule {} diff --git a/src/seeders/DatabaseSeeder.ts b/src/seeders/DatabaseSeeder.ts new file mode 100644 index 0000000..dc3442a --- /dev/null +++ b/src/seeders/DatabaseSeeder.ts @@ -0,0 +1,117 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Seeder } from '@mikro-orm/seeder'; +import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import { PermissionsSeeder } from './permissions.seeder'; +import { RolesSeeder } from './roles.seeder'; +import { RestaurantsSeeder } from './restaurants.seeder'; +import { PaymentMethodsSeeder } from './payment-methods.seeder'; +import { DeliveryMethodsSeeder } from './delivery-methods.seeder'; +import { SchedulesSeeder } from './schedules.seeder'; +import { CategoriesSeeder } from './categories.seeder'; +import { FoodsSeeder } from './foods.seeder'; +import { AdminsSeeder } from './admins.seeder'; +import { UsersSeeder } from './users.seeder'; +import { CouponsSeeder } from './coupons.seeder'; +import { NotificationPreferencesSeeder } from './notification-preferences.seeder'; +import { UserWalletsSeeder } from './user-wallets.seeder'; +import { InventorySeeder } from './inventory.seeder'; +// import { NotificationsSeeder } from './notifications.seeder'; + +export class DatabaseSeeder extends Seeder { + async run(em: EntityManager) { + const TOTAL_STEPS = 15; + console.info('[Seeder] Starting database seed'); + // 1. Create Permissions + console.info(`[Seeder] Step 1/${TOTAL_STEPS}: Creating permissions`); + const permissionsSeeder = new PermissionsSeeder(); + const permissions = await permissionsSeeder.run(em); + console.info(`[Seeder] Step 1/${TOTAL_STEPS}: Done`); + + // 2. Create Roles + console.info(`[Seeder] Step 2/${TOTAL_STEPS}: Creating roles`); + const rolesSeeder = new RolesSeeder(); + const rolesMap = await rolesSeeder.run(em, permissions); + console.info(`[Seeder] Step 2/${TOTAL_STEPS}: Done`); + + // 3. Create Restaurants + console.info(`[Seeder] Step 3/${TOTAL_STEPS}: Creating restaurants`); + const restaurantsSeeder = new RestaurantsSeeder(); + const restaurantsMap = await restaurantsSeeder.run(em); + console.info(`[Seeder] Step 3/${TOTAL_STEPS}: Done`); + + // 4. Create Payment Methods for all Restaurants + console.info(`[Seeder] Step 4/${TOTAL_STEPS}: Creating payment methods`); + const allRestaurants = await em.find(Restaurant, {}); + const paymentMethodsSeeder = new PaymentMethodsSeeder(); + await paymentMethodsSeeder.run(em, allRestaurants); + console.info(`[Seeder] Step 4/${TOTAL_STEPS}: Done`); + + // 5. Create Delivery Methods for all Restaurants + console.info(`[Seeder] Step 5/${TOTAL_STEPS}: Creating delivery methods`); + const deliveryMethodsSeeder = new DeliveryMethodsSeeder(); + await deliveryMethodsSeeder.run(em, allRestaurants); + console.info(`[Seeder] Step 5/${TOTAL_STEPS}: Done`); + + // 6. Create Schedules for all Restaurants + console.info(`[Seeder] Step 6/${TOTAL_STEPS}: Creating schedules`); + const schedulesSeeder = new SchedulesSeeder(); + await schedulesSeeder.run(em, allRestaurants); + console.info(`[Seeder] Step 6/${TOTAL_STEPS}: Done`); + + // 7. Create Notification Preferences for all Restaurants + console.info(`[Seeder] Step 7/${TOTAL_STEPS}: Creating notification preferences`); + const notificationPreferencesSeeder = new NotificationPreferencesSeeder(); + await notificationPreferencesSeeder.run(em, allRestaurants); + console.info(`[Seeder] Step 7/${TOTAL_STEPS}: Done`); + + // 8. Create Categories + console.info(`[Seeder] Step 8/${TOTAL_STEPS}: Creating categories`); + const categoriesSeeder = new CategoriesSeeder(); + const categoriesMap = await categoriesSeeder.run(em, restaurantsMap); + console.info(`[Seeder] Step 8/${TOTAL_STEPS}: Done`); + + // 9. Create Foods + console.info(`[Seeder] Step 9/${TOTAL_STEPS}: Creating foods`); + const foodsSeeder = new FoodsSeeder(); + await foodsSeeder.run(em, restaurantsMap, categoriesMap); + console.info(`[Seeder] Step 9/${TOTAL_STEPS}: Done`); + + // 10. Create Inventory for all Foods + console.info(`[Seeder] Step 10/${TOTAL_STEPS}: Creating inventory`); + const inventorySeeder = new InventorySeeder(); + await inventorySeeder.run(em); + console.info(`[Seeder] Step 10/${TOTAL_STEPS}: Done`); + + // 11. Create Coupons + console.info(`[Seeder] Step 11/${TOTAL_STEPS}: Creating coupons`); + const couponsSeeder = new CouponsSeeder(); + await couponsSeeder.run(em, restaurantsMap); + console.info(`[Seeder] Step 11/${TOTAL_STEPS}: Done`); + + // 12. Create Admins + console.info(`[Seeder] Step 12/${TOTAL_STEPS}: Creating admins`); + const adminsSeeder = new AdminsSeeder(); + await adminsSeeder.run(em, rolesMap, restaurantsMap); + console.info(`[Seeder] Step 12/${TOTAL_STEPS}: Done`); + + // 13. Create Users + console.info(`[Seeder] Step 13/${TOTAL_STEPS}: Creating users`); + const usersSeeder = new UsersSeeder(); + await usersSeeder.run(em); + console.info(`[Seeder] Step 13/${TOTAL_STEPS}: Done`); + + // 14. Create User Wallets + console.info(`[Seeder] Step 14/${TOTAL_STEPS}: Creating user wallets`); + const userWalletsSeeder = new UserWalletsSeeder(); + await userWalletsSeeder.run(em); + console.info(`[Seeder] Step 14/${TOTAL_STEPS}: Done`); + + // 15. Create Notifications for admins and users for all restaurants + console.info(`[Seeder] Step 15/${TOTAL_STEPS}: (optional) creating notifications`); + // const notificationsSeeder = new NotificationsSeeder(); + // await notificationsSeeder.run(em); + console.info(`[Seeder] Step 15/${TOTAL_STEPS}: Done`); + + console.info('[Seeder] Database seed completed'); + } +} diff --git a/src/seeders/admins.seeder.ts b/src/seeders/admins.seeder.ts new file mode 100644 index 0000000..17699e1 --- /dev/null +++ b/src/seeders/admins.seeder.ts @@ -0,0 +1,42 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Admin } from '../modules/admin/entities/admin.entity'; +import { AdminRole } from '../modules/admin/entities/adminRole.entity'; +import type { Role } from '../modules/roles/entities/role.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import { adminsData } from './data/admins.data'; +import { normalizePhone } from '../modules/utils/phone.util'; + +export class AdminsSeeder { + async run(em: EntityManager, rolesMap: Map, restaurantsMap: Map): Promise { + for (const adminData of adminsData) { + const existingAdmin = await em.findOne(Admin, { phone: adminData.phone }); + if (existingAdmin) continue; + + const role = rolesMap.get(adminData.roleName); + if (!role) continue; + + const restaurant = adminData.restaurantSlug ? restaurantsMap.get(adminData.restaurantSlug) : null; + + // For restaurant role, restaurant is required + if (!restaurant) continue; + + const admin = em.create(Admin, { + phone: normalizePhone(adminData.phone), + firstName: adminData.firstName, + lastName: adminData.lastName, + }); + em.persist(admin); + + // Create AdminRole linking admin to role and restaurant + const adminRole = em.create(AdminRole, { + admin, + role, + restaurant: adminData.restaurantSlug ? restaurant : null, + }); + em.persist(adminRole); + admin.roles.add(adminRole); + } + + await em.flush(); + } +} diff --git a/src/seeders/categories.seeder.ts b/src/seeders/categories.seeder.ts new file mode 100644 index 0000000..53d3a32 --- /dev/null +++ b/src/seeders/categories.seeder.ts @@ -0,0 +1,395 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Category } from '../modules/foods/entities/category.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import { categoriesData } from './data/categories.data'; +import * as fs from 'fs'; +import * as path from 'path'; + +interface IconData { + index: number; + name: string; + url: string; +} + +export class CategoriesSeeder { + private icons: IconData[] = []; + private iconIndex = 0; + + private loadIcons(): void { + if (this.icons.length > 0) return; + + const iconsPath = path.join(process.cwd(), 'dump', 'named_icons.csv'); + const csvContent = fs.readFileSync(iconsPath, 'utf-8'); + const lines = csvContent.split('\n').slice(1); // Skip header + + this.icons = lines + .filter(line => line.trim()) + .map(line => { + const parts = line.split(','); + return { + index: parseInt(parts[0].replace(/"/g, '')), + name: parts[1].replace(/"/g, ''), + url: parts[2].replace(/"/g, '') + }; + }); + } + + private getIconForCategory(categoryTitle: string): string | undefined { + this.loadIcons(); + + if (this.icons.length === 0) return undefined; + + // Create a mapping of keywords to icon names + const iconMapping: Record = { + // Pizza + 'پیتزا': ['pizza'], + + // Pasta + 'پاستا': ['fast-food'], + + // Steak + 'استیک': ['meat', 'meat 2'], + + // Burger + 'برگر': ['hanburger'], + + // Salad + 'سالاد': ['broccoli'], + + // Appetizer/Appetizers + 'پیش غذا': ['chicken', 'fast-food'], + + // Main Course + 'غذای اصلی': ['hanburger', 'meat'], + 'خوراک': ['hanburger', 'meat'], + 'ناهار': ['hanburger', 'meat'], + + // Sandwich + 'ساندویچ': ['bread'], + + // Fried foods + 'سوخاری': ['chicken', 'fast-food'], + + // Cake/Dessert + 'کیک': ['cookie1', 'cookie2'], + 'دسر': ['cookie1', 'cookie2'], + + // Ice Cream + 'بستنی': ['ice cream', 'ice cream 3'], + 'آیس': ['ice cream'], + + // Breakfast + 'صبحانه': ['bread', 'egg'], + + // Drinks - general + 'نوشیدنی': ['drink', 'drink2', 'bottle1', 'bottle2'], + + // Coffee + 'قهوه': ['drink', 'drink2'], + 'اسپرسو': ['drink'], + 'کافی': ['drink'], + + // Tea + 'چای': ['drink', 'drink2'], + 'دمنوش': ['drink', 'drink2'], + + // Cocktail/Mocktail + 'ماکتل': ['wine glass', 'wine glass 2'], + 'موهیتو': ['wine glass'], + + // Shake/Smoothie + 'شیک': ['ice cream'], + 'اسموتی': ['ice cream'], + + // Juice + 'آبمیوه': ['juice', 'juice2', 'juice3'], + 'ویتامینه': ['juice', 'juice2', 'juice3'], + + // Hot Dog + 'هات داگ': ['hot dog'], + + // BBQ + 'باربیکیو': ['barbecue', 'barbeque2'], + + // BBQ Skewers + 'کباب': ['skewer'], + + // Soup + 'آش': ['jar', 'dish'], + + // Bread + 'نان': ['bread'], + + // Donut + 'دونات': ['donuts'], + + // Fish + 'دریایی': ['fish'], + 'ماهی': ['fish'], + + // Chicken + 'مرغ': ['chicken'], + + // Egg + 'تخم': ['egg', 'fried egg'], + + // Vegetable + 'سبزی': ['broccoli'], + + // Fruit + 'میوه': ['strawberry', 'cherry', 'grape', 'watermelon'], + + // Milk + 'شیر': ['bottle1'], // Note: there's no milk icon, using a generic one + + // Cookie + 'کوکی': ['cookie1', 'cookie2'], + + // French Fries + 'سیب زمینی': ['french fries'], + + // Fast Food + 'فست فود': ['fast-food'], + + // Bakery + 'نانوایی': ['bread'], + + // Ice Tea + 'آیس تی': ['drink', 'drink2'], + + // Hot Pot + 'حلیم': ['jar', 'dish'], + + // Taco + 'تاکو': ['taco'], + + // Nachos + 'ناچو': ['fast-food'], + + // Sushi + 'سوشی': ['fish'], + + // Dumpling + 'غالوش': ['basket'], + + // Tempura + 'تمپورا': ['fish'], + + // Tofu + 'توفو': ['jar'], + + // Bibimbap + 'بیبیمباب': ['fast-food'], + + // Boba + 'بوبا': ['drink', 'drink2'], + + // Fish and Chips + 'فیش اند چیپس': ['fish', 'french fries'], + + // Focaccia + 'فوکاچیا': ['bread'], + + // Martini + 'مارتینی': ['wine glass'], + + // Mochi + 'موچی': ['donuts'], + + // Pancake + 'پن کیک': ['bread'], + + // Quesadilla + 'کوئزادیا': ['quesadilla'], + + // Origami + 'اوريگامي': ['basket'], + + // Pudding + 'پودینگ': ['jar'], + + // Sweet + 'شیرین': ['candy'], + + // Crossant + 'کروسان': ['bread'], + + // Bio + 'بیو': ['broccoli'], + + // Lemon + 'لیمو': ['lemon'], + + // Candy + 'شیرینی': ['candy'], + + // Lollipop + 'آب نبات': ['lollipop'], + + // Cherry + 'گیلاس': ['cherry'], + + // Strawberry + 'توت فرنگی': ['strawberry'], + + // Watermelon + 'هندوانه': ['watermelon'], + + // Avocado + 'آووکادو': ['avocado'], + + // Banana + 'موز': ['banana'], + + // Carrot + 'هویج': ['carrot'], + + // Cheese + 'پنیر': ['cheese', 'cheese2'], + + // Tomato + 'گوجه': ['tomato'], // Note: no tomato icon + + // Onion + 'پیاز': ['onion'], + + // Olive + 'زیتون': ['olive'], + + // Nuts + 'آجیل': ['nuts'], + + // Scales (for weighing) + 'ترازو': ['scales'], + + // Whisk + 'همزن': ['whisk', 'whisk'], + + // Mortar + 'هاون': ['mortar'], + + // Rolling pin + 'والت': ['rolling pin'], + + // Knife + 'چاقو': ['knife'], + + // Baby food + 'کودک': ['baby bottle', 'baby bottle', 'baby pacifier'], + + // Hat (chef hat) + 'کلاه': ['hat robe', 'hat robe 2'], + + + + // Candle (birthday) + 'شمع': ['candle'], + + // Fire + 'آتش': ['fire'], + + // Refrigerator + 'یخچال': ['refrigerator'], + + // Kitchen stove + 'اجاق': ['kitchen stove'], + + // Mixer + 'میکسر': ['mixer'], + + // Jar + 'شیشه': ['jar'], + + // Jelly + 'ژله': ['jelly'], + + // Soap + 'صابون': ['soap'], + + // Dish + 'ظرف': ['dish'], + + // Basket + 'سبد': ['basket'], + + // Salt + 'نمک': ['solt'], + + // Eggplant + 'بادمجان': ['egg plant'], + + // Wine + 'شراب': ['wine glass', 'wine glass 2', 'wine glass 3'], + + // Plate + 'بشقاب': ['dish'], + + // Fork and knife + 'چنگال': ['spoon and fork 1', 'spoon and fork 2', 'spoon and knife', 'fork and knife'], + + // Toast + 'تست': ['toast'] + }; + + // Find matching icon based on category title + for (const [keyword, iconNames] of Object.entries(iconMapping)) { + if (categoryTitle.includes(keyword)) { + // Find the first available icon from the list + for (const iconName of iconNames) { + const icon = this.icons.find(i => i.name.toLowerCase() === iconName.toLowerCase()); + if (icon) { + return icon.url; + } + } + } + } + + // Fallback: try to find any icon that might be related by partial name match + for (const icon of this.icons) { + const lowerTitle = categoryTitle.toLowerCase(); + const lowerIconName = icon.name.toLowerCase(); + + // Check if any word in the category title matches part of the icon name + const titleWords = lowerTitle.split(/\s+/); + for (const word of titleWords) { + if (word.length > 2 && lowerIconName.includes(word)) { + return icon.url; + } + } + } + + // Final fallback: return a random icon + const randomIndex = Math.floor(Math.random() * this.icons.length); + return this.icons[randomIndex]?.url; + } + async run(em: EntityManager, restaurantsMap: Map): Promise> { + const categoriesMap = new Map(); + + for (const catData of categoriesData) { + const restaurant = restaurantsMap.get(catData.restaurantSlug); + if (!restaurant) continue; + + const existing = await em.findOne(Category, { + title: catData.title, + restaurant, + }); + + if (!existing) { + const avatarUrl = this.getIconForCategory(catData.title); + const category = em.create(Category, { + title: catData.title, + restaurant, + isActive: true, + avatarUrl, + }); + em.persist(category); + categoriesMap.set(`${catData.restaurantSlug}-${catData.title}`, category); + } else { + categoriesMap.set(`${catData.restaurantSlug}-${catData.title}`, existing); + } + } + + await em.flush(); + return categoriesMap; + } +} diff --git a/src/seeders/coupons.seeder.ts b/src/seeders/coupons.seeder.ts new file mode 100644 index 0000000..024d01b --- /dev/null +++ b/src/seeders/coupons.seeder.ts @@ -0,0 +1,42 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Coupon } from '../modules/coupons/entities/coupon.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import { couponsData } from './data/coupons.data'; + +export class CouponsSeeder { + async run(em: EntityManager, restaurantsMap: Map): Promise { + for (const couponData of couponsData) { + const restaurant = restaurantsMap.get(couponData.restaurantSlug); + + if (!restaurant) continue; + + const existing = await em.findOne(Coupon, { + code: couponData.code, + restaurant: { id: restaurant.id }, + }); + + if (!existing) { + const coupon = em.create(Coupon, { + restaurant, + code: couponData.code, + name: couponData.name, + description: couponData.description, + type: couponData.type, + value: couponData.value, + maxDiscount: couponData.maxDiscount, + minOrderAmount: couponData.minOrderAmount, + maxUses: couponData.maxUses, + maxUsesPerUser: couponData.maxUsesPerUser, + startDate: couponData.startDate ? new Date(couponData.startDate) : undefined, + endDate: couponData.endDate ? new Date(couponData.endDate) : undefined, + isActive: couponData.isActive, + usedCount: 0, + }); + + em.persist(coupon); + } + } + + await em.flush(); + } +} diff --git a/src/seeders/data/admins.data.ts b/src/seeders/data/admins.data.ts new file mode 100644 index 0000000..046d332 --- /dev/null +++ b/src/seeders/data/admins.data.ts @@ -0,0 +1,38 @@ +export interface AdminData { + phone: string; + firstName: string; + lastName: string; + roleName: string; + restaurantSlug: string | null; +} + +export const adminsData: AdminData[] = [ + { + phone: '09362532122', + firstName: 'مرتضی', + lastName: 'مرتضایی', + roleName: 'مدیر ( پلن ویژه)', + restaurantSlug: 'boote', + }, + { + phone: '09185290775', + firstName: 'حمید', + lastName: 'ضرقامی', + roleName: 'مدیر ( پلن ویژه)', + restaurantSlug: 'boote', + }, + { + phone: '09129283395', + firstName: 'مهرداد', + lastName: 'مظفری', + roleName: 'مدیر ( پلن ویژه)', + restaurantSlug: 'boote', + }, + { + phone: '09184317567', + firstName: 'ادمین', + lastName: 'هنر', + roleName: 'مدیر ( پلن ویژه)', + restaurantSlug: 'boote', + }, +]; diff --git a/src/seeders/data/categories.data.ts b/src/seeders/data/categories.data.ts new file mode 100644 index 0000000..b75cdab --- /dev/null +++ b/src/seeders/data/categories.data.ts @@ -0,0 +1,430 @@ +export interface CategoryData { + title: string; + restaurantSlug: string; +} + +export const categoriesData: CategoryData[] = [ { title: 'پاستا', restaurantSlug: 'zhivan' }, + { title: 'پیتزا ایتالیایی', restaurantSlug: 'zhivan' }, + { title: 'پیتزا امریکایی', restaurantSlug: 'zhivan' }, + { title: 'استیک', restaurantSlug: 'zhivan' }, + { title: 'غذاهای گریل و فرنگی', restaurantSlug: 'zhivan' }, + { title: 'ساندویچ و برگر', restaurantSlug: 'zhivan' }, + { title: 'سوخاری', restaurantSlug: 'zhivan' }, + { title: 'سالاد', restaurantSlug: 'zhivan' }, + { title: 'پیش غذا', restaurantSlug: 'zhivan' }, + { title: 'نوشیدنی ها', restaurantSlug: 'zhivan' }, + { title: 'قهوه ', restaurantSlug: 'zhivan' }, + { title: 'موهیتو بار', restaurantSlug: 'zhivan' }, + { title: 'اسموتی و شیک ها ', restaurantSlug: 'zhivan' }, + { title: 'کیک و دسر', restaurantSlug: 'zhivan' }, + { title: 'چای و دمنوش ', restaurantSlug: 'zhivan' }, + { title: 'آیس کافی', restaurantSlug: 'zhivan' }, + { title: 'ایرانی', restaurantSlug: 'zhivan' }, + { title: 'شربت و عرقیجات', restaurantSlug: 'zhivan' }, + { title: 'ماکتیل', restaurantSlug: 'zhivan' }, + { title: 'نوشیدنی های گرم', restaurantSlug: 'sepanta' }, + { title: 'شیک ها', restaurantSlug: 'sepanta' }, + { title: 'کیک ها', restaurantSlug: 'sepanta' }, + { title: 'شربت ها ', restaurantSlug: 'sepanta' }, + { title: 'دمنوش ها', restaurantSlug: 'sepanta' }, + { title: 'صبحانه', restaurantSlug: 'ocafe' }, + { title: 'سیب زمینی ها', restaurantSlug: 'ocafe' }, + { title: 'پیش غذا و سالادها ', restaurantSlug: 'ocafe' }, + { title: 'غذاهای اصلی ', restaurantSlug: 'ocafe' }, + { title: 'کوکی و دسرها (آیتم ها به تعداد محدود در روز موجود می‌باشد )', restaurantSlug: 'ocafe' }, + { title: 'موکتل های ایرانی و ملل ', restaurantSlug: 'ocafe' }, + { title: 'شیک ها ', restaurantSlug: 'ocafe' }, + { title: 'نوشیدنی های گرم بر پایه اسپرسو ', restaurantSlug: 'ocafe' }, + { title: 'نوشیدنی های سرد بر پایه اسپرسو ', restaurantSlug: 'ocafe' }, + { title: 'نوشیدنی های گرم ملل ', restaurantSlug: 'ocafe' }, + { title: 'چای های ایرانی ', restaurantSlug: 'ocafe' }, + { title: 'دمنوش ها ', restaurantSlug: 'ocafe' }, + { title: 'قهوه های شنی ', restaurantSlug: 'ocafe' }, + { title: 'کلد برو ', restaurantSlug: 'ocafe' }, + { title: 'متدهای موج سوم', restaurantSlug: 'ocafe' }, + { title: 'آپشنال ', restaurantSlug: 'ocafe' }, + { title: 'نوشیدنی', restaurantSlug: 'ocafe' }, + { title: 'لقمه', restaurantSlug: 'ocafe' }, + { title: 'خوراک ها', restaurantSlug: 'easydizy' }, + { title: 'چاشنی ها', restaurantSlug: 'easydizy' }, + { title: 'نوشیدنی های خنک', restaurantSlug: 'easydizy' }, + { title: 'دسر ها', restaurantSlug: 'easydizy' }, + { title: 'پیش غذا ', restaurantSlug: 'boote' }, + { title: 'پیتزا آمریکایی', restaurantSlug: 'boote' }, + { title: 'پیتزا ایتالیایی ', restaurantSlug: 'boote' }, + { title: 'پاستا ', restaurantSlug: 'boote' }, + { title: 'ناهار بوته', restaurantSlug: 'boote' }, + { title: 'غذای اصلی', restaurantSlug: 'boote' }, + { title: 'ساندویچ', restaurantSlug: 'boote' }, + { title: 'اسپرسو بار', restaurantSlug: 'boote' }, + { title: 'دمی بار', restaurantSlug: 'boote' }, + { title: 'هاوس آف تی', restaurantSlug: 'boote' }, + { title: 'امریکن استایل', restaurantSlug: 'boote' }, + { title: 'کیک و دسر', restaurantSlug: 'boote' }, + { title: 'آیس کافی', restaurantSlug: 'boote' }, + { title: 'ماکتل بار', restaurantSlug: 'boote' }, + { title: 'ژلاتو میلک شیک', restaurantSlug: 'boote' }, + { title: 'صبحانه', restaurantSlug: 'boote' }, + { title: 'اسموتی بار', restaurantSlug: 'boote' }, + { title: 'چاکلت بار', restaurantSlug: 'boote' }, + { title: 'نوشیدنی های گرم ', restaurantSlug: 'life' }, + { title: 'نوشیدنی های سرد ', restaurantSlug: 'life' }, + { title: 'صبحانه ', restaurantSlug: 'life' }, + { title: 'میان وعده', restaurantSlug: 'life' }, + { title: 'بستنی', restaurantSlug: 'life' }, + { title: 'شیک', restaurantSlug: 'life' }, + { title: 'قلیان', restaurantSlug: 'life' }, + { title: 'پیتزا ایتالیایی ', restaurantSlug: 'foodcourt' }, + { title: 'پیتزا آمریکایی ', restaurantSlug: 'foodcourt' }, + { title: 'پاستاها', restaurantSlug: 'foodcourt' }, + { title: 'استیک ها', restaurantSlug: 'foodcourt' }, + { title: 'برگرها', restaurantSlug: 'foodcourt' }, + { title: 'ایرانی', restaurantSlug: 'foodcourt' }, + { title: 'سالاد.', restaurantSlug: 'foodcourt' }, + { title: 'پیش غذا.', restaurantSlug: 'foodcourt' }, + { title: 'نوشیدنی ها ', restaurantSlug: 'foodcourt' }, + { title: 'کیک و دسر', restaurantSlug: 'foodcourt' }, + { title: 'اسپرسو بار', restaurantSlug: 'foodcourt' }, + { title: 'نوشیدنی های گرم', restaurantSlug: 'foodcourt' }, + { title: 'چای و دمنوش', restaurantSlug: 'foodcourt' }, + { title: 'آیس کافه', restaurantSlug: 'foodcourt' }, + { title: 'میلک شیک', restaurantSlug: 'foodcourt' }, + { title: 'نوشیدی های سرد', restaurantSlug: 'foodcourt' }, + { title: 'قهوه های دمی.', restaurantSlug: 'foodcourt' }, + { title: 'گلاسه ها', restaurantSlug: 'foodcourt' }, + { title: 'صبحانه ', restaurantSlug: 'foodcourt' }, + { title: ' پیش غذا', restaurantSlug: 'banicho' }, + { title: 'کباب ها ', restaurantSlug: 'banicho' }, + { title: 'دمنوش', restaurantSlug: 'banicho' }, + { title: 'قهوه های دمی', restaurantSlug: 'banicho' }, + { title: 'جگر گوسفندی', restaurantSlug: 'banicho' }, + { title: 'جگر گوساله', restaurantSlug: 'banicho' }, + { title: 'بارسرد ', restaurantSlug: 'banicho' }, + { title: 'بارگرم', restaurantSlug: 'banicho' }, + { title: 'نوشیدنی گرم بر پایه اسپرسو', restaurantSlug: 'blacksugar' }, + { title: ' نوشیدنی گرم ', restaurantSlug: 'blacksugar' }, + { title: 'قهوه سرد', restaurantSlug: 'blacksugar' }, + { title: ' قهوه دمی', restaurantSlug: 'blacksugar' }, + { title: ' میان وعده و دسر', restaurantSlug: 'blacksugar' }, + { title: 'پیش غذاها', restaurantSlug: 'Piano' }, + { title: 'ساندویچ و برگر', restaurantSlug: 'Piano' }, + { title: 'پیتزا امریکایی', restaurantSlug: 'Piano' }, + { title: 'پیتزا ایتالیایی', restaurantSlug: 'Piano' }, + { title: 'پاستا', restaurantSlug: 'Piano' }, + { title: 'استیک', restaurantSlug: 'Piano' }, + { title: 'سوخاری', restaurantSlug: 'Piano' }, + { title: 'سالاد', restaurantSlug: 'Piano' }, + { title: 'بشقاب', restaurantSlug: 'Piano' }, + { title: 'پیده', restaurantSlug: 'Piano' }, + { title: 'خوراک', restaurantSlug: 'Piano' }, + { title: 'نوشیدنی گرم', restaurantSlug: 'Piano' }, + { title: 'نوشیدنی سرد', restaurantSlug: 'Piano' }, + { title: 'دسر و کیک', restaurantSlug: 'Piano' }, + { title: 'بستنی', restaurantSlug: 'Piano' }, + { title: 'دمنوش گیاهی', restaurantSlug: 'Piano' }, + { title: 'اسموتی', restaurantSlug: 'Piano' }, + { title: 'شیک', restaurantSlug: 'Piano' }, + { title: 'ماکتل ها', restaurantSlug: 'Piano' }, + { title: 'شربت ها', restaurantSlug: 'Piano' }, + { title: 'غذا', restaurantSlug: 'saadat' }, + { title: 'فرنگی', restaurantSlug: 'saadat' }, + { title: 'سالاد ها', restaurantSlug: 'saadat' }, + { title: 'نوشیدنی', restaurantSlug: 'saadat' }, + { title: 'قلیان', restaurantSlug: 'saadat' }, + { title: 'نوشیدنی های گرم', restaurantSlug: 'saadat' }, + { title: 'آیس کافی', restaurantSlug: 'saadat' }, + { title: 'چای', restaurantSlug: 'saadat' }, + { title: 'قهوه نسل ۳', restaurantSlug: 'saadat' }, + { title: 'ماکتل ها', restaurantSlug: 'saadat' }, + { title: 'شیک ها', restaurantSlug: 'saadat' }, + { title: 'پیش غذاها', restaurantSlug: 'saadat' }, + { title: 'خوراک مخصوص هفت خوان', restaurantSlug: 'Haaft khaan' }, + { title: 'خوراک', restaurantSlug: 'Haaft khaan' }, + { title: 'پیش غذا', restaurantSlug: 'Haaft khaan' }, + { title: 'نوشیدنی', restaurantSlug: 'Haaft khaan' }, + { title: 'چای و نوشیدنی گرم', restaurantSlug: 'Haaft khaan' }, + { title: 'قلیان', restaurantSlug: 'Haaft khaan' }, + { title: 'دسر', restaurantSlug: 'Haaft khaan' }, + { title: ' نوشیدنی های سرد', restaurantSlug: '1972Cafe' }, + { title: 'پیتزا ', restaurantSlug: '1972Cafe' }, + { title: 'قهوه و نوشیدنی گرم', restaurantSlug: '1972Cafe' }, + { title: 'پیش غذا و سالاد ', restaurantSlug: '1972Cafe' }, + { title: 'کیک', restaurantSlug: '1972Cafe' }, + { title: 'قهوه های دمی ', restaurantSlug: '1972Cafe' }, + { title: 'چای و دمنوش', restaurantSlug: '1972Cafe' }, + { title: 'پاستا', restaurantSlug: '1972Cafe' }, + { title: 'برگر', restaurantSlug: '1972Cafe' }, + { title: 'قلیان', restaurantSlug: '1972Cafe' }, + { title: 'پیتزاها', restaurantSlug: 'lounge1' }, + { title: 'پیتزا', restaurantSlug: 'Honar' }, + { title: 'برگر', restaurantSlug: 'cafe_sepanj' }, + { title: 'پاستا', restaurantSlug: 'cafe_sepanj' }, + { title: 'پنینی ', restaurantSlug: 'cafe_sepanj' }, + { title: 'هات داگ ', restaurantSlug: 'cafe_sepanj' }, + { title: 'سوخاری', restaurantSlug: 'cafe_sepanj' }, + { title: 'سیب زمینی', restaurantSlug: 'cafe_sepanj' }, + { title: 'سالاد', restaurantSlug: 'cafe_sepanj' }, + { title: 'نوشیدنی', restaurantSlug: 'cafe_sepanj' }, + { title: 'اسپرسو بار', restaurantSlug: 'cafe_sepanj' }, + { title: 'نوشیدنی گرم', restaurantSlug: 'cafe_sepanj' }, + { title: 'دمی', restaurantSlug: 'cafe_sepanj' }, + { title: ' ایس کافی', restaurantSlug: 'cafe_sepanj' }, + { title: 'چای دمنوش', restaurantSlug: 'cafe_sepanj' }, + { title: 'کیک', restaurantSlug: 'cafe_sepanj' }, + { title: 'شیک', restaurantSlug: 'cafe_sepanj' }, + { title: 'نوشیدنی سرد', restaurantSlug: 'cafe_sepanj' }, + { title: 'سیروپ', restaurantSlug: 'monikh' }, + { title: 'کیک', restaurantSlug: 'monikh' }, + { title: 'ساندویچ سرد', restaurantSlug: 'monikh' }, + { title: 'بر پایه اسپرسو', restaurantSlug: 'monikh' }, + { title: 'ماچا', restaurantSlug: 'monikh' }, + { title: 'بدون اسپرسو', restaurantSlug: 'monikh' }, + { title: 'چای و دمنوش', restaurantSlug: 'monikh' }, + { title: 'شیک و اسموتی', restaurantSlug: 'monikh' }, + { title: 'نوشیدنی های گرم (بر پایه اسپرسو)', restaurantSlug: 'o-cafe' }, + { title: 'نوشیدنی های سرد ', restaurantSlug: 'o-cafe' }, + { title: ' نوشیدنی های گرم ملل', restaurantSlug: 'o-cafe' }, + { title: ' قهوه های شنی', restaurantSlug: 'o-cafe' }, + { title: ' شیک ها', restaurantSlug: 'o-cafe' }, + { title: ' کوکی ها و دسرها', restaurantSlug: 'o-cafe' }, + { title: ' کلد برو', restaurantSlug: 'o-cafe' }, + { title: ' موج سوم', restaurantSlug: 'o-cafe' }, + { title: ' چای های ایرانی', restaurantSlug: 'o-cafe' }, + { title: ' دمنوش ها', restaurantSlug: 'o-cafe' }, + { title: ' ماکتل ها', restaurantSlug: 'o-cafe' }, + { title: ' غذاهای اصلی', restaurantSlug: 'o-cafe' }, + { title: ' پیش غذاها', restaurantSlug: 'o-cafe' }, + { title: ' سیب زمینی ها', restaurantSlug: 'o-cafe' }, + { title: ' صبحانه ها', restaurantSlug: 'o-cafe' }, + { title: ' آپشنال', restaurantSlug: 'o-cafe' }, + { title: 'پیش غذا', restaurantSlug: 'yummyburger' }, + { title: 'برگرها', restaurantSlug: 'yummyburger' }, + { title: 'دبل برگرها', restaurantSlug: 'yummyburger' }, + { title: 'تریپل برگرها', restaurantSlug: 'yummyburger' }, + { title: 'پیتزا ها', restaurantSlug: 'yummyburger' }, + { title: 'نوشیدنی ها', restaurantSlug: 'yummyburger' }, + { title: 'ساندویچ', restaurantSlug: 'yummyburger' }, + { title: 'سالاد و پیش غذا', restaurantSlug: 'mahtabgarden' }, + { title: 'آش بار مهتاب', restaurantSlug: 'mahtabgarden' }, + { title: 'غذای اصلی', restaurantSlug: 'mahtabgarden' }, + { title: 'شربت بار مهتاب', restaurantSlug: 'mahtabgarden' }, + { title: 'برگر', restaurantSlug: 'mahtabgarden' }, + { title: 'کافی بار', restaurantSlug: 'mahtabgarden' }, + { title: 'نوشیدنی گرم شکلاتی', restaurantSlug: 'mahtabgarden' }, + { title: 'دسر و کیک', restaurantSlug: 'mahtabgarden' }, + { title: 'شیک', restaurantSlug: 'mahtabgarden' }, + { title: 'دمنوش بار', restaurantSlug: 'mahtabgarden' }, + { title: 'ماکتل بار', restaurantSlug: 'mahtabgarden' }, + { title: 'اسموتی', restaurantSlug: 'mahtabgarden' }, + { title: 'نوشیدنی سرد', restaurantSlug: 'mahtabgarden' }, + { title: 'نوشیدنی های بر پایه اسپرسو', restaurantSlug: 'dream' }, + { title: 'قهوه های دمی ', restaurantSlug: 'dream' }, + { title: 'نوشیدنی های گرم', restaurantSlug: 'dream' }, + { title: 'چای و دمنوش', restaurantSlug: 'dream' }, + { title: 'قهوه های سرد', restaurantSlug: 'dream' }, + { title: 'شیک ها', restaurantSlug: 'dream' }, + { title: 'موکتل و آب میوه ها', restaurantSlug: 'dream' }, + { title: 'شربت ها', restaurantSlug: 'dream' }, + { title: 'فانتزی', restaurantSlug: 'dream' }, + { title: 'افزودنی', restaurantSlug: 'dream' }, + { title: 'بستنی ', restaurantSlug: 'dream' }, + { title: 'دسر', restaurantSlug: 'dream' }, + { title: 'صبحانه', restaurantSlug: 'dream' }, + { title: 'پیتزا ایتالیایی', restaurantSlug: 'dream' }, + { title: 'برگر', restaurantSlug: 'dream' }, + { title: 'پیش غذا', restaurantSlug: 'dream' }, + { title: 'پاستا', restaurantSlug: 'dream' }, + { title: 'سوخاری', restaurantSlug: 'dream' }, + { title: 'خوراک', restaurantSlug: 'dream' }, + { title: 'پیده', restaurantSlug: 'dream' }, + { title: 'شیرینی', restaurantSlug: 'dream' }, + { title: 'استیک ها', restaurantSlug: 'dream' }, + { title: 'سالاد', restaurantSlug: 'dream' }, + { title: 'پیتزا آمریکایی', restaurantSlug: 'dream' }, + { title: 'غذای ایرانی', restaurantSlug: 'dream' }, + { title: 'باربیکیو', restaurantSlug: 'dream' }, + { title: 'پیش غذاها', restaurantSlug: 'lanka' }, + { title: 'ایران زمین', restaurantSlug: 'lanka' }, + { title: 'پیتزا ایتالیایی', restaurantSlug: 'lanka' }, + { title: 'برگرها', restaurantSlug: 'lanka' }, + { title: 'استیک ها', restaurantSlug: 'lanka' }, + { title: 'پاستا', restaurantSlug: 'lanka' }, + { title: 'سالاد', restaurantSlug: 'lanka' }, + { title: 'دریایی ها', restaurantSlug: 'lanka' }, + { title: 'شات سس ها', restaurantSlug: 'lanka' }, + { title: 'اسپرسو بار', restaurantSlug: 'lanka' }, + { title: 'نوشیدنی گرم', restaurantSlug: 'lanka' }, + { title: 'آیس کافی', restaurantSlug: 'lanka' }, + { title: 'میلک شیک', restaurantSlug: 'lanka' }, + { title: 'نوشیدنی سرد', restaurantSlug: 'lanka' }, + { title: 'کیک و دسر ', restaurantSlug: 'lanka' }, + { title: 'سوخاری ها', restaurantSlug: 'lanka' }, + { title: 'چای و دمنوش', restaurantSlug: 'lanka' }, + { title: 'قهوه دمی', restaurantSlug: 'lanka' }, + { title: 'اسموتی ', restaurantSlug: 'lanka' }, + { title: 'vip drink', restaurantSlug: 'lanka' }, + { title: 'اسپرسو', restaurantSlug: 'LIAN' }, + { title: 'اسپرسو با شیر', restaurantSlug: 'LIAN' }, + { title: 'بار گرم', restaurantSlug: 'LIAN' }, + { title: 'آیس کافی', restaurantSlug: 'LIAN' }, + { title: 'آیس', restaurantSlug: 'LIAN' }, + { title: 'ماکتیل', restaurantSlug: 'LIAN' }, + { title: 'شیک', restaurantSlug: 'LIAN' }, + { title: 'دمی', restaurantSlug: 'LIAN' }, + { title: 'اسموتی', restaurantSlug: 'LIAN' }, + { title: 'میان وعده', restaurantSlug: 'LIAN' }, + { title: 'کیک ها', restaurantSlug: 'LIAN' }, + { title: 'چای و دمنوش', restaurantSlug: 'LIAN' }, + { title: 'بار گرم', restaurantSlug: 'milco-pilco' }, + { title: 'چای ها', restaurantSlug: 'milco-pilco' }, + { title: 'دمنوش ها', restaurantSlug: 'milco-pilco' }, + { title: 'شیک ها', restaurantSlug: 'milco-pilco' }, + { title: 'بارسرد', restaurantSlug: 'milco-pilco' }, + { title: 'برگرها ', restaurantSlug: 'milco-pilco' }, + { title: 'هات داگ ها', restaurantSlug: 'milco-pilco' }, + { title: 'نوستالژی', restaurantSlug: 'milco-pilco' }, + { title: 'سوخاری', restaurantSlug: 'milco-pilco' }, + { title: 'سیب زمینی', restaurantSlug: 'milco-pilco' }, + { title: 'پاستا', restaurantSlug: 'milco-pilco' }, + { title: 'سالاد ', restaurantSlug: 'milco-pilco' }, + { title: 'اسپرسو بار', restaurantSlug: 'milco-pilco' }, + { title: 'نوشیدنی سرد بر پایه قهوه', restaurantSlug: 'milco-pilco' }, + { title: 'ساندویچ ', restaurantSlug: 'milco-pilco' }, + { title: 'نوشیدنی های گرم بر پایه قهوه', restaurantSlug: 'lama' }, + { title: 'نوشیدنی های گرم', restaurantSlug: 'lama' }, + { title: 'دمنوش ها', restaurantSlug: 'lama' }, + { title: 'نوشیدنی های سر بر پایه قهوه', restaurantSlug: 'lama' }, + { title: 'ماکتیل', restaurantSlug: 'lama' }, + { title: 'چای', restaurantSlug: 'lama' }, + { title: 'شیک', restaurantSlug: 'lama' }, + { title: 'پیتزا', restaurantSlug: 'lama' }, + { title: 'برگر', restaurantSlug: 'lama' }, + { title: 'ساندویچ', restaurantSlug: 'lama' }, + { title: 'ساندویچ نوستالژی', restaurantSlug: 'lama' }, + { title: 'سوخاری', restaurantSlug: 'lama' }, + { title: 'سیب زمینی', restaurantSlug: 'lama' }, + { title: 'پنه', restaurantSlug: 'lama' }, + { title: 'غذای ایرانی', restaurantSlug: 'kaj.foodhall' }, + { title: 'پیتزا آمریکایی', restaurantSlug: 'kaj.foodhall' }, + { title: 'پیتزا ایتالیایی', restaurantSlug: 'kaj.foodhall' }, + { title: 'برگر', restaurantSlug: 'kaj.foodhall' }, + { title: 'خوراک', restaurantSlug: 'kaj.foodhall' }, + { title: 'پیده', restaurantSlug: 'kaj.foodhall' }, + { title: 'سوخاری', restaurantSlug: 'kaj.foodhall' }, + { title: 'استیک', restaurantSlug: 'kaj.foodhall' }, + { title: 'پاستا', restaurantSlug: 'kaj.foodhall' }, + { title: 'پیش غذا', restaurantSlug: 'kaj.foodhall' }, + { title: 'سالاد', restaurantSlug: 'kaj.foodhall' }, + { title: 'نوشیدنی های بر پایه اسپرسو', restaurantSlug: 'kaj.foodhall' }, + { title: 'قهوه های دمی', restaurantSlug: 'kaj.foodhall' }, + { title: 'قهوه های سرد', restaurantSlug: 'kaj.foodhall' }, + { title: 'چای و دمنوش ', restaurantSlug: 'kaj.foodhall' }, + { title: 'نوشیدنی های گرم', restaurantSlug: 'kaj.foodhall' }, + { title: 'موکتل و آب میوه ها', restaurantSlug: 'kaj.foodhall' }, + { title: 'دسر', restaurantSlug: 'kaj.foodhall' }, + { title: 'شیک ', restaurantSlug: 'kaj.foodhall' }, + { title: 'بستنی', restaurantSlug: 'kaj.foodhall' }, + { title: 'شربت', restaurantSlug: 'kaj.foodhall' }, + { title: 'دسر', restaurantSlug: 'hamid' }, + { title: 'شیک', restaurantSlug: 'donat-factory' }, + { title: 'بستنی ویژه', restaurantSlug: 'donat-factory' }, + { title: 'دسر', restaurantSlug: 'donat-factory' }, + { title: 'اسموتی', restaurantSlug: 'donat-factory' }, + { title: 'آیس کافی', restaurantSlug: 'donat-factory' }, + { title: 'قهوه', restaurantSlug: 'donat-factory' }, + { title: 'نوشیدنی های گرم', restaurantSlug: 'donat-factory' }, + { title: 'دمنوش', restaurantSlug: 'donat-factory' }, + { title: 'آیس بستنی', restaurantSlug: 'donat-factory' }, + { title: 'ویتامینه', restaurantSlug: 'donat-factory' }, + { title: 'آبمیوه طبیعی', restaurantSlug: 'donat-factory' }, + { title: 'دونات اسپشیال ', restaurantSlug: 'donat-factory' }, + { title: 'دونات آرت', restaurantSlug: 'donat-factory' }, + { title: 'دونات فانتزی', restaurantSlug: 'donat-factory' }, + { title: 'دونات جنرال', restaurantSlug: 'donat-factory' }, + { title: 'رست نات', restaurantSlug: 'donat-factory' }, + { title: 'برلینر', restaurantSlug: 'donat-factory' }, + { title: 'دونات اسپال', restaurantSlug: 'donat-factory' }, + { title: 'دونات لقمه ای ', restaurantSlug: 'donat-factory' }, + { title: 'دونات لقمه ای', restaurantSlug: 'donat-factory' }, + { title: 'دونات ناتس', restaurantSlug: 'donat-factory' }, + { title: 'صبحانه', restaurantSlug: 'donat-factory' }, + { title: 'اسنک و‌ میان وعده', restaurantSlug: 'donat-factory' }, + { title: 'دونات دوبی ', restaurantSlug: 'donat-factory' }, + { title: 'منوی اقتصادی ', restaurantSlug: 'donat-factory' }, + { title: 'پیتزا آمریکایی', restaurantSlug: 'narsis' }, + { title: 'برگرها', restaurantSlug: 'narsis' }, + { title: 'پاستاها', restaurantSlug: 'narsis' }, + { title: 'پیش غذا', restaurantSlug: 'narsis' }, + { title: 'نوشیدنی سرد آماده', restaurantSlug: 'narsis' }, + { title: 'نوشیدنی گرم', restaurantSlug: 'narsis' }, + { title: 'قهوه', restaurantSlug: 'narsis' }, + { title: 'نوشیدنی های سرد', restaurantSlug: 'narsis' }, + { title: 'نوشیدنی های سرد بر پایه قهوه', restaurantSlug: 'narsis' }, + { title: 'نوشیدنی های طبیعی با بستنی', restaurantSlug: 'narsis' }, + { title: 'ﻧﻮﺷﯿﺪﻧﯽ ﻫﺎ ﺑﺮ ﭘﺎﯾﻪ ﺷﯿﺮ', restaurantSlug: 'narsis' }, + { title: 'شیک ﻫﺎ و آﯾﺲ پک ها', restaurantSlug: 'narsis' }, + { title: 'آﺑﻤﯿﻮه ﻫﺎی ﻃﺒﯿﻌﯽ', restaurantSlug: 'narsis' }, + { title: 'آﺑﻤﯿﻮه ﻫﺎی ترکیبی', restaurantSlug: 'narsis' }, + { title: 'افزودنی ها', restaurantSlug: 'narsis' }, + { title: 'کیک ها ', restaurantSlug: 'narsis' }, + { title: 'خوراک ها', restaurantSlug: 'narsis' }, + { title: 'غذاهای چلویی', restaurantSlug: 'narsis' }, + { title: 'قهوه گرم', restaurantSlug: 'Theory' }, + { title: 'قهوه سرد', restaurantSlug: 'Theory' }, + { title: 'قهوه دمی', restaurantSlug: 'Theory' }, + { title: 'ماکتل', restaurantSlug: 'Theory' }, + { title: 'اسموتی', restaurantSlug: 'Theory' }, + { title: 'نوشیدنی گرم', restaurantSlug: 'Theory' }, + { title: 'ساندویچ گرم', restaurantSlug: 'Theory' }, + { title: 'ساندویچ سرد', restaurantSlug: 'Theory' }, + { title: 'سالاد و پیش غذا', restaurantSlug: 'Theory' }, + { title: 'چای و دمنوش', restaurantSlug: 'Theory' }, + { title: 'دسر', restaurantSlug: 'Theory' }, + { title: 'صبحانه', restaurantSlug: 'Theory' }, + { title: 'شیک', restaurantSlug: 'Theory' }, + { title: 'اضافه بار', restaurantSlug: 'Theory' }, + { title: 'نوشیدنی گرم بر پایه اسپرسو', restaurantSlug: 'ahr_cofe' }, + { title: 'نوشیدنی گرم', restaurantSlug: 'ahr_cofe' }, + { title: 'نوشیدنی سرد بر پایه اسپرسو', restaurantSlug: 'ahr_cofe' }, + { title: 'دمنوش و چای', restaurantSlug: 'ahr_cofe' }, + { title: 'شیک', restaurantSlug: 'ahr_cofe' }, + { title: 'ماکتل', restaurantSlug: 'ahr_cofe' }, + { title: 'اسموتی', restaurantSlug: 'ahr_cofe' }, + { title: 'کیک و دسر', restaurantSlug: 'ahr_cofe' }, + { title: 'اسپرسو بار', restaurantSlug: 'cafe_meat' }, + { title: 'بارسرد بر پایه اسپرسو', restaurantSlug: 'cafe_meat' }, + { title: 'صبحانه', restaurantSlug: 'cafe_meat' }, + { title: 'پیش غذا', restaurantSlug: 'cafe_meat' }, + { title: 'دمنوش ها', restaurantSlug: 'cafe_meat' }, + { title: 'بارسرد', restaurantSlug: 'cafe_meat' }, + { title: 'شیک', restaurantSlug: 'cafe_meat' }, + { title: 'غذا اصلی', restaurantSlug: 'cafe_meat' }, + { title: 'بار گرم بدون کافئین ', restaurantSlug: 'cafe_meat' }, + { title: 'کیک', restaurantSlug: 'cafe_meat' }, + { title: 'قهوه ها', restaurantSlug: 'Moon' }, + { title: 'پیستری', restaurantSlug: 'Moon' }, + { title: 'چای و دمنوش', restaurantSlug: 'Moon' }, + { title: 'نوشیدنی سرد', restaurantSlug: 'Moon' }, + { title: 'ماکتل', restaurantSlug: 'Moon' }, + { title: 'بستنی', restaurantSlug: 'Moon' }, + { title: 'نوشیدنی گرم', restaurantSlug: 'Moon' }, + { title: 'ایتم های بر پایه شیر', restaurantSlug: 'Moon' }, + { title: 'بیکری', restaurantSlug: 'Moon' }, + { title: 'سانویچ سرد', restaurantSlug: 'Moon' }, + { title: 'سالاد', restaurantSlug: 'Moon' }, + { title: 'اب', restaurantSlug: 'Moon' }, + { title: 'پیتزا', restaurantSlug: 'Moon' }, + { title: 'پاستاها', restaurantSlug: 'passata' }, + { title: 'Menu star (Only for special days)', restaurantSlug: 'passata' }, + { title: 'تاپینگ بار', restaurantSlug: 'passata' }, + { title: 'چیاباتا(سندویچ‌)', restaurantSlug: 'passata' }, + { title: 'نوشیدنی', restaurantSlug: 'passata' }, + { title: 'آش ها', restaurantSlug: 'kolbe-setareh' }, + { title: 'غذاهای اصلی', restaurantSlug: 'kolbe-setareh' }, + { title: 'غذاهای ویژه در طول هفته', restaurantSlug: 'kolbe-setareh' }, + { title: 'صبحانه ', restaurantSlug: 'kolbe-setareh' }, + { title: 'نوشیدنی ها', restaurantSlug: 'kolbe-setareh' }, + { title: 'پیش غذا', restaurantSlug: 'kolbe-setareh' }, + { title: 'دسرها', restaurantSlug: 'kolbe-setareh' }, + { title: 'سرویس اضافه', restaurantSlug: 'kolbe-setareh' }, +]; \ No newline at end of file diff --git a/src/seeders/data/coupons.data.ts b/src/seeders/data/coupons.data.ts new file mode 100644 index 0000000..4cacc51 --- /dev/null +++ b/src/seeders/data/coupons.data.ts @@ -0,0 +1,94 @@ +import { CouponType } from '../../modules/coupons/interface/coupon'; + +export interface CouponData { + restaurantSlug: string; + code: string; + name: string; + description?: string; + type: CouponType; + value: number; + maxDiscount?: number; + minOrderAmount?: number; + maxUses?: number; + maxUsesPerUser?: number; + startDate?: string; + endDate?: string; + isActive: boolean; +} + +export const couponsData: CouponData[] = [ + { + restaurantSlug: 'zhivan', + code: 'WELCOME10', + name: 'خوش آمدگویی ۱۰٪', + description: 'تخفیف ۱۰ درصدی برای اولین خرید', + type: CouponType.PERCENTAGE, + value: 10, + maxDiscount: 50000, + minOrderAmount: 100000, + maxUses: 100, + maxUsesPerUser: 1, + isActive: true, + }, + { + restaurantSlug: 'zhivan', + code: 'FIXED50K', + name: 'تخفیف ۵۰ هزار تومانی', + description: 'تخفیف ثابت ۵۰ هزار تومانی', + type: CouponType.FIXED, + value: 50000, + minOrderAmount: 200000, + maxUses: 50, + maxUsesPerUser: 2, + isActive: true, + }, + { + restaurantSlug: 'zhivan', + code: 'WEEKEND20', + name: 'تعطیلات ۲۰٪', + description: 'تخفیف ۲۰ درصدی برای آخر هفته', + type: CouponType.PERCENTAGE, + value: 20, + maxDiscount: 100000, + minOrderAmount: 150000, + maxUses: 200, + isActive: true, + }, + { + restaurantSlug: 'boote', + code: 'FIRST15', + name: 'اولین خرید ۱۵٪', + description: 'تخفیف ۱۵ درصدی برای اولین خرید', + type: CouponType.PERCENTAGE, + value: 15, + maxDiscount: 75000, + minOrderAmount: 100000, + maxUses: 100, + maxUsesPerUser: 1, + isActive: true, + }, + { + restaurantSlug: 'boote', + code: 'SAVE30K', + name: 'صرفه جویی ۳۰ هزار', + description: 'تخفیف ثابت ۳۰ هزار تومانی', + type: CouponType.FIXED, + value: 30000, + minOrderAmount: 100000, + maxUses: 100, + isActive: true, + }, + { + restaurantSlug: 'boote', + code: 'VIP25', + name: 'ویژه ۲۵٪', + description: 'تخفیف ویژه ۲۵ درصدی', + type: CouponType.PERCENTAGE, + value: 25, + maxDiscount: 150000, + minOrderAmount: 200000, + maxUses: 50, + maxUsesPerUser: 1, + isActive: true, + }, +]; diff --git a/src/seeders/data/delivery-methods.data.ts b/src/seeders/data/delivery-methods.data.ts new file mode 100644 index 0000000..4e427ef --- /dev/null +++ b/src/seeders/data/delivery-methods.data.ts @@ -0,0 +1,45 @@ +import { DeliveryMethodEnum } from '../../modules/delivery/interface/delivery'; + +export interface DeliveryMethodData { + method: DeliveryMethodEnum; + description: string; + deliveryFee: number; + minOrderPrice: number; + enabled: boolean; + order: number; +} + +export const deliveryMethodsData: DeliveryMethodData[] = [ + { + method: DeliveryMethodEnum.DineIn, + description: 'سرو غذا در رستوران', + deliveryFee: 0, + minOrderPrice: 0, + enabled: true, + order: 1, + }, + { + method: DeliveryMethodEnum.CustomerPickup, + description: 'برداشت غذا از رستوران', + deliveryFee: 0, + minOrderPrice: 0, + enabled: true, + order: 2, + }, + { + method: DeliveryMethodEnum.DeliveryCar, + description: 'تحویل غذا در خودرو', + deliveryFee: 5000, + minOrderPrice: 50000, + enabled: true, + order: 3, + }, + { + method: DeliveryMethodEnum.DeliveryCourier, + description: 'تحویل غذا با پیک', + deliveryFee: 10000, + minOrderPrice: 100000, + enabled: true, + order: 4, + }, +]; diff --git a/src/seeders/data/foods.data.ts b/src/seeders/data/foods.data.ts new file mode 100644 index 0000000..7172bfe --- /dev/null +++ b/src/seeders/data/foods.data.ts @@ -0,0 +1,34147 @@ +import { MealType } from '../../modules/foods/interface/food.interface'; + +export interface FoodData { + title: string; + desc: string; + price: number; + restaurantSlug: string; + categoryTitle: string; + isActive: boolean; + stock: number; + stockDefault: number; + images: string[]; + content?: string[]; + weekDays?: number[]; + mealTypes?: MealType[]; + discount?: number; + score?: number; + inPlaceServe?: boolean; + pickupServe?: boolean; + isSpecialOffer?: boolean; +} + +export const foodsData: FoodData[] = [{ + title: 'بیف استراگانف .. beef stroganoff ', + desc: 'فیله گوساله / سس سفید / قارچ و سیب زمینی/ پنیر پارمزان..veal fillet/ mayonnaise sauce/mushroom/potato/parmesan cheese ', + price: 505000, + restaurantSlug: 'zhivan', + categoryTitle: 'پاستا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714292844747.png"], +}, +{ + title: 'چیکن استراگانف .. chicken stroganoff ', + desc: 'فیله مرغ/ سس سفید / قارچ و سیب زمینی/ پنیر پارمزان..chicken fillet/ mayonnaise sauce/mushroom/potato/parmesan cheese ', + price: 495000, + restaurantSlug: 'zhivan', + categoryTitle: 'پاستا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714291139700.png"], +}, +{ + title: 'اسپاگتی گوشت .. meat spaghetti ', + desc: 'اســـپاگتی /فیله گوســـاله/گوجه گیلاسی/قارچ/سس مخصوص آلفردو/ پنیر پارمزان..spaghetti/veal fillet/tomato/mushroom/alfredo special sauce/parmesan cheese', + price: 465000, + restaurantSlug: 'zhivan', + categoryTitle: 'پاستا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715716176915.png"], +}, +{ + title: 'پنه میلانو .. Milano Pasta', + desc: 'پنه ریگاته/فیله مرغ/فیله گوســـاله/گوجه گیلاسی/قارچ/ســـس مخصوص آلفردو/ پنیر پارمزان..rigate pasta/chicken fillet/mushroom/tomato/alfredo special sauce/parmesan cheese', + price: 455000, + restaurantSlug: 'zhivan', + categoryTitle: 'پاستا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1735148231197.png"], +}, +{ + title: 'پنه آلفردو .. Alfredo pasta', + desc: 'پنـــه ریگاته/فیلـــه مرغ/قـــارچ/ گوجه گیلاســـی /ســـس مخصوص آلفردو/ پنیر پارمزان..rigate pasta/chicken fillet/mushroom/tomato/alfredo special sauce/parmesan cheese', + price: 415000, + restaurantSlug: 'zhivan', + categoryTitle: 'پاستا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715716115154.png"], +}, +{ + title: 'اسپاگتی پستو .. pesto spaghetti ', + desc: 'فیله مرغ/اسپاگتی/سس پستو/قارچ/پنیرپارمزان.. chicken fillet/spaghetti/pesto sauce/parmesan cheese/mushroom', + price: 415000, + restaurantSlug: 'zhivan', + categoryTitle: 'پاستا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715715922343.png"], +}, +{ + title: 'چانو.. Chano ', + desc: 'پنیر/فیله گوساله طعم دارشده/ارگانو.سیر cheese/veal fillet/organo', + price: 615000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714290662409.png"], +}, +{ + title: 'مازراتی.. Pulled beef ', + desc: 'پنیر/مغز ران گوساله طعم دار شده/قارچ/ فلفل دلمه ای/گوجه/ارگانو..cheese/calf thigh marrow/mushroom/sweet pepper/olive/tomato/organo', + price: 660000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714291733978.png"], +}, +{ + title: 'کاپری چیوسا.. Capricciosa', + desc: 'پنیر/ژامبـــون گوشـــت/قارچ/فلفل دلمـــه ای/ارگانو..cheese/ham meat/mushroom/sweet pepper/olive/organo', + price: 550000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714291580847.png"], +}, +{ + title: 'سیسیلی(Hot).. Sicily ', + desc: 'پنیر/فیلـــه مـــرغ گریـــل شـــده طعـــم دار تند/قارچ/فلفل دلمه ای /ارگانو/سس بار بیکیو..cheese/hot chicken fillet grilled/mushroom/sweet pepper/organo/Bar.B.Q sauce', + price: 560000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714292109999.png"], +}, +{ + title: 'پپرونی (Hot).. Pepperoni ', + desc: 'پنیر /پپرونی/ارگانو/هالوپینو..cheese/pepperoni/olive/organo/jalopino', + price: 550000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713707400167.png"], +}, +{ + title: 'وجتریین.. Vegetarian ', + desc: 'پنیر/سبزیجات تازه فصل/صیفی جات تازه فصل/ارگانو..cheese/vegetables/summer crops/organo', + price: 440000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714292678356.png"], +}, +{ + title: 'مارگاریتا.. Margherita ', + desc: 'پنیر/گوجه /ریحان/ارگانو..cheese/tomato/basil/organo', + price: 440000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714291688802.png"], +}, +{ + title: 'کوارترپیتزا.. Quarter pizza ', + desc: '۱/۴ کاپری / ۱/۴ سیسیلی/۱/۴ پپرونی/۱/۴ چانو..1,4capri/1,4sicily/1,4pepperoni/1,4chano', + price: 610000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714291863631.png"], +}, +{ + title: 'بیف پستو.. Beef pesto', + desc: 'پنیـــر/فیلـــه گوســـاله/پیاز/فلفل دلمـــه ای/سس پستو/ریحان..cheese/veal fillet/onion/sweet pepper/olive/pesto sauce/basil', + price: 570000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714291001069.png"], +}, +{ + title: 'بولونز.. Bolognese ', + desc: 'پنیـــر/گوشـــت چـــرخ کـــرده طعـــم دار شده/قارچ/فلفل دلمه ای/ارگانو..cheese/mince meat/mushroom/sweet pepper/organo', + price: 561000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'مگابیف اند چیکن.. Beef & chicken ', + desc: 'پنیـــر/چیکـــن استریپس/گوشـــت چـــرخ کرده/قارچ/پیاز/فلفل دلمه ای/ارگانو..cheese/chicken strips/mince meat/mushroom/onion/sweet pepper/olive/organo', + price: 605000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714290596848.png"], +}, +{ + title: 'فیله مینیون .. fillett beef& mushroom sauce ', + desc: 'فیلـــه گوســـاله /ســـس قارچ/دورچین ســـبزیجات و صیفی جات بخارپز )کاملا ترد و بدون چربی(سیب زمینی تنوری..veal fillet/mushroom sauce/steamed vegetables/steamed summer crops/roast potatoes/', + price: 920000, + restaurantSlug: 'zhivan', + categoryTitle: 'استیک', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715701889899.png"], +}, +{ + title: 'اسموکی .. smoked beef fillet & mushrooms sauce ', + desc: 'فیله گوساله دودی/سس قارچ/دورچین سبزیجات و صیفی جات بخارپز )کاملا تردو بدون چربی(سیب زمینی تنوری ..smoked veal fillet/mushroom sauce/steamed vegetables/steamed summer crops/roast potatoes ', + price: 920000, + restaurantSlug: 'zhivan', + categoryTitle: 'استیک', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714291822159.png"], +}, +{ + title: 'خورا ک اسپانیایی.. Spain food', + desc: 'فیله گوساله تفت داده شده/مرغ تفت داده شده/پیاز ژولین/فلفل دلمه ای /قارچ / کنجد ذرت/سس مخصوص سرآشپز..veal fillet/chicken/julienne onion/sweet pepper/mushroom/sesame/corn/special sauce ', + price: 480000, + restaurantSlug: 'zhivan', + categoryTitle: 'غذاهای گریل و فرنگی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713773216671.png"], +}, +{ + title: 'بشقاب سبزیجات.. vegetarian dish', + desc: 'انـــواع ســـبزیجات تـــازه و صیفـــی جـــات تـــازه فصـــل بخارپز/پـــوره سیب زمینی..fresh steamed vegetables/fresh steamed summer crops/mashed potatoes/', + price: 432000, + restaurantSlug: 'zhivan', + categoryTitle: 'غذاهای گریل و فرنگی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714293582193.png"], +}, +{ + title: 'دبل برگر..double burger ', + desc: 'گوشـــت خالص/پنیـــر گودا/پنیـــر کاراملی/گوجه/خیارشور/ کاهو/سیب زمینی سرخ شده..pure meat/gouda cheese/caramely cheese/tomato/pickled cucumber/french fries ', + price: 575000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714291899865.png"], +}, +{ + title: 'چیز برگر ..cheese burger', + desc: 'گوشـــت خالـــص / پنیـــر گودا/پنیـــر کاراملی/گوجه/خیارشور/ کاهو/سیب زمینی سرخ شده..pure meat/gouda cheese/ caramely cheese/tomato/pickled cucumber/lettuce/french fries ', + price: 442000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713706018252.png"], +}, +{ + title: 'برگر کلاسیک ..classic burger', + desc: 'گوشت خالص /گوجه/خیارشور/ کاهو/سیب زمینی سرخ شده..pure meat/tomato/pickled cucumber/lettuce/french fries ', + price: 432000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715753283656.png"], +}, +{ + title: 'ماشروم برگر .. mushroom burgers ', + desc: 'گوشت خالص/خیارشور/سس مخصوص قارچ/سیب زمینی سرخ شده..pure meat/pickled cucumber/special mushroom sauce/french fries ', + price: 452000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715752985770.png"], +}, +{ + title: 'زینگر برگر .. zinger burger', + desc: 'فیله مرغ سوخاری استریپس/کاهو/خیارشور/پنیر گودا/سیب زمینی سرخ شده..stripped fried chicken fillet/lettuce/pickled cucumber/gouda cheese/french fries ', + price: 390000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713706335139.png"], +}, +{ + title: '5 ستاره .. star burger: beef & chicken ', + desc: 'گوشـــت خالص/فیلـــه مـــرغ گریـــل شـــده/پنیر گودا/گوجه/خیارشور/کاهو/سیب زمینی سرخ شده..pure meat/grilled chicken fillet/gouda cheese/tomato/pickled cucumber/lettuce/french fries ', + price: 495000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714291935378.png"], +}, +{ + title: 'پنینی مرغ با سس پستو .. chicken pesto panini ', + desc: 'فیلـــه مرغ مـــزه دار گریل/سس پستو/ کاهو/گوجه/خیارشور/ســـیب زمینی سرخ شده..grilled chicken fillet/pesto sauce/lettuce/tomato/pickled cucumber/french fries ', + price: 425000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713779020113.png"], +}, +{ + title: 'پنینی بیف .. beef fillet panini', + desc: 'فیله گوساله مزه دار شده / پنیر گودا/کاهو/گوجه/خیارشور/سیب زمینی سرخ شده..veal fillet/gouda cheese/tomato/pickled cucumber/french fries/lettuce', + price: 492000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715752107592.png"], +}, +{ + title: 'فیلا دلفیا ..Philadelphia sandwich ', + desc: 'فیلـــه گوســـاله و فیله مـــرغ طعـــم دار شـــده/پنیر گودا/ســـس مخصوص/فلفـــل دلمـــه ای/ پیـــاز/ قـــارچ/ ســـیب زمینـــی ســـرخ شده/سس خردل با نان چاپاتا..veal fillet/chicken fillet/ gouda cheese/special sauce/sweet pepper/onion/mushroom/french fries/mustard/chapata bread ', + price: 516000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713772958621.png"], +}, +{ + title: 'پنینی رست بیف .. roast beef panini ', + desc: 'مغز ران گوساله/پیاز و جعفری/قارچ/خیارشور/سیب زمینی سرخ شده..calf thigh marrow/onion/parsley/mushroom/pickled cucumber/french fries', + price: 542000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713779110050.png"], +}, +{ + title: 'دوتکه:(نرمال)', + desc: 'دوتکه ســـوخاری/ سیب زمینی سرخ کرده/نان بروتچن /سس های مخصوص..two slices fried/french fries/brutchen bread/special sauces', + price: 415000, + restaurantSlug: 'zhivan', + categoryTitle: 'سوخاری', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713707054857.png"], +}, +{ + title: 'سه تکه:(نرمال)', + desc: 'سه تکه سوخاری/ همراه سیب زمینی سرخ کرده/نان بروتچن /سس های مخصوص..three slices fried/french fries/brutchen bread/special sauces', + price: 515000, + restaurantSlug: 'zhivan', + categoryTitle: 'سوخاری', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713707048869.png"], +}, +{ + title: 'پنج تکه:(نرمال)', + desc: 'پنج تکه سوخاری/سیب زمینی سرخ کرده/نان بروتچن /سس های مخصوص..five slices fried/french fries/brut Chen bread/special sauces', + price: 710000, + restaurantSlug: 'zhivan', + categoryTitle: 'سوخاری', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713707039568.png"], +}, +{ + title: 'سه تکه فیله : (استریپس)', + desc: 'سه فیله سوخاری/سیب زمینی سرخ کرده/نان بروتچن /سس های مخصوص..three fried fillet/french fries/britches bread/special sauces', + price: 437000, + restaurantSlug: 'zhivan', + categoryTitle: 'سوخاری', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713706975656.png"], +}, +{ + title: 'پنج تکه فیله : (استریپس)', + desc: 'پنج فیله سوخاری/سیب زمینی سرخ کرده/نان بروتچن /سس های مخصوص..five slices fried/french fries/ brutchen bread/special sauces', + price: 595000, + restaurantSlug: 'zhivan', + categoryTitle: 'سوخاری', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713706989835.png"], +}, +{ + title: 'ویژه کودکان', + desc: 'چیکـــن اســـترپس بـــا نـــان بروتچـــن کوچـــک/دو عـــدد فیلـــه اســـترپس/قارچ سوخاری/ســـیب زمینـــی ســـرخ کـــرده/ ســـالاد کلم/سس مخصوص..one slices fried/ brutchen bread/two strips fillet/fried mushroom/french fries/ cabbage salad/special sauce ', + price: 470000, + restaurantSlug: 'zhivan', + categoryTitle: 'سوخاری', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سوخاری ویــــــژه', + desc: 'یـــک تکـــه ســـوخاری /دو تکـــه فیله اســـتریپس/زینگر برگر/ســـیب زمینی سرخ کرده/ قارچ سوخاری/ سس مخصوص مخصوص ..one slice fried/two slices strips fillet/zinger burger/french fries/fried mushroom/ cabbage salad/special sauce ', + price: 638000, + restaurantSlug: 'zhivan', + categoryTitle: 'سوخاری', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سالاد سزار(مرغ گریل) .. Caesar salad', + desc: 'کاهـــو رســـمی و پیچ/گوجـــه گیلاســـی/زیتون/نان کروتان/پنیـــر پارمزان/همراه با سس سزار..lettuce/tomato/olive/crotan bread/parmesan cheese/ Caesar sauce ', + price: 395000, + restaurantSlug: 'zhivan', + categoryTitle: 'سالاد', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715788350856.png"], +}, +{ + title: 'سالاد سزار (فیله سوخار ی با دیپ چدار) .. Caesar salad/Fried chicken', + desc: 'کاهـــو رســـمی و پیچ/گوجـــه گیلاســـی/زیتون/نان کروتان/پنیـــر پارمزان/همراه با سس سزار..lettuce/tomato/olive/crotan bread/parmesan cheese/ Caesar sauce ', + price: 405000, + restaurantSlug: 'zhivan', + categoryTitle: 'سالاد', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713772878324.png"], +}, +{ + title: 'سالاد فصل .. Iranian salad ', + desc: 'کاهـــو رســـمی و پیـــچ /کلـــم قرمـــز /هویج/گوجـــه گیلاسی/زیتون/خیار/همراه با سس رنج..lettuce/red cabbage/ carrot/tomato/olive/cucumber/sis wrench', + price: 330000, + restaurantSlug: 'zhivan', + categoryTitle: 'سالاد', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715852971271.png"], +}, +{ + title: 'سیب زمینی پنیر و قارچ .. Mushroom cheese potatoes', + desc: 'سیب زمینی /قارچ/پنیر..potato/mushroom/cheese', + price: 255000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715934773791.png"], +}, +{ + title: 'سیب زمینی پنیرقارچ و ژامبون', + desc: 'سیب زمینی/قارچ/ژامبون/پنیر..potato/mushroom/ham/cheese', + price: 275000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714290894911.png"], +}, +{ + title: 'نان سیر .. garlic bread', + desc: 'گوجه گیلاسی، سس سیر، ذرت، پنیر پیتزا..tomato/garlic sauce/corn/pizza cheese ', + price: 310000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713773293238.png"], +}, +{ + title: 'میکس ناچو و فیله سوخاری', + desc: 'چیپس تورتیلا/تکه های فیله سوخاری/دیپ پنیر چدار..tortilla chips/fried fillet/cheddar dip cheese ', + price: 325000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713773138383.png"], +}, +{ + title: 'قارچ سوخاری .. fried mushroom', + desc: 'قارچ سوخاری / سس مخصوص..fried mushroom/special sauce ', + price: 245000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715934677455.png"], +}, +{ + title: 'قارچ سوخاری پنیر', + desc: 'قارچ سوخاری / پنیر/سیب زمینی/سس قارچ..fried mushroom/cheese/potato/mushroom sauce ', + price: 300000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713773268030.png"], +}, +{ + title: 'لیموناد lemonade', + desc: '', + price: 80000, + restaurantSlug: 'zhivan', + categoryTitle: 'موهیتو بار', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715791954744.png"], +}, +{ + title: 'پشن موهیتو passion fruit ', + desc: ' پشن فروت نعناع اسپرایت و لیمو', + price: 110000, + restaurantSlug: 'zhivan', + categoryTitle: 'موهیتو بار', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715791769702.png"], +}, +{ + title: 'موهیتو کلاسیک mojito', + desc: '', + price: 90000, + restaurantSlug: 'zhivan', + categoryTitle: 'موهیتو بار', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714291977244.png"], +}, +{ + title: 'ردبری موهیتو redberry mojito', + desc: '', + price: 110000, + restaurantSlug: 'zhivan', + categoryTitle: 'موهیتو بار', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714293126185.png"], +}, +{ + title: 'بلک موهیتو black mojito', + desc: 'لیمو.نعنا.کوکاکولا', + price: 95000, + restaurantSlug: 'zhivan', + categoryTitle: 'موهیتو بار', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715791641400.png"], +}, +{ + title: 'نوشابه قوطی.. Coca-Cola/Fanta/Sprite', + desc: '', + price: 44000, + restaurantSlug: 'zhivan', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715806193784.png"], +}, +{ + title: 'ماءالشعیر قوطی.. Lemon/Peach/Cactus/Tropical/Classic', + desc: '', + price: 52000, + restaurantSlug: 'zhivan', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715806156688.png"], +}, +{ + title: 'آب معدنی.. Mineral water', + desc: '', + price: 11000, + restaurantSlug: 'zhivan', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715806335977.png"], +}, +{ + title: 'دوغ لیوانی.. Yoghurt', + desc: '', + price: 49000, + restaurantSlug: 'zhivan', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715806418661.png"], +}, +{ + title: 'ویژه ژیوان(تک نفره).. Zhivan pizza ', + desc: 'پنیر/ژامبون مرغ و گوشت/هات داگ/قارچ/فلفل دلمه ای/ارگانو..cheese/chicken & meat ham/hot dog/mushroom/olive/sweet pepper/organo', + price: 489000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ویژه ژیوان(دو نفره).. Zhivan pizza ', + desc: 'پنیر/ژامبون مرغ و گوشت/هات داگ/قارچ/فلفل دلمه ای/ارگانو..cheese/chicken & meat ham/hot dog/mushroom/olive/sweet pepper/organo', + price: 694000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'رست بیف(تک نفره).. Roast beef ', + desc: 'پنیر/مغـــز ران گوســـاله مـــزه دار شـــده/قارچ /فلفل دلمه ای/ارگانو..cheese/calf thigh/marrow/mushroom/sweet pepper/olive/organo', + price: 569000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'رست بیف(دو نفره).. Roast beef ', + desc: 'پنیر/مغـــز ران گوســـاله مـــزه دار شـــده/قارچ /فلفل دلمه ای/ارگانو..cheese/calf thigh marrow/mushroom/sweet pepper/olive/organo', + price: 833000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپشیال(تک نفره).. Special ', + desc: 'پنیر/ژامبون/کوکتل /قارچ/فلفل دلمه ای/ارگانو..cheese/ham/cocktail/mushroom/sweet pepper/olive/organo', + price: 499000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713706544776.png"], +}, +{ + title: 'اسپشیال(دو نفره).. Special ', + desc: 'پنیر/ژامبون/کوکتل /قارچ/فلفل دلمه ای /ارگانو..cheese/ham/cocktail/mushroom/sweet pepper/olive/organo', + price: 706000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713706534918.png"], +}, +{ + title: 'وایت چیکن(تک نفره).. Chicken Alfredo ', + desc: 'پنیر/مرغ مزه دار شده با خامه /قارچ/ارگانو/ذرت..cheese/chicken with cream/mushroom/organo/corn', + price: 514000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713706184032.png"], +}, +{ + title: 'وایت چیکن (دو نفره).. Chicken Alfredo ', + desc: 'پنیر/مرغ مزه دار شده با خامه/قارچ/ارگانو/ذرت..cheese/chicken with cream/mushroom/organo/corn', + price: 711000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713706161875.png"], +}, +{ + title: 'سبزیجات(تک نفره).. Vegetarian ', + desc: 'پنیر/ انواع سبزیجات و صیفی جات تازه فصل..cheese/vegetables/summer crops', + price: 394000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713773093656.png"], +}, +{ + title: 'سبزیجات(دو نفره).. Vegetarian ', + desc: 'پنیر/ انواع سبزیجات و صیفی جات تازه فصل..cheese/vegetables/summer crops', + price: 510000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713773039190.png"], +}, +{ + title: 'پپرونی ژیوان(Hot)تک نفره.. Pepperoni ', + desc: 'پنیر/پپرونی/هالوپینو/ارگانو/..cheese/pepperoni/jalopino/organo/olive', + price: 494000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713706642707.png"], +}, +{ + title: 'پپرونی ژیوان(Hot)دو نفره.. Pepperoni ', + desc: 'پنیر/پپرونی/هالوپینو/ارگانو/.cheese/pepperoni/jalopino/organo/olive', + price: 712000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713706628691.png"], +}, +{ + title: 'میت اند مشروم(تک نفره).. Meat & mushroom ', + desc: 'پنیر/گوشت چرخ کرده/قارچ/ فلفل دلمه ای/ پیاز/ ارگانو..cheese/mince meat/mushroom/sweet pepper/onion/organo', + price: 534000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'میت اند مشروم(دو نفره).. Meat & mushroom ', + desc: 'پنیر/گوشت چرخ کرده/قارچ/ فلفل دلمه ای/ پیاز/ ارگانو..cheese/mince meat/mushroom/sweet pepper/onion/organo', + price: 794000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سالامی(تک نفره).. Salami ', + desc: 'پنیر/ســـالامی/ فلفـــل دلمـــه ای/ ارگانو/قارچ..cheese/salami/sweet pepper/olive/organo/mushroom', + price: 492000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سالامی(دو نفره).. Salami ', + desc: 'پنیر/ســـالامی/ فلفـــل دلمـــه ای/ارگانو/قارچ..cheese/salami/sweet pepper/olive/organo/mushroom', + price: 706000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'دمنوش سیـــــب و دارچیـن تک نفره Apple & Cinnamon', + desc: '', + price: 80000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715854518650.png"], +}, +{ + title: 'دمنوش سیـــــب و دارچیـن دو نفره Apple & Cinnamon', + desc: '', + price: 110000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715854419222.png"], +}, +{ + title: 'چای سبـز و لیمو تک نفره green tea& lemon', + desc: '', + price: 60000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715854304419.png"], +}, +{ + title: 'جای سبز و لیمو دو نفره green tea & lemon ', + desc: '', + price: 120000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715854245151.png"], +}, +{ + title: 'هارمونیا تک نفره harmonies ', + desc: '', + price: 65000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715854093204.png"], +}, +{ + title: 'هارمونیا دو نفره harmonies', + desc: ' گل گا‌و زبان سنبلطیب لیمو عمانی', + price: 100000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715854057726.png"], +}, +{ + title: 'اسپرســــــو دبـــــــــــل().. Double Espresso ', + desc: '', + price: 116000, + restaurantSlug: 'zhivan', + categoryTitle: 'قهوه ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715711371198.png"], +}, +{ + title: 'آمریکانــــــــــــــو.. Americano', + desc: '', + price: 130000, + restaurantSlug: 'zhivan', + categoryTitle: 'قهوه ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715711236185.png"], +}, +{ + title: 'مــــــــوکا(کلاسیک).. Mocha', + desc: 'شکلات / قهوه ', + price: 195000, + restaurantSlug: 'zhivan', + categoryTitle: 'قهوه ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715711203117.png"], +}, +{ + title: 'قهوه دمی سایفون.. Siphon coffee', + desc: 'قهوه اسپشیال ', + price: 275000, + restaurantSlug: 'zhivan', + categoryTitle: 'قهوه ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715711089472.png"], + discount: -1, +}, +{ + title: 'قهوه ترک.. Turkish coffee', + desc: '', + price: 130000, + restaurantSlug: 'zhivan', + categoryTitle: 'قهوه ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715711043900.png"], +}, +{ + title: 'شکلات داغ .. Hot Chocolate', + desc: '', + price: 160000, + restaurantSlug: 'zhivan', + categoryTitle: 'قهوه ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715711005802.png"], +}, +{ + title: 'اسموتی استوایی tropical smoothie ', + desc: '', + price: 195000, + restaurantSlug: 'zhivan', + categoryTitle: 'اسموتی و شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715855939026.png"], +}, +{ + title: ' اسموتی انبه mango smoothie ', + desc: '', + price: 180000, + restaurantSlug: 'zhivan', + categoryTitle: 'اسموتی و شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715855856058.png"], +}, +{ + title: 'اسموتی اپلایم apple & lime smoothie ', + desc: '', + price: 150000, + restaurantSlug: 'zhivan', + categoryTitle: 'اسموتی و شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715855800832.png"], +}, +{ + title: 'نوتلا شیک nutella miklshake', + desc: '', + price: 160000, + restaurantSlug: 'zhivan', + categoryTitle: 'اسموتی و شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715855573768.png"], +}, +{ + title: 'پینات شیک peanut milkshake', + desc: '', + price: 150000, + restaurantSlug: 'zhivan', + categoryTitle: 'اسموتی و شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715855464156.png"], +}, +{ + title: 'شوکو شیک chocolate milkshake', + desc: '', + price: 130000, + restaurantSlug: 'zhivan', + categoryTitle: 'اسموتی و شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715855404611.png"], +}, +{ + title: ' آفوگاتو.. Affogato', + desc: 'بستنی/اسپرسو ', + price: 183000, + restaurantSlug: 'zhivan', + categoryTitle: 'قهوه ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715710983514.png"], +}, +{ + title: 'وافل نوتلا waffle nutella', + desc: 'وافل/بستنی/دورچین میوه ایی روز', + price: 205000, + restaurantSlug: 'zhivan', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715807218334.png"], +}, +{ + title: 'اسپرسو سینگل', + desc: '', + price: 10000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپرسو عربیکا', + desc: '', + price: 12000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'دوپیو', + desc: '', + price: 14000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آمریکانو', + desc: '', + price: 11000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کافه لاته', + desc: '', + price: 17000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کاپوچینو', + desc: '', + price: 15000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'موکا', + desc: '', + price: 18000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'دوپیو عربیکا', + desc: '', + price: 17000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آفاگاتو', + desc: '', + price: 15000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپرسو رومانو ', + desc: '', + price: 14000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آیس کافی', + desc: '', + price: 14000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آیس لاته ', + desc: '', + price: 17000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آیس موکا ', + desc: '', + price: 18000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'فرنچ پرس ', + desc: '', + price: 15000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ترکیش کافی', + desc: '', + price: 12000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کن پانا ', + desc: '', + price: 14000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'قهوه دمی', + desc: '', + price: 20000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کلد برو', + desc: '', + price: 20000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 17000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 17000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شیر کاکائو', + desc: '', + price: 14000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شیر نسکافه', + desc: '', + price: 16000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ماسالا', + desc: '', + price: 16000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شیر عسل', + desc: '', + price: 14000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'رپنیک چاکلت ', + desc: '', + price: 17000, + restaurantSlug: 'sepanta', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شیک نوتلا ', + desc: '', + price: 30000, + restaurantSlug: 'sepanta', + categoryTitle: 'شیک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شیک موز ', + desc: '', + price: 25000, + restaurantSlug: 'sepanta', + categoryTitle: 'شیک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شیک توت فرنگی', + desc: '', + price: 25000, + restaurantSlug: 'sepanta', + categoryTitle: 'شیک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شیک کاپوچینو ', + desc: '', + price: 25000, + restaurantSlug: 'sepanta', + categoryTitle: 'شیک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شیک بادام زمینی ', + desc: '', + price: 30000, + restaurantSlug: 'sepanta', + categoryTitle: 'شیک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شیک انبه ', + desc: '', + price: 25000, + restaurantSlug: 'sepanta', + categoryTitle: 'شیک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شیک اسپرسو ', + desc: '', + price: 30000, + restaurantSlug: 'sepanta', + categoryTitle: 'شیک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شیک شکلات ', + desc: '', + price: 25000, + restaurantSlug: 'sepanta', + categoryTitle: 'شیک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کیک بستنی', + desc: '', + price: 30000, + restaurantSlug: 'sepanta', + categoryTitle: 'کیک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کیک شکلاتی ', + desc: '', + price: 14000, + restaurantSlug: 'sepanta', + categoryTitle: 'کیک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کیک موز گردو ', + desc: '', + price: 15000, + restaurantSlug: 'sepanta', + categoryTitle: 'کیک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شربت نعنا', + desc: '', + price: 18000, + restaurantSlug: 'sepanta', + categoryTitle: 'شربت ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شربت بیدمشک ', + desc: '', + price: 18000, + restaurantSlug: 'sepanta', + categoryTitle: 'شربت ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شربت زعفران', + desc: '', + price: 18000, + restaurantSlug: 'sepanta', + categoryTitle: 'شربت ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'فلامینگو', + desc: '', + price: 20000, + restaurantSlug: 'sepanta', + categoryTitle: 'شربت ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'موهیتو', + desc: '', + price: 20000, + restaurantSlug: 'sepanta', + categoryTitle: 'شربت ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'پاستیلی ', + desc: '', + price: 20000, + restaurantSlug: 'sepanta', + categoryTitle: 'شربت ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کرن لاین', + desc: '', + price: 2000, + restaurantSlug: 'sepanta', + categoryTitle: 'شربت ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آرامش', + desc: '', + price: 15000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ژالان', + desc: '', + price: 15000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'میکس بری', + desc: '', + price: 22000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آفرینش', + desc: '', + price: 22000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'رویا', + desc: '', + price: 15000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شهنوش', + desc: '', + price: 20000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'پرسیکا', + desc: '', + price: 15000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'لمونکس', + desc: '', + price: 20000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آنیل', + desc: '', + price: 20000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'دمنوش سال', + desc: '', + price: 22000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'دمنوش هارمونی', + desc: '', + price: 22000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'دمنوش پراگ ', + desc: '', + price: 22000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'چای پوئر', + desc: '', + price: 15000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'چای سبز', + desc: '', + price: 12000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'چای دارچین ', + desc: '', + price: 12000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'چای به لیمو ', + desc: '', + price: 12000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'چای زعفران ', + desc: '', + price: 12000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'چای مروارید چینی ', + desc: '', + price: 15000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'چای بلومینگ ', + desc: '', + price: 12000, + restaurantSlug: 'sepanta', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'تست فرانسه ', + desc: '', + price: 52000, + restaurantSlug: 'ocafe', + categoryTitle: 'صبحانه', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'املت فرانسه ', + desc: '', + price: 48000, + restaurantSlug: 'ocafe', + categoryTitle: 'صبحانه', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'بشقاب ایرانی', + desc: '', + price: 86000, + restaurantSlug: 'ocafe', + categoryTitle: 'صبحانه', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'بشقاب انگلیسی ', + desc: '', + price: 115000, + restaurantSlug: 'ocafe', + categoryTitle: 'صبحانه', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'املت قارچ ', + desc: '', + price: 48000, + restaurantSlug: 'ocafe', + categoryTitle: 'صبحانه', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'املت ایرانی ', + desc: '', + price: 43000, + restaurantSlug: 'ocafe', + categoryTitle: 'صبحانه', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'پاستا پنه چیکن آلفردو', + desc: '', + price: 72000, + restaurantSlug: 'ocafe', + categoryTitle: 'غذاهای اصلی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'پاستا پنه آلفردو با فیله گوساله ', + desc: '', + price: 82000, + restaurantSlug: 'ocafe', + categoryTitle: 'غذاهای اصلی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'برگر کلاسیک ', + desc: '', + price: 75000, + restaurantSlug: 'ocafe', + categoryTitle: 'غذاهای اصلی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'چیز برگر ', + desc: '', + price: 83000, + restaurantSlug: 'ocafe', + categoryTitle: 'غذاهای اصلی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'دابل چیز برگر ', + desc: '', + price: 118000, + restaurantSlug: 'ocafe', + categoryTitle: 'غذاهای اصلی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'چوریتسو برگر ', + desc: '', + price: 99000, + restaurantSlug: 'ocafe', + categoryTitle: 'غذاهای اصلی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'برگر با سس قارچ ', + desc: '', + price: 87000, + restaurantSlug: 'ocafe', + categoryTitle: 'غذاهای اصلی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'بشقاب استیک گوساله', + desc: '', + price: 128000, + restaurantSlug: 'ocafe', + categoryTitle: 'غذاهای اصلی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'بشقاب سبزیجات ', + desc: '', + price: 58000, + restaurantSlug: 'ocafe', + categoryTitle: 'پیش غذا و سالادها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'جینجر لایم ', + desc: '', + price: 43000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'موهیتو', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'رِد موهیتو ', + desc: '', + price: 45000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'لیموناد', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'خاکشیر بهارنارنج ', + desc: '', + price: 42000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'زعفران آلوئه ورا ', + desc: '', + price: 46000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'لیمو زعفران ', + desc: '', + price: 45000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'بیدمشک نسترن ', + desc: '', + price: 42000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'رز چینی ', + desc: '', + price: 49000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپرسو', + desc: '', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'موز کارامل ', + desc: '', + price: 43000, + restaurantSlug: 'ocafe', + categoryTitle: 'شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'موز شکلات ', + desc: '', + price: 46000, + restaurantSlug: 'ocafe', + categoryTitle: 'شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'شکلات فندق ', + desc: '', + price: 43000, + restaurantSlug: 'ocafe', + categoryTitle: 'شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'پسته زعفران اعلا ', + desc: '', + price: 52000, + restaurantSlug: 'ocafe', + categoryTitle: 'شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کیت کت ', + desc: '', + price: 60000, + restaurantSlug: 'ocafe', + categoryTitle: 'شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اوریو', + desc: '', + price: 48000, + restaurantSlug: 'ocafe', + categoryTitle: 'شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'نوتلا', + desc: '', + price: 46000, + restaurantSlug: 'ocafe', + categoryTitle: 'شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'لوتوس', + desc: '', + price: 53000, + restaurantSlug: 'ocafe', + categoryTitle: 'شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کره بادام زمینی ', + desc: '', + price: 49000, + restaurantSlug: 'ocafe', + categoryTitle: 'شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ویژه (نوتلا،کره بادام زمینی) ', + desc: '', + price: 60000, + restaurantSlug: 'ocafe', + categoryTitle: 'شیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپرسو ', + desc: '100%', + price: 31000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپرسو ', + desc: '80%', + price: 29000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپرسو ', + desc: '50%', + price: 27000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'امریکانو', + desc: '100%', + price: 32000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'امریکانو ', + desc: '80%', + price: 30000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'امریکانو ', + desc: '50%', + price: 28000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کُن هیلو', + desc: '100%', + price: 26000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کُن هیلو ', + desc: '80%', + price: 25000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کُن هیلو ', + desc: '50%', + price: 24000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'رومانو', + desc: '100%', + price: 34000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'رومانو ', + desc: '80%', + price: 32000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'رومانو ', + desc: '50%', + price: 31000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کوبانو', + desc: '100%', + price: 33000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کوبانو ', + desc: '80%', + price: 31000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کوبانو ', + desc: '50%', + price: 30000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ترونگ کافی ', + desc: '100%', + price: 50000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ترونگ کافی ', + desc: '80%', + price: 49000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ترونگ کافی ', + desc: '50%', + price: 48000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کورتادو', + desc: '100%', + price: 26000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کورتادو ', + desc: '80%', + price: 25000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کورتادو ', + desc: '50%', + price: 24000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ماکیاتو', + desc: '100%', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ماکیاتو ', + desc: '80%', + price: 37000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ماکیاتو ', + desc: '50%', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'موکاتلا', + desc: '100%', + price: 42000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'موکاتلا ', + desc: '80%', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'موکاتلا ', + desc: '50%', + price: 39000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'لاته ماکیاتو', + desc: '100%', + price: 41000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: ' لاته ماکیاتو ', + desc: '80%', + price: 39000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'لاته ماکیاتو ', + desc: '50%', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'بیچیرین', + desc: '100%', + price: 48000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: ' بیچیرین', + desc: '80%', + price: 47000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'بیچیرین ', + desc: '50%', + price: 46000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اورجینال آفوگاتو ', + desc: '100%', + price: 42000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: ' اورجینال آفوگاتو ', + desc: '80%', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اورجینال آفوگاتو ', + desc: '50%', + price: 39000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سفرون آفوگاتو ', + desc: '100%', + price: 45000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سفرون آفوگاتو ', + desc: '80%', + price: 44000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سفرون آفوگاتو ', + desc: '50%', + price: 43000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آیسد آمریکانو', + desc: '100%', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آیسد آمریکانو ', + desc: '80%', + price: 34000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آیسد آمریکانو ', + desc: '50%', + price: 32000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپرسو تونیک ', + desc: '100%', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپرسو تونیک ', + desc: '80%', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپرسو تونیک ', + desc: '50%', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آیسد لاته', + desc: '100%', + price: 43000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آیسد لاته ', + desc: '80%', + price: 42000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آیسد لاته ', + desc: '50%', + price: 41000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'والتون', + desc: '100%', + price: 28000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'هات چاکلت کلاسیک ', + desc: '', + price: 34000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'هات چاکلت ویژه ( شکلات ریئل) ', + desc: '', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'وایت چاکلت ', + desc: '', + price: 28000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'دارک چاکلت ', + desc: '', + price: 30000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'افترایت چاکلت ', + desc: '', + price: 30000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'هات فندقی ', + desc: '', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ماچا لاته', + desc: '', + price: 45000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ماسالا', + desc: '', + price: 35000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ماسالا رژیمی ', + desc: '', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ماسالا چاکلت ', + desc: '', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سلپ ترکی ', + desc: '', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم ملل ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: ' کمر باریک (شارژ نا محدود ) به همراه کوکی ', + desc: '', + price: 25000, + restaurantSlug: 'ocafe', + categoryTitle: 'چای های ایرانی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'مراکشی (شارژ رایگان )', + desc: '', + price: 30000, + restaurantSlug: 'ocafe', + categoryTitle: 'چای های ایرانی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: ' سیاه هل ', + desc: '', + price: 25000, + restaurantSlug: 'ocafe', + categoryTitle: 'چای های ایرانی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'هل و دارچین ', + desc: '', + price: 25000, + restaurantSlug: 'ocafe', + categoryTitle: 'چای های ایرانی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ویژه', + desc: '', + price: 30000, + restaurantSlug: 'ocafe', + categoryTitle: 'چای های ایرانی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'لیمو عسل ', + desc: '', + price: 30000, + restaurantSlug: 'ocafe', + categoryTitle: 'چای های ایرانی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'زعفران', + desc: '', + price: 33000, + restaurantSlug: 'ocafe', + categoryTitle: 'چای های ایرانی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: ' دودی ', + desc: '', + price: 28000, + restaurantSlug: 'ocafe', + categoryTitle: 'چای های ایرانی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سبز و دارچین ', + desc: '', + price: 28000, + restaurantSlug: 'ocafe', + categoryTitle: 'چای های ایرانی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کوهی و لوندر ', + desc: '', + price: 29000, + restaurantSlug: 'ocafe', + categoryTitle: 'چای های ایرانی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آرامبخش', + desc: ' (نا مناسب برای افراد با فشار خون پایین ،بانوان بارداری افراد دارای کم خونی)', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'دمنوش ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'گل گاوزبان', + desc: '(نا مناسب برای افراد با فشار خون پایین ،بانوان بارداری افراد دارای کم خونی)', + price: 34000, + restaurantSlug: 'ocafe', + categoryTitle: 'دمنوش ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'به لیمو بهار نارنج', + desc: '', + price: 34000, + restaurantSlug: 'ocafe', + categoryTitle: 'دمنوش ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ویژه ٱ کافه ', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'دمنوش ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'پرتقال گل محمدی ', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'دمنوش ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سیب و به ', + desc: '', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'دمنوش ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سیب و دارچین ', + desc: '', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'دمنوش ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سیب و وانیل ', + desc: '', + price: 37000, + restaurantSlug: 'ocafe', + categoryTitle: 'دمنوش ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'میکس بری', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'دمنوش ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ترک کلاسیک ', + desc: '', + price: 35000, + restaurantSlug: 'ocafe', + categoryTitle: 'قهوه های شنی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ترکیش وایت کافی ', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'قهوه های شنی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ترکیش وایت کافی هل و دارچین ', + desc: '', + price: 39000, + restaurantSlug: 'ocafe', + categoryTitle: 'قهوه های شنی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ترکیش وایت کافی زعفران ', + desc: '', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'قهوه های شنی ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپشیال', + desc: '', + price: 49000, + restaurantSlug: 'ocafe', + categoryTitle: 'کلد برو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'های کافئین ', + desc: '', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'کلد برو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سوپر کافئین ', + desc: '', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'کلد برو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپرسو +انرژی زا ', + desc: '', + price: 46000, + restaurantSlug: 'ocafe', + categoryTitle: 'کلد برو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کوکا+کلدبرو ', + desc: '', + price: 45000, + restaurantSlug: 'ocafe', + categoryTitle: 'کلد برو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'V_60', + desc: '', + price: 35000, + restaurantSlug: 'ocafe', + categoryTitle: 'متدهای موج سوم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'ایروپرس', + desc: '', + price: 33000, + restaurantSlug: 'ocafe', + categoryTitle: 'متدهای موج سوم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کِمکس ۱کاپ', + desc: '', + price: 33000, + restaurantSlug: 'ocafe', + categoryTitle: 'متدهای موج سوم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کِمکس ۳ کاپ ', + desc: '', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'متدهای موج سوم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سایفون', + desc: '', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'متدهای موج سوم', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سیروپ ', + desc: '', + price: 5000, + restaurantSlug: 'ocafe', + categoryTitle: 'آپشنال ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'عسل ', + desc: '', + price: 3000, + restaurantSlug: 'ocafe', + categoryTitle: 'آپشنال ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'نوتلا ', + desc: '', + price: 5000, + restaurantSlug: 'ocafe', + categoryTitle: 'آپشنال ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'پنیر اضافه ', + desc: '', + price: 15000, + restaurantSlug: 'ocafe', + categoryTitle: 'آپشنال ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کوکی شکلاتی', + desc: '', + price: 6000, + restaurantSlug: 'ocafe', + categoryTitle: 'کوکی و دسرها (آیتم ها به تعداد محدود در روز موجود می‌باشد )', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سالاد سزار گریل', + desc: '', + price: 95000, + restaurantSlug: 'ocafe', + categoryTitle: 'پیش غذا و سالادها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کوکا/فانتا', + desc: '', + price: 11000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'اسپرایت', + desc: '', + price: 11000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'دلستر(هلو/لیمو)', + desc: '', + price: 12000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'آب معدنی', + desc: '', + price: 6000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 500, + stockDefault: 500, + images: [], +}, +{ + title: 'لاته %100', + desc: '', + price: 39000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'لاته %80', + desc: '', + price: 37000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'لاته %50', + desc: '', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'کاپوچینو%100', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو%80', + desc: '', + price: 36000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو%50', + desc: '', + price: 35000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا %100', + desc: '', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا%80', + desc: '', + price: 39000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا%50', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته زفرون %100', + desc: '', + price: 40000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته زفرون %80', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته زفرون %50', + desc: '', + price: 37000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک دبل چاکلت', + desc: '', + price: 35000, + restaurantSlug: 'ocafe', + categoryTitle: 'کوکی و دسرها (آیتم ها به تعداد محدود در روز موجود می‌باشد )', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک هویج', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'کوکی و دسرها (آیتم ها به تعداد محدود در روز موجود می‌باشد )', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تومیتو پاستا', + desc: '', + price: 53000, + restaurantSlug: 'ocafe', + categoryTitle: 'غذاهای اصلی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دیزی کلاسیک', + desc: 'گوشت گوسفندی اعلاء ، دنبه ،‌ نخود ، لوبیا ، گوجه ، پیاز ادویه مخصوص ایزی دیزی', + price: 70000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دیزی تند', + desc: 'گوشت گوسفندی اعلاء ، دنبه ،‌ نخود ، لوبیا ، گوجه ، پیاز، فلفل چیلی ، قرمز ، پاپریکا، ادویه مخصوص ایزی دیزی', + price: 70000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'دیزی کشک', + desc: 'گوشت گوسفندی اعلاء ، دنبه ،‌ نخود ، لوبیا ، کشک محلی ساییده شده ، نعنا داغ، گل زرد ، بادمجان یا چغندر در صورت سفارش ، ادویه مخصوص ایزی دیزی', + price: 70000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قورمه بلوچی', + desc: 'گوشت راسته مزه دار شده در سس ماست ، پیاز ، ادویه های هندی', + price: 65000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوفته آبی', + desc: 'گوشت چرخ کرده مخلوط ، آرد نخودچی ،آرد سوخاری ،سبزیجات معطر ، رب گوجه، پیاز، ادویه مخصوص', + price: 50000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بریانی', + desc: 'گوشت قلوهگاه گوسفندی و ادویه مخصوص به همراه آب گوشت', + price: 45000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'حلیم بادمجان', + desc: 'بادمجان ، کوشت گردن ، لوبیا سفید ، کشک محلی ساییده شده ،پیاز داغ ، ادویه مخصوص', + price: 50000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میرزاقاسمی', + desc: 'بادمجان کبابی ، گوجه کبابی ، سیر ،پیاز داغ ، ادویه مخصوص', + price: 35000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کشک بادمجان', + desc: 'بادمجان ، کشک محلی ساییده شده ،پیاز داغ ، ادویه مخصوص', + price: 35000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بزقرمه', + desc: 'گوشت گوسفندی ، نخود ، لوبیا ، سیر ، کشک ساییده شده ، زعفران ، ادویه مخصوص', + price: 50000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سرداغی', + desc: 'گوشت گوسفندی چرخ شده ، عدس ، کنجد ، تخم خرفه ، پیاز ، کشک محلی ساییده شده ، سیر ، زعفران ، ادویه مخصوص', + price: 50000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سرداشی', + desc: 'گوشت مخلوط گوساله و گوسفند ، گوجه ، فلفل سبز ، ادویه مخصوص', + price: 65000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بورانی بادمجان', + desc: '', + price: 12000, + restaurantSlug: 'easydizy', + categoryTitle: 'چاشنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماست و خیار', + desc: '', + price: 12000, + restaurantSlug: 'easydizy', + categoryTitle: 'چاشنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'انواع ترشی', + desc: '', + price: 12000, + restaurantSlug: 'easydizy', + categoryTitle: 'چاشنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماست چکیده کوزه ای', + desc: '', + price: 5000, + restaurantSlug: 'easydizy', + categoryTitle: 'چاشنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نوشیدنی های گازدار', + desc: '', + price: 10000, + restaurantSlug: 'easydizy', + categoryTitle: 'نوشیدنی های خنک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دوغ کوچک', + desc: '', + price: 7000, + restaurantSlug: 'easydizy', + categoryTitle: 'نوشیدنی های خنک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دوغ بزرگ', + desc: '', + price: 15000, + restaurantSlug: 'easydizy', + categoryTitle: 'نوشیدنی های خنک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دوغ آبعلی', + desc: '', + price: 8000, + restaurantSlug: 'easydizy', + categoryTitle: 'نوشیدنی های خنک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دوغ محلی', + desc: '', + price: 15000, + restaurantSlug: 'easydizy', + categoryTitle: 'نوشیدنی های خنک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تاس کباب', + desc: 'گوشت گوسفندی ، پیاز ، سیب زمینی ، به ، هویج', + price: 75000, + restaurantSlug: 'easydizy', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنکیک', + desc: '', + price: 70000, + restaurantSlug: 'ocafe', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد آنتروکت مخصوص بوته', + desc: 'کاهو پیچ ، مغز گردو ، جعفری ،گوجه چری ،سس آنتروکت فرانسه', + price: 397000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729757443896.png"], +}, +{ + title: 'سالاد بیف', + desc: 'کاهورسمی کاهو فرانسه بنفش،سورل،روکولا،میکروگرین ،توت فرنگی،فیله گوساله،گردوکاراملی ،چیپس هویج،سس زرشک', + price: 535000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728303279211.png"], +}, +{ + title: 'سالاد سزار سوخاری', + desc: 'کاهو، مرغ سوخاری با پنیر ، نان کروتانز ، گوجه چری ، پنیر پارمسان ، سس سزار مخصوص', + price: 439000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758275074.png"], +}, +{ + title: 'سالاد سزار گریل ', + desc: 'کاهو، مرغ گریل شده ، نان کروتانز ، گوجه چری ، پنیر پارمسان ، سس سزار مخصوص', + price: 453000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729757571328.png"], +}, +{ + title: 'سیب زمینی با دیپ کافه دوپاری(new)', + desc: 'سیب زمینی وجز ، دیپ کافه دوپاری، پولبیبر، میکرو گرین، گرین اویل، پنیر پارمسان', + price: 259000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728331073193.png"], +}, +{ + title: 'چیکن اسپایسی(new)', + desc: 'سینه مرغ، سالاد روکولا، سس باربیکیو', + price: 323000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729757914158.png"], +}, +{ + title: 'سوپ روز', + desc: '', + price: 131000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729755496336.png"], +}, +{ + title: 'رست بیف', + desc: 'گوشت ریش شده، سس آیولی روی پیتزا، قارچ،زیتون اسلایس ، پنیر، سس مخصوص کف پیتزا', + price: 653000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756171799.png"], +}, +{ + title: 'چیکن نیویورکر', + desc: 'مرغ ماسالا، قارچ، فلفل دلمه، سس گوجه، دیپ پنیر', + price: 521000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756321754.png"], +}, +{ + title: 'اسپشیال', + desc: 'میکس ژامبون، سوسیس، قارچ، فلفل دلمه،زیتون', + price: 537000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413338758.png"], +}, +{ + title: 'کواترو استاجونی', + desc: 'پیتزا چهار فصل شامل: پپرونی، استیک، فیله مرغ و سبزیجات', + price: 585000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756471445.png"], +}, +{ + title: 'دیاولا (پپرونی)', + desc: 'پپرونی، سس مخصوص، موتزارلا', + price: 557000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758594732.png"], +}, +{ + title: 'وردورا (سبزیجات)', + desc: 'بادمجان، کدو، فلفل دلمه، پیار، قارچ، زیتون، اسفناج، سس گوجه', + price: 435000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758629130.png"], +}, +{ + title: 'کواترو فور ماجی(new)', + desc: 'خمیر ایتالیایی، سس مارینارا، پنیر میکس، ژامبون بوقلمون، گوجه گیلاسی، دیپ کافه دوپاری،اوریگانو، ریحان، قارچ', + price: 557000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728330406509.png"], +}, +{ + title: 'سوله میو', + desc: 'فیله گوساله، پیاز کاراملی، سس گوجه، خمیر مخصوص ایتالیایی', + price: 645000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729755229649.png"], +}, +{ + title: 'پولو', + desc: 'فیله مرغ، قارچ، گردو، سس پستوروی پیتزا، موتزارلا، دیپ پنیر، سس گوجه، پارمسان', + price: 561000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756261349.png"], +}, +{ + title: 'سیر و استیک', + desc: 'فیله مزه دار شده، قارچ ، زیتون، سس سیر روی پیتزا، پنیر', + price: 635000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756530319.png"], +}, +{ + title: 'مارگریتا', + desc: 'سس گوجه فرنگی، موتزارلا، گوجه خشک، بازیلیکو، پارمسان', + price: 407000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756652007.png"], +}, +{ + title: 'چیکن آلفردو', + desc: 'پنه ، فیله مرغ ، قارچ ، سس آلفردو', + price: 425000, + restaurantSlug: 'boote', + categoryTitle: 'پاستا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696945630526.png"], +}, +{ + title: 'فور چیز(new)', + desc: 'پنه، سس آلفردو، سس مارینارا، دیپ کافه دوپاری، پنیر پارمسان، پنیر خامه ای، سینه مرغ، چیپس بادمجان، ریحان ایتالیایی', + price: 429000, + restaurantSlug: 'boote', + categoryTitle: 'پاستا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728306961819.png"], +}, +{ + title: 'بیف آرابیاتا(new)', + desc: 'فتو چینی، سس آرابیاتا، پنیر پارمسان، فیله گوساله، میکرو گرین، چیپس بادمجان، هالوپینو(تند)', + price: 445000, + restaurantSlug: 'boote', + categoryTitle: 'پاستا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728306836636.png"], +}, +{ + title: 'کته استیک', + desc: 'فیله گوساله با برنج ایرانی ، گوجه فرنگی، سس سماق، پیاز کبابی، ساید سالاد', + price: 793000, + restaurantSlug: 'boote', + categoryTitle: 'ناهار بوته', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728330109953.png"], +}, +{ + title: 'کته سبزی با ماهی', + desc: 'برنج ایرانی، سیر، سبزی، ماهی قزل آلا سرخ شده', + price: 569000, + restaurantSlug: 'boote', + categoryTitle: 'ناهار بوته', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728301711620.png"], +}, +{ + title: 'کباب تابه ای', + desc: 'کته، گوشت گوساله، سس گوجه، چیپس هویج به همراه سس مخصوص', + price: 565000, + restaurantSlug: 'boote', + categoryTitle: 'ناهار بوته', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728300683426.png"], +}, +{ + title: 'فیله استیک(new)', + desc: 'فیله گوساله ، سیب زمینی تنوری، کافه دوپاری، هویج، چری دمی گلس', + price: 985000, + restaurantSlug: 'boote', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732099203488.png"], +}, +{ + title: 'چیکن استیک', + desc: 'سینه مرغ گریل شده ، پوره سیب زمینی ، سبزیجات ، سس پیازچه', + price: 575000, + restaurantSlug: 'boote', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728331458194.png"], +}, +{ + title: 'بیکن لاورز', + desc: 'برگر ۱۵۰ گرمی،بیکن ،پنبر،کاهو لوتوس ،گوجه فرنگی ،خیارشور، پیاز کاراملی، سس مخصوص، ساید سالاد و سیب زمینی (سرو سالن)', + price: 475000, + restaurantSlug: 'boote', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729754952099.png"], +}, +{ + title: 'کلاسیک برگر', + desc: 'نان برگر، برگر ۱۵۰ گرمی، گوجه فرنگی، کاهو لوتوس، پیازکاراملی، خیار، سس مخصوص، ساید سالاد و سیب زمینی(سرو سالن)', + price: 439000, + restaurantSlug: 'boote', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758171518.png"], +}, +{ + title: 'اسپرسو سینگل', + desc: '', + price: 20000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017478067.png"], +}, +{ + title: 'اسپرسو دبل', + desc: '', + price: 25000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017517499.png"], +}, +{ + title: 'آمریکانو', + desc: '', + price: 30000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017556188.png"], +}, +{ + title: 'ترک دمی', + desc: '', + price: 30000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017579932.png"], +}, +{ + title: 'لته', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017618831.png"], +}, +{ + title: 'موکا', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017667092.png"], +}, +{ + title: 'کارامل ماکیاتو', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017705127.png"], +}, +{ + title: 'قهوه یونانی', + desc: '', + price: 30000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017753302.png"], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017778152.png"], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017814380.png"], +}, +{ + title: 'شیر عسل دارچین', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017958798.png"], +}, +{ + title: 'سایفون ', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645017999993.png"], +}, +{ + title: 'چیکن پستو(new)', + desc: 'نان چیاباتا، سینه مرغ گریل، پستو ریحان، گوجه خشک، دیپ کافه دوپاری، ریحان ایتالیایی، سیب زمینی', + price: 419000, + restaurantSlug: 'boote', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728331220150.png"], +}, +{ + title: 'فرانسه', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018036872.png"], +}, +{ + title: 'آیس کافی', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018080298.png"], +}, +{ + title: 'آيس کارامل', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018126527.png"], +}, +{ + title: 'فراپاچینو', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018189433.png"], +}, +{ + title: 'هویج گلاسه', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018225650.png"], +}, +{ + title: 'آناناس گلاسه', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گرین لایف', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018352272.png"], +}, +{ + title: 'پولد بیف(new)', + desc: 'پولد بیف، قارچ، سس چری دنی گلس ، سیب زمینی، نان چیاباتا، روکولا، سس کوکتل', + price: 565000, + restaurantSlug: 'boote', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728331686617.png"], +}, +{ + title: 'تیرامیسو', + desc: 'پنیر خامه ای،خامه،لیدی فینگر', + price: 165000, + restaurantSlug: 'boote', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729759180680.png"], +}, +{ + title: 'وافل', + desc: 'دو عدد وافل،دورچین میوه', + price: 295000, + restaurantSlug: 'boote', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756586757.png"], +}, +{ + title: 'بستنی مخصوص', + desc: '', + price: 185000, + restaurantSlug: 'boote', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729759056825.png"], +}, +{ + title: 'سایفون ۱ کاپ', + desc: 'در دهه سی قرن هجدهم میلادی توسط لوف در آلمان طراحی شد،وسیله ای است که به کمک خلاء هوا در دو مخزن که روی هم سوار می شوند کار می کند', + price: 165000, + restaurantSlug: 'boote', + categoryTitle: 'دمی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374457341.png"], +}, +{ + title: 'سایفون ۲ کاپ', + desc: 'در دهه سی قرن هجدهم میلادی توسط لوف در آلمان طراحی شد،وسیله ای است که به کمک خلاء هوا در دو مخزن که روی هم سوار می شوند کار می کند', + price: 175000, + restaurantSlug: 'boote', + categoryTitle: 'دمی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374458345.png"], +}, +{ + title: 'کمکس ۲ کاپ ', + desc: 'در سال ۱۹۴ توسط پیتر شلمبوم اختراع شد،در این روش قهوه داخل فیلتر ریخته شده و آب جوش از روی آن عبور کرده و قهوه دم کشیده داخل ظرف شیشه ای می ریزد', + price: 175000, + restaurantSlug: 'boote', + categoryTitle: 'دمی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374428131.png"], +}, +{ + title: 'کمکس ۴ کاپ', + desc: 'در سال ۱۹۴ توسط پیتر شلمبوم اختراع شد،در این روش قهوه داخل فیلتر ریخته شده و آب جوش از روی آن عبور کرده و قهوه دم کشیده داخل ظرف شیشه ای می ریزد', + price: 185000, + restaurantSlug: 'boote', + categoryTitle: 'دمی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374433041.png"], +}, +{ + title: 'ایروپرس', + desc: 'توسط اروبی به مدریت آلن آدلر در سال ۲۰۰۵ اختراع شد، در این روش قهوه آسیاب شده همراه آب داغ داخل سیلندر ریخته شده و با فشار سرنگ از فیلتر عبور داده می شود', + price: 169000, + restaurantSlug: 'boote', + categoryTitle: 'دمی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729759018128.png"], +}, +{ + title: 'وی۶۰', + desc: 'کارکردی مشابه کمکس داشته با این تفاوت که طعمی غنی تر نسبت به کمکس دارد', + price: 169000, + restaurantSlug: 'boote', + categoryTitle: 'دمی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374474365.png"], +}, +{ + title: 'سان شاین', + desc: '', + price: 60000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018390978.png"], +}, +{ + title: 'موهیتو', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018438471.png"], +}, +{ + title: 'آفاگاتو', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018483060.png"], +}, +{ + title: 'کاپرینا', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018530231.png"], +}, +{ + title: 'لیموناد مخصوص', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018603413.png"], +}, +{ + title: 'فروت رول', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018627969.png"], +}, +{ + title: 'واترملون', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018661219.png"], +}, +{ + title: 'چیپس و پنیر', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193702676.png"], +}, +{ + title: 'چیپس و پنیر ۲ نفره', + desc: '', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193668341.png"], +}, +{ + title: 'سیب زمینی', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193637610.png"], +}, +{ + title: 'سیب زمینی با پنیر', + desc: '', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193598058.png"], +}, +{ + title: 'سیب زمینی با پنیر دو نفره', + desc: '', + price: 50000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193558686.png"], +}, +{ + title: 'سیب زمینی ویژه', + desc: '', + price: 60000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193521047.png"], +}, +{ + title: 'سیب زمینی ویژه دو نفره', + desc: '', + price: 70000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193485198.png"], +}, +{ + title: 'سیب زمینی هات داگ', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی ژامبون', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193428118.png"], +}, +{ + title: 'شنیسل مرغ', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193401471.png"], +}, +{ + title: 'اسنک', + desc: 'سوسیس، پنیر، قارچ، فلفل دلمه، سس کچاپ و فرانسه', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018726223.png"], +}, +{ + title: 'کیک شکلات', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018748768.png"], +}, +{ + title: 'توت فرنگی', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645018704529.png"], +}, +{ + title: 'شاتوت', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193275929.png"], +}, +{ + title: 'سنتی', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193187571.png"], +}, +{ + title: 'شکلات', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193106675.png"], +}, +{ + title: 'مخلوط', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193071691.png"], +}, +{ + title: 'معجون', + desc: '', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193040976.png"], +}, +{ + title: 'بستنی ایتالیایی', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645193010587.png"], +}, +{ + title: 'قهوه', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192964012.png"], +}, +{ + title: 'نوتلا', + desc: '', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192930977.png"], +}, +{ + title: 'وانیل', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192904361.png"], +}, +{ + title: 'شاتوت ', + desc: '', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192850800.png"], +}, +{ + title: 'توت فرنگی ', + desc: '', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192828049.png"], +}, +{ + title: 'نوتلا ', + desc: '', + price: 60000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192677552.png"], +}, +{ + title: 'شکلات ', + desc: '', + price: 50000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192651340.png"], +}, +{ + title: 'شکلات موز', + desc: '', + price: 60000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192568861.png"], +}, +{ + title: 'کارامل', + desc: '', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192541740.png"], +}, +{ + title: 'M&M', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192458431.png"], +}, +{ + title: 'وانیل ', + desc: '', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192380780.png"], +}, +{ + title: 'نارگیل', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192357817.png"], +}, +{ + title: 'بادام زمینی', + desc: '', + price: 60000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192328640.png"], +}, +{ + title: 'معجون ', + desc: '', + price: 60000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192304289.png"], +}, +{ + title: 'قهوه ', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192242107.png"], +}, +{ + title: 'دارچین', + desc: '', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1645192150150.png"], +}, +{ + title: 'استیک فیله مینیون', + desc: 'فیله گوساله،سبزیجات بخارپز طعم دار شده،پوره سیب زمینی،سس قارچ', + price: 450000, + restaurantSlug: 'foodcourt', + categoryTitle: 'استیک ها', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674240746571.png"], +}, +{ + title: 'استیک باربی کیو', + desc: 'فیله گوساله دودی،سبزیجات بخارپز طعم دار شده،پوره سیب زمینی،سس دودی دست ساز', + price: 460000, + restaurantSlug: 'foodcourt', + categoryTitle: 'استیک ها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کته استیک', + desc: 'فیله گوساله،شنسل مرغ طعم دار شد۰،سبزیجات بخارپز،پوره سیب زمینی،سس قارچ،سس هاووس،برنج کته', + price: 490000, + restaurantSlug: 'foodcourt', + categoryTitle: 'استیک ها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن استیک', + desc: 'شنسل مرغ گریل شده،سبزیجات بخارپز طعم دار شده،پوره سیب زمینی،سس قارچ', + price: 335000, + restaurantSlug: 'foodcourt', + categoryTitle: 'استیک ها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر کلاسیک', + desc: 'گوشت خالص،گوجه،خیارشور،کاهو،سیب زمینی سرخ شده', + price: 175000, + restaurantSlug: 'foodcourt', + categoryTitle: 'برگرها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر هاوایی', + desc: 'گوشت خالص،گوجه،خیارشور،کاهو،پنیر گودا،ژامبون گوشت،آناناس تفت داده شده،پنیر کاراملی،سس دودی،سیب زمینی سرخ شده', + price: 210000, + restaurantSlug: 'foodcourt', + categoryTitle: 'برگرها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جورجیا برگر', + desc: 'گوشت خالص،شنسل مرغ سوخاری،پنیر گودا،پنیر کاراملی،کاهو،خیارشور،گوجه،سس مخصوص دودی', + price: 220000, + restaurantSlug: 'foodcourt', + categoryTitle: 'برگرها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز برگر', + desc: 'گوشت خالص،پنیر گودا،پنیر کاراملی،کاهو،خیارشو،گوجه،سیب زمینی سرخ شده', + price: 205000, + restaurantSlug: 'foodcourt', + categoryTitle: 'برگرها', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674240800071.png"], +}, +{ + title: 'دبل برگر', + desc: '۲ تیکه گوشن خالص،پنیر گودا،پنیر کاراملی،گوجه،خیارشور،کاهو،سس دودی،سیب زمینی سرخ شده', + price: 235000, + restaurantSlug: 'foodcourt', + categoryTitle: 'برگرها', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674240855648.png"], +}, +{ + title: 'شف برگر', + desc: '۲ تیکه گوشت خالص،شنسل مرغ سوخاری،مغزران رشته رشته شده،دو عدد پنیر گودا،گوجه،خیارشور،کاهو،پنیر کاراملی،سس دودی،سیب زمینی سرخ شده', + price: 285000, + restaurantSlug: 'foodcourt', + categoryTitle: 'برگرها', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674241006305.png"], +}, +{ + title: 'کوبیده', + desc: '۲ سیخ کوبیده و دورچین', + price: 195000, + restaurantSlug: 'foodcourt', + categoryTitle: 'ایرانی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جوجه کلاسیک', + desc: 'سینه فیله تازه مرینت شده با زعفران ناب ایرانی،سس مخصوص و دورچین', + price: 195000, + restaurantSlug: 'foodcourt', + categoryTitle: 'ایرانی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جوجه ترش گیلانی', + desc: 'سینه فیله تازه مرینت شده با سس مخصوص و دورچین', + price: 220000, + restaurantSlug: 'foodcourt', + categoryTitle: 'ایرانی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میکس وزیری', + desc: '۱سیخ جوجه کلاسیک،۱سیخ کوبیده و دورچین', + price: 260000, + restaurantSlug: 'foodcourt', + categoryTitle: 'ایرانی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کباب برگ مجلسی', + desc: 'فیله گوساله تازه و دورچین', + price: 320000, + restaurantSlug: 'foodcourt', + categoryTitle: 'ایرانی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کباب سلطانی مخصوص', + desc: 'یک سیخ کباب برگ به همراه یک سیخ کوبیده و دورچین', + price: 350000, + restaurantSlug: 'foodcourt', + categoryTitle: 'ایرانی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بختیاری', + desc: '۱/۲ چنجه،۱/۲جوجه کلاسیک و دورچین', + price: 340000, + restaurantSlug: 'foodcourt', + categoryTitle: 'ایرانی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فراپاچینو', + desc: '', + price: 46000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های سرد بر پایه اسپرسو ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار گریل', + desc: 'کاهو،مرغ گریل شده،کروئانز،گوجه چری،پنیر پارمسان،سس سزار مخصوص،سالاد سزار یک رول', + price: 200000, + restaurantSlug: 'foodcourt', + categoryTitle: 'سالاد.', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674240050149.png"], +}, +{ + title: 'سالاد سزار یک رول', + desc: 'کاهو،مرغ سوخاری با پنیر،نان کروتانز،گوجه چری،پنیر پارمسان،سس سزار مخصوص', + price: 200000, + restaurantSlug: 'foodcourt', + categoryTitle: 'سالاد.', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماست چکیده موسیر ', + desc: '', + price: 40000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیش غذا.', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'زیتون پرورده', + desc: '', + price: 55000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیش غذا.', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نوشابه کوکا ', + desc: '', + price: 19500, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی ها ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نوشابه فانتا', + desc: '', + price: 19500, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی ها ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نوشابه اسپرایت', + desc: '', + price: 19500, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی ها ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نوشابه زیرو', + desc: '', + price: 19500, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی ها ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دلستر (لیمو)', + desc: '', + price: 20000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی ها ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دلستر استوایی ', + desc: '', + price: 20000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی ها ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دلستر هلو', + desc: '', + price: 20000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی ها ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دلستر کلاسیک ', + desc: '', + price: 20000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی ها ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دوغ محلی', + desc: 'پارچی', + price: 55000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی ها ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکاورده (medium)', + desc: 'سس پستو،ترکیبی از بهترین پنیرها،،شنسل مرغ،قارچ،فلفل دلمه رنگی،زیتون سیاه', + price: 275000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکاورده (large)', + desc: 'سس پستو،ترکیبی از بهترین پنیرها،،شنسل مرغ،قارچ،فلفل دلمه رنگی،زیتون سیاه', + price: 325000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپیشیال(medium)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،ژامبون مرغ و گوشت۹۰٪،کوکتل،یارچ،فلفل دلمه رنگی و ذرت', + price: 250000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا آمریکایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674240678726.png"], +}, +{ + title: 'اسپیشیال(large)', + desc: 'سس ناپولتین،ترکیبی از بهترین پنیرها،ژامبون مرغ و گوشت۹۰٪،،کوکتل،قارچ،فلفل دلمه رنگی و ذرت', + price: 340000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا آمریکایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هالو پیتزا (medium)(hot)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،پپرونی،قارچ،فلفل هالو‌پینو', + price: 230000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا آمریکایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هالو پیتزا(large)(hot)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،پپرونی،قارچ،فلفل هالوپینو', + price: 330000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا آمریکایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کانتونی (medium)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،مرغ فرآوری شده دودی،قارچ،فلفل دلمه رنگی،زیتون سیاه', + price: 230000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا آمریکایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کانتونی (large)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،مرغ فرآوری شده ،قارچ،فلفل دلمه رنگی،زیتون سیاه', + price: 355000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا آمریکایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا سبزیجات (large)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،سبزیجان فصل،هویج کریسپی', + price: 225000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا آمریکایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سبزیجات(medium)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،سبزیجات فصل،هویج کریسپی', + price: 150000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا آمریکایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیرو استیک(medium)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،راسته گوساله طعم دارشده', + price: 265000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیرواستبک (large)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،راسته گوساله طعم دارشده', + price: 330000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیسیلی(medium)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،شنسل مرغ طعم دار شده،قارچ ،فلفل هالوپینو،فلفل دلمه رنگی ،زیتون سیاه', + price: 260000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیسیلی (large)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها، شنسل مرغ طعم دار شده،قارچ،فلفل هالوپینو،،فلفل دلمه رنگی،زیتون سیاه', + price: 320000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پپرونی(medium)', + desc: ' سس ناپولیتن،ترکیبی از بهترین پنیرها،پپرونی مرغوب،هالوپینو', + price: 235000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پپرونی(large)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،پپرونی مرغوب،هالوپینو', + price: 295000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فورسیزن(medium)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،۱/۴راسته گوساله،۱/۴شنسل مرغ،۱/۴ژامبون،فلفل دلمه رنگی،زیتون سیاه', + price: 285000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674240292136.png"], +}, +{ + title: 'فورسیزن (large)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،۱/۴راسته گوساله،۱/۴شنسل مرغ،۱/۴ژامبون،فلفل دلمه رنگی،زیتون سیاه', + price: 375000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674240090739.png"], +}, +{ + title: 'پنه چیکن آلفردو', + desc: 'فیله مرغ،پنه،پیازچه،قارچ،سس آلفردو،پنیر پارمسان', + price: 210000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پاستاها', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674240144984.png"], +}, +{ + title: 'پنه پستو', + desc: 'فیله مرغ،پنه،پیازچه،قارچ،سس پستو ،پنیر پارمسان', + price: 220000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پاستاها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک اسپانیایی', + desc: 'فیله کوساله تفت داده شده،فیله مرغ،فلفل دلمه،پیاز ژولین،قارچ،سس مخصوص،نان بروچن', + price: 260000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پاستاها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیف استراگانف', + desc: 'فیله گوساله،پیازچه،قارچ،سس آلفردو،سیب زمینی بیفی،پنیر پارمسان', + price: 280000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پاستاها', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674240174016.png"], +}, +{ + title: 'پنه بیف آلفردو', + desc: 'فیله گوساله،پیازچه،قارچ،سس آلفردو،گوجه گیلاسی تفت داده شده،پوره لبو', + price: 235000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پاستاها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مارگریتا(medium)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،گوجه اسلایس ،برگ رییحان', + price: 155000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مارگریتا(large)', + desc: 'سس ناپولیتن،ترکیبی از بهترین پنیرها،گوجه اسلایس ، برگ ریحان', + price: 169000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ریسترتو کامرشیال', + desc: '', + price: 29000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1650113391211.png"], +}, +{ + title: ' ریسترتو اسپشیال', + desc: '', + price: 39000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1650113429909.png"], +}, +{ + title: 'اسپرسو کامرشیال', + desc: '', + price: 29000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649615265281.png"], +}, +{ + title: 'اسپرسو اسپشیال', + desc: '', + price: 39000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649615208910.png"], +}, +{ + title: 'لونگو کامرشیال', + desc: '60 میلی لیتر عصاره‌ی قهوه‌ با ترکیب کامرشیال', + price: 29000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1650113477508.png"], +}, +{ + title: 'لونگو اسپشیال', + desc: '60 میلی لیتر عصاره‌ی قهوه‌ با ترکیب اسپشیال', + price: 39000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1650113526078.png"], +}, +{ + title: 'اسپرسو کومپانو', + desc: '310000', + price: 31000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649615098733.png"], +}, +{ + title: 'اسپرسو پیکولو', + desc: '', + price: 30000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649615060222.png"], +}, +{ + title: 'مگنوم پرسو', + desc: '', + price: 44000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'أفاگاتو', + desc: '', + price: 35000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو کامرشیال', + desc: '', + price: 35000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649614627379.png"], +}, +{ + title: ' آمریکانو اسپشیال', + desc: '', + price: 45000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649614589917.png"], +}, +{ + title: 'فلت وایت', + desc: '', + price: 45000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649614568101.png"], +}, +{ + title: 'کاپوچینو', + desc: '', + price: 45000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649614545113.png"], +}, +{ + title: 'لاته', + desc: '', + price: 49000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649614515360.png"], +}, +{ + title: 'لاته + سیروپ(کارامل ، فندوق ، وانیل)', + desc: 'سیروپ‌های انتخابی: ۱.وانیل ۲.کارامل ۳.شکلات ۴.فندق ۵.کوکی ۶.شکلات سفید ۷.آیریش', + price: 53000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649614477212.png"], +}, +{ + title: 'کوکی لاته', + desc: '', + price: 55000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پینات باتر لاته', + desc: '', + price: 55000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649614316580.png"], +}, +{ + title: 'چاکلت کوکی لاته', + desc: '', + price: 68000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لوتوس لاته', + desc: '', + price: 63000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649614283859.png"], +}, +{ + title: 'لاته کارامل نمکی', + desc: '', + price: 55000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649614243191.png"], +}, +{ + title: 'موکا فندوقی', + desc: '', + price: 52000, + restaurantSlug: 'blacksugar', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613980682.png"], +}, +{ + title: 'پن شکلات', + desc: '', + price: 35000, + restaurantSlug: 'blacksugar', + categoryTitle: ' میان وعده و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613901192.png"], +}, +{ + title: 'کروسان ساده', + desc: '', + price: 33000, + restaurantSlug: 'blacksugar', + categoryTitle: ' میان وعده و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613856633.png"], +}, +{ + title: 'کروسان بادام', + desc: '', + price: 42000, + restaurantSlug: 'blacksugar', + categoryTitle: ' میان وعده و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613797467.png"], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 40000, + restaurantSlug: 'blacksugar', + categoryTitle: ' نوشیدنی گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613765932.png"], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 39000, + restaurantSlug: 'blacksugar', + categoryTitle: ' نوشیدنی گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613723673.png"], +}, +{ + title: 'مارشمالو چاکلت', + desc: '', + price: 48000, + restaurantSlug: 'blacksugar', + categoryTitle: ' نوشیدنی گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613702548.png"], +}, +{ + title: 'ماسالا', + desc: '', + price: 39000, + restaurantSlug: 'blacksugar', + categoryTitle: ' نوشیدنی گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613676302.png"], +}, +{ + title: 'سیگنیچر شکر سیاه', + desc: '', + price: 55000, + restaurantSlug: 'blacksugar', + categoryTitle: ' نوشیدنی گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کلدبرو', + desc: 'قهوه‌ی سرد عصاره‌گیری شده؛ در طعم‌های لیمو، بلوبری، آیریش و مالت', + price: 43000, + restaurantSlug: 'blacksugar', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613589300.png"], +}, +{ + title: 'نیتروژن کافی', + desc: '', + price: 45000, + restaurantSlug: 'blacksugar', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس آمریکانو', + desc: '', + price: 38000, + restaurantSlug: 'blacksugar', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613510872.png"], +}, +{ + title: 'آیس لاته', + desc: '', + price: 45000, + restaurantSlug: 'blacksugar', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613478658.png"], +}, +{ + title: 'آیس لاته+ سیروپ', + desc: '', + price: 49000, + restaurantSlug: 'blacksugar', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613453945.png"], +}, +{ + title: 'سیگنیچر شکر سیاه ', + desc: '', + price: 60000, + restaurantSlug: 'blacksugar', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'V60', + desc: '', + price: 43000, + restaurantSlug: 'blacksugar', + categoryTitle: ' قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613422061.png"], +}, +{ + title: 'جینا', + desc: '', + price: 45000, + restaurantSlug: 'blacksugar', + categoryTitle: ' قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613398668.png"], +}, +{ + title: 'کمکس', + desc: '', + price: 48000, + restaurantSlug: 'blacksugar', + categoryTitle: ' قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613372112.png"], +}, +{ + title: 'فرنچ پرس', + desc: '', + price: 40000, + restaurantSlug: 'blacksugar', + categoryTitle: ' قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1649613348050.png"], +}, +{ + title: 'فلت وایت %100', + desc: '', + price: 30000, + restaurantSlug: 'ocafe', + categoryTitle: 'نوشیدنی های گرم بر پایه اسپرسو ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای نعنا', + desc: '', + price: 28000, + restaurantSlug: 'ocafe', + categoryTitle: 'چای های ایرانی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن برگر', + desc: 'شنسل مرغ گریل شده،گوجه،خیارشور،کاهو،پنیرگودا،سس دودی،سیب زمینی سرخ شده', + price: 175000, + restaurantSlug: 'foodcourt', + categoryTitle: 'برگرها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اوشن', + desc: '', + price: 48000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هالومی چیز برگر', + desc: '', + price: 96000, + restaurantSlug: 'ocafe', + categoryTitle: 'غذاهای اصلی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کته برنج زعفرانی', + desc: '', + price: 49000, + restaurantSlug: 'foodcourt', + categoryTitle: 'ایرانی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی سرخ شده', + desc: '', + price: 130000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیش غذا.', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674240260019.png"], +}, +{ + title: 'اسکوپ بستنی', + desc: '', + price: 50000, + restaurantSlug: 'foodcourt', + categoryTitle: 'میلک شیک', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی سرخ کرده', + desc: '', + price: 60000, + restaurantSlug: 'Piano', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی مخصوص پیانو', + desc: 'سیب زمینی ، ژامبون ، قارچ ، ذرت', + price: 110000, + restaurantSlug: 'Piano', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قارچ سوخاری', + desc: 'دوازده عدد قارچ سوخاری شده', + price: 78000, + restaurantSlug: 'Piano', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیاز حلقه ای', + desc: 'شش عدد پیاز حلقه ای', + price: 60000, + restaurantSlug: 'Piano', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نان سیر', + desc: 'نان طعم دار شده با کره و سیر تازه', + price: 80000, + restaurantSlug: 'Piano', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رول پنیری', + desc: 'نام طعم دار شده، پنیر چدار، ژامبون', + price: 75000, + restaurantSlug: 'Piano', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت فرایز', + desc: 'سیب زمینی ، سس قارچ', + price: 90000, + restaurantSlug: 'Piano', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: ' برگر ایتالیایی', + desc: 'برگر 200 گرمی ، سیب زمینی چدار، پنیر، قارچ، ژامبون', + price: 190000, + restaurantSlug: 'Piano', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ مخصوص پیانو', + desc: 'ژامبون ، هات داگ ، قارچ ، پنیر', + price: 160000, + restaurantSlug: 'Piano', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فیله مرغ', + desc: 'دوعدد فیله سوخاری ، گوجه ، کاهو ، پنیر ورقه ای', + price: 140000, + restaurantSlug: 'Piano', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مایتی برگر', + desc: 'یکی عدد زینگر، یک عدد برگر، دولایه پنیر ورقه ای ، قارچ', + price: 200000, + restaurantSlug: 'Piano', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رستبیف', + desc: 'فیله گوساله، پنیر پیتزا، پنیر ورقه ای', + price: 180000, + restaurantSlug: 'Piano', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'استیک', + desc: 'فیله گوساله،قارچ ، پنیر ورقه ای', + price: 155000, + restaurantSlug: 'Piano', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ژامبون تنوری', + desc: 'ژامبون سه لایه، پنیر پیتزا، قارچ ، کاهو، گوجه', + price: 95000, + restaurantSlug: 'Piano', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات داگ تنوری', + desc: 'هات داگ، پنیر، کاهو، گوجه', + price: 95000, + restaurantSlug: 'Piano', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر تک', + desc: 'یک عدد برگر، کاهو ، گوجه ، پنیر ورقه ای، خیارشور', + price: 145000, + restaurantSlug: 'Piano', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر دبل', + desc: 'دو عدد برگر150 گرمی، قارچ ، پنیر، کاهو ، گوجه ، خیارشور', + price: 200000, + restaurantSlug: 'Piano', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مخصوص پیانو', + desc: 'ژامبون گوشت ۸۰٪، فیله مرغ، فلفل، زیتون، قارچ', + price: 205000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مخلوط', + desc: 'ژامبون گوشت، هات داگ ، فلفل دلمه، قارچ', + price: 175000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا رست بیف', + desc: 'گوشت گوساله، پنیر ورقه ای، فلفل دلمه، قارچ', + price: 235000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گریل چیکن', + desc: 'فیله مرغ، فلفل دلمه ، قارچ', + price: 200000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'یونانی', + desc: 'گوشت چرخ کرده طعم دار شده، گوجه ، قارچ', + price: 200000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سوپریم', + desc: 'ژامبون گوشت، ژامبون مرغ، قارچ', + price: 173000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ویکتوریا', + desc: 'ژامبون مرغ، فلفل دلمه ای، قارچ', + price: 165000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پپرونی', + desc: 'ژامبون پپرونی، قارچ ، فلفل دلمه ای', + price: 170000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سبزیجات', + desc: 'زیتون، ذرت، قارچ، گوجه ، فلفل دلمه', + price: 150000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کالزیا', + desc: 'دولایه خمیر ، ژامبون گوشت ، فیله مرغ، قارچ ، پنیر ورقه ای', + price: 210000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیده گوشت', + desc: 'خمیر مخصوص پیده ، گوشت گوساله، پنیر، گوجه، فلفل چارلستون', + price: 175000, + restaurantSlug: 'Piano', + categoryTitle: 'پیده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیده مرغ', + desc: 'خمیر مخصوص پیده، سینه مرغ، پنیر ، گوجه ، فلفل چارلستون', + price: 170000, + restaurantSlug: 'Piano', + categoryTitle: 'پیده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیده قارچ و بادمجان', + desc: 'خمیر مخصوص پیده، قارچ و بادمجان ، پنیر، گوجه ، فلفل چارلستون', + price: 145000, + restaurantSlug: 'Piano', + categoryTitle: 'پیده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بشقاب برگر', + desc: 'خمیر مخصوص،۱ لایه ژامبون ، پ عدد برگر مزه دار شده ، پنیر ، سیب زمینی سرخ شده', + price: 195000, + restaurantSlug: 'Piano', + categoryTitle: 'بشقاب', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بشقاب رست بیف', + desc: 'خمیر مخصوص، گوشت گوساله، قارچ مزه دار شده ، پنیر، سیب زمینی سرخ شده', + price: 205000, + restaurantSlug: 'Piano', + categoryTitle: 'بشقاب', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بشقاب ژامبون', + desc: 'خمیر مخصوص، ژامبون گوشت، قارچ مزه دار شده ، پنیر، سیب زمینی سرخ شده', + price: 150000, + restaurantSlug: 'Piano', + categoryTitle: 'بشقاب', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بشقاب سبزیجات', + desc: 'خمیر مخصوص، انواع سبزیجات، سس مخصوص ، پنیر، سیب زمینی سرخ شده', + price: 140000, + restaurantSlug: 'Piano', + categoryTitle: 'بشقاب', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سه تیکه (نرمال / اسپایسی)', + desc: 'سه عدد فیله مرغ سوخاری ، سیب زمینی ، سالاد مکزیکی', + price: 185000, + restaurantSlug: 'Piano', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنج تیکه (نرمال / اسپایسی)', + desc: 'پنج عدد فیله مرغ سوخاری ، سیب زمینی ، سالاد مکزیکی', + price: 245000, + restaurantSlug: 'Piano', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیزا پیزا', + desc: 'دو عدد شنیسل مرغ تند ، پپرونی ، فلفل دلمه ای ، پنیر', + price: 205000, + restaurantSlug: 'Piano', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دبل دان', + desc: 'دو عدد شنیسل مرغ تند ، پنیر زرد ، قارچ ، ژامبون', + price: 195000, + restaurantSlug: 'Piano', + categoryTitle: 'سوخاری', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'چیکن بنیه', + desc: 'چهار عدد فیله مرغ ، سیب زمینی ، سالاد مکزیکی ، سس بنیه', + price: 205000, + restaurantSlug: 'Piano', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میگو بنیه', + desc: '120 گرم میگو ، سیب زمینی ، کاهو ، سالاد مکزیکی ، سس بنیه', + price: 175000, + restaurantSlug: 'Piano', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میگو سوخاری', + desc: '۱۳۰ گرم میگو ، سیب زمینی ، کاهو ، سالاد مکزیکی', + price: 170000, + restaurantSlug: 'Piano', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیسکا', + desc: 'کاهو ، فیله گوساله ، خیار ، زیتون ، ذرت ، گوجه گیلاسی ، بالزامیک', + price: 165000, + restaurantSlug: 'Piano', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سزار ( سوخاری )', + desc: 'کاهو، نان تست ، فیله مرغ ، گوجه گیلاسی، زیتون', + price: 160000, + restaurantSlug: 'Piano', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سزار ( گریل )', + desc: 'کاهو، نان تست ، فیله مرغ ، گوجه گیلاسی، زیتون', + price: 150000, + restaurantSlug: 'Piano', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مخصوص', + desc: 'کاهو ، گوجه ، زیتون ، قارچ', + price: 55000, + restaurantSlug: 'Piano', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایتالیایی', + desc: 'پاستا، ژامبون ، نخود فرنگی', + price: 45000, + restaurantSlug: 'Piano', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فصل', + desc: 'کاهو ، ژامبون ، خیار ، گوجه ، سس مخصوص', + price: 40000, + restaurantSlug: 'Piano', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیف استراگانف', + desc: 'گوشت تکه ای، قارچ ، سس بشامل، خامه ، چیپس', + price: 195000, + restaurantSlug: 'Piano', + categoryTitle: 'خوراک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن استراگانف', + desc: 'مرغ تکه ای ، قارچ ، سس بشامل ، خامه ، چیپس', + price: 190000, + restaurantSlug: 'Piano', + categoryTitle: 'خوراک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فیله مینیون', + desc: '۳ عدد فیله گوساله ۸۰ گرمی ، سس قارچ و کره ، دورچین مخصوص', + price: 360000, + restaurantSlug: 'Piano', + categoryTitle: 'استیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'استیک با سس قارچ', + desc: '۲۵۰ گرم فیله گوساله ، سس قارچ، دورچین مخصوص', + price: 345000, + restaurantSlug: 'Piano', + categoryTitle: 'استیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'استیک بالزامیک', + desc: '۲۵۰ گرم فیله گوساله، سس بالزامیک ، دورچین مخصوص', + price: 345000, + restaurantSlug: 'Piano', + categoryTitle: 'استیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دبل استیک', + desc: '۱۵۰ گرم فیله گوساله، ۱۵۰ گرم فیله مرغ ، پنیر پیتزا', + price: 390000, + restaurantSlug: 'Piano', + categoryTitle: 'استیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک شکلاتی ', + desc: '', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک بستنی ', + desc: '', + price: 165000, + restaurantSlug: 'foodcourt', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیر و استیک (سس کچاپ)', + desc: 'فیله گوساله، سیر ، قارچ ، فلفل دلمه ، پنیر ایتالیایی', + price: 225000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: ' اسپرسو', + desc: '', + price: 80000, + restaurantSlug: 'foodcourt', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو', + desc: '60ml اسپرسو(دبل)+90میلی متر آب جوش', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا', + desc: 'اسپرسودبل+سس شکلات+شیروفوم', + price: 125000, + restaurantSlug: 'foodcourt', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته ', + desc: 'اسپرسو‌دبل+220mlشیرو‌فوم+سیروپ دلخواه', + price: 120000, + restaurantSlug: 'foodcourt', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت ', + desc: '', + price: 115000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفوگاتو', + desc: 'بستنی وانیل+اسپرسو دبل', + price: 115000, + restaurantSlug: 'foodcourt', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دارک چاکلت', + desc: '', + price: 120000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای ماسالا ', + desc: '', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'یونانی', + desc: 'ترک+شیر', + price: 105000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای مراکشی', + desc: 'چای +هل+نعنا+نبات', + price: 105000, + restaurantSlug: 'foodcourt', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش سیب دارچین', + desc: '', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش آرامش', + desc: 'گل گاوزبان+چای ترش+بهار نارنج+لیمو+نبات', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش به لیمو-زنجبیل', + desc: '', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس موکا', + desc: '', + price: 130000, + restaurantSlug: 'foodcourt', + categoryTitle: 'آیس کافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس امریکانو', + desc: '', + price: 115000, + restaurantSlug: 'foodcourt', + categoryTitle: 'آیس کافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک وانیل', + desc: '', + price: 150000, + restaurantSlug: 'foodcourt', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک شکلات', + desc: '', + price: 150000, + restaurantSlug: 'foodcourt', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک تیرامیسو', + desc: 'بیسکوییت لیدی فینگر+نسکافه گُلد+بستنی وانیل', + price: 165000, + restaurantSlug: 'foodcourt', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک بادام زمینی', + desc: 'کره بادام زمینی+بادام زمینی+بستنی وانیل', + price: 165000, + restaurantSlug: 'foodcourt', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کِمِکس', + desc: 'متولد1491,مناسب علاقه مندان طعم لایت و مدیوم قهوه', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'قهوه های دمی.', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فرانسه', + desc: 'قهوه دمی+شیر داغ', + price: 115000, + restaurantSlug: 'foodcourt', + categoryTitle: 'قهوه های دمی.', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'v60', + desc: 'متولد1921،نسخه اصلی و دست نخورده کِمِکٰسٰ', + price: 105000, + restaurantSlug: 'foodcourt', + categoryTitle: 'قهوه های دمی.', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیموناد', + desc: 'لیمو تازه+ سودا', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو کلاسیک', + desc: 'لیمو تازه+نعنا تازه+سودا', + price: 115000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیناکولادا', + desc: 'میکس آب آناناس و شیر نارگیل و آناناس', + price: 125000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیر و استیک (سس پستو)', + desc: 'فیله گوساله، سیر ، قارچ ، فلفل دلمه ، پنیر ایتالیایی', + price: 230000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیر و استیک (سس قارچ)', + desc: 'فیله گوساله، سیر ، قارچ ، فلفل دلمه ، پنیر ایتالیایی', + price: 230000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بروشکتو فونگی (سس کچاپ)', + desc: 'ژامبون ، فیله گوساله ، استیک 80٪ ، قارچ، فلفل دلمه ای', + price: 215000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بروشکتو فونگی (سس پستو)', + desc: 'ژامبون ، فیله گوساله ، استیک 80٪ ، قارچ، فلفل دلمه ای', + price: 220000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بروشکتو فونگی (سس قارچ)', + desc: 'ژامبون ، فیله گوساله ، استیک 80٪ ، قارچ، فلفل دلمه ای', + price: 220000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن فونگی (سس کچاپ)', + desc: 'فیله مرغ سرخ شده ، فلفل دلمه ای ، قارچ ، پنیر ایتالیایی', + price: 210000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن فونگی (سس پستو)', + desc: 'فیله مرغ سرخ شده ، فلفل دلمه ای ، قارچ ، پنیر ایتالیایی', + price: 215000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن فونگی (سس قارچ)', + desc: 'فیله مرغ سرخ شده ، فلفل دلمه ای ، قارچ ، پنیر ایتالیایی', + price: 215000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیلی فونگی (سس کچاپ)', + desc: 'ژامبون پپرونی ، قارچ ، فلفل دلمه ای', + price: 185000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیلی فونگی (سس پستو)', + desc: 'ژامبون پپرونی ، قارچ ، فلفل دلمه ای', + price: 190000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیلی فونگی (سس قارچ)', + desc: 'ژامبون پپرونی ، قارچ ، فلفل دلمه ای', + price: 190000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لابو سولا (سس کچاپ)', + desc: 'میگو ، ژامبون سالامی ، قارچ ، فلفل دلمه ای، پنیر ایتالیایی', + price: 190000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لابو سولا (سس پستو)', + desc: 'میگو ، ژامبون سالامی ، قارچ ، فلفل دلمه ای، پنیر ایتالیایی', + price: 195000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لابو سولا (سس قارچ)', + desc: 'میگو ، ژامبون سالامی ، قارچ ، فلفل دلمه ای، پنیر ایتالیایی', + price: 195000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چهار فصل (سس کچاپ)', + desc: 'ژامبون استیک ، پپرونی ، فیله مرغ ، سبزیجات', + price: 190000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چهار فصل (سس پستو)', + desc: 'ژامبون استیک ، پپرونی ، فیله مرغ ، سبزیجات', + price: 195000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چهار فصل (سس قارچ)', + desc: 'ژامبون استیک ، پپرونی ، فیله مرغ ، سبزیجات', + price: 195000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وجترین (سس کچاپ)', + desc: 'فلفل دلمه ای ، ذرت ، قارچ ، زیتون ، گوجه', + price: 170000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وجترین (سس پستو)', + desc: 'فلفل دلمه ای ، ذرت ، قارچ ، زیتون ، گوجه', + price: 175000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وجترین (سس قارچ)', + desc: 'فلفل دلمه ای ، ذرت ، قارچ ، زیتون ، گوجه', + price: 175000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مارگاریتا (سس کچاپ)', + desc: 'گوجه ، پنیر ایتالیایی', + price: 150000, + restaurantSlug: 'Piano', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنه الفردو (مرغ)', + desc: 'پنه ، سس قارچ ، فیله مرغ', + price: 155000, + restaurantSlug: 'Piano', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنه الفردو (گوشت)', + desc: 'پنه ، سس قارچ ، فیله مرغ', + price: 165000, + restaurantSlug: 'Piano', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنه پومودور (مرغ)', + desc: 'پنه ، سس گوجه فرنگی', + price: 155000, + restaurantSlug: 'Piano', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنه پومودور (گوشت)', + desc: 'پنه ، سس گوجه فرنگی', + price: 165000, + restaurantSlug: 'Piano', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفلاف (مرغ)', + desc: 'پنه ، سس قارچ ، سس گوجه ، زیتون ، فلفل دلمه ، پنیر', + price: 180000, + restaurantSlug: 'Piano', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفلاف (گوشت)', + desc: 'پنه ، سس قارچ ، سس گوجه ، زیتون ، فلفل دلمه ، پنیر', + price: 190000, + restaurantSlug: 'Piano', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فلورانین', + desc: 'پنه میگو ، قارچ ، سس بشامل', + price: 145000, + restaurantSlug: 'Piano', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پستو', + desc: 'پنه ، سس پستو ، فیله مرغ', + price: 155000, + restaurantSlug: 'Piano', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاسگنابونس (لازانیا)', + desc: '', + price: 150000, + restaurantSlug: 'Piano', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاستا سبزیجات', + desc: 'پنه ، قارچ ، ذرت ، فلفل دلمه ، سس گوجه', + price: 120000, + restaurantSlug: 'Piano', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسموتی انبه و موز', + desc: 'انبه+موز', + price: 60000, + restaurantSlug: 'Piano', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسموتی کوکونات', + desc: 'نارگیل+شیر+کاکاِِِِِیو', + price: 57000, + restaurantSlug: 'Piano', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسموتی استوایی', + desc: 'پشن فروت+موز+اناناس', + price: 60000, + restaurantSlug: 'Piano', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: ' کلاسیک', + desc: '', + price: 50000, + restaurantSlug: 'Piano', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک شکلات', + desc: '', + price: 53000, + restaurantSlug: 'Piano', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موز و شکلات', + desc: '', + price: 55000, + restaurantSlug: 'Piano', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک لوتوس', + desc: '', + price: 75000, + restaurantSlug: 'Piano', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک Oreo', + desc: '', + price: 70000, + restaurantSlug: 'Piano', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیموناد', + desc: 'تریپل سک+لیمو+اسپرایت', + price: 40000, + restaurantSlug: 'Piano', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: 'لیمو + نعنا + اسپرایت + رام', + price: 45000, + restaurantSlug: 'Piano', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مجیک مومنت', + desc: 'پرتغال قرمز+لیمو+کرن بری+سودا', + price: 50000, + restaurantSlug: 'Piano', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کامپاری کلر', + desc: 'هلو+کرن بری+لیمو+پرتغال+اسپرایت', + price: 55000, + restaurantSlug: 'Piano', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بلو اسکای', + desc: 'بلوکارسائو + آلوئورا', + price: 55000, + restaurantSlug: 'Piano', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مانتینی', + desc: 'تریپل سک+لیمو+کرن بری+سودا', + price: 50000, + restaurantSlug: 'Piano', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رز ماری کلر', + desc: 'انبه + لیمو+پرتغال قرمز+گرانادین+رز ماری', + price: 55000, + restaurantSlug: 'Piano', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خیارسکنجبین', + desc: '', + price: 40000, + restaurantSlug: 'Piano', + categoryTitle: 'شربت ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بید مشک', + desc: '', + price: 40000, + restaurantSlug: 'Piano', + categoryTitle: 'شربت ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بهار نارنج', + desc: '', + price: 40000, + restaurantSlug: 'Piano', + categoryTitle: 'شربت ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گلاب زعفران', + desc: '', + price: 40000, + restaurantSlug: 'Piano', + categoryTitle: 'شربت ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو سینگل', + desc: '', + price: 30000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ترک', + desc: '', + price: 40000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فرانسه', + desc: '', + price: 50000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته', + desc: '', + price: 45000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو', + desc: '', + price: 45000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا کلاسیک', + desc: '', + price: 50000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 43000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نسکافه', + desc: '', + price: 50000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو', + desc: '', + price: 40000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا', + desc: '', + price: 43000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گل گاو زبان (لیمو)', + desc: '', + price: 45000, + restaurantSlug: 'Piano', + categoryTitle: 'دمنوش گیاهی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سیاه', + desc: '', + price: 20000, + restaurantSlug: 'Piano', + categoryTitle: 'دمنوش گیاهی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سبز', + desc: '', + price: 45000, + restaurantSlug: 'Piano', + categoryTitle: 'دمنوش گیاهی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای ترش', + desc: '', + price: 45000, + restaurantSlug: 'Piano', + categoryTitle: 'دمنوش گیاهی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آویشن (عسل)', + desc: '', + price: 45000, + restaurantSlug: 'Piano', + categoryTitle: 'دمنوش گیاهی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش میکس', + desc: 'گل گاو زبان + آویشن + چای ترش + لیمو + عسل', + price: 60000, + restaurantSlug: 'Piano', + categoryTitle: 'دمنوش گیاهی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفاگاتو', + desc: 'بستنی وانیلی + اسپرسو', + price: 50000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کافی سودا', + desc: 'سودا + اسپرسو', + price: 45000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لاته', + desc: 'شیر + اسپرسو', + price: 45000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک نوتلا', + desc: '', + price: 65000, + restaurantSlug: 'Piano', + categoryTitle: 'دسر و کیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک روز ', + desc: '', + price: 60000, + restaurantSlug: 'Piano', + categoryTitle: 'دسر و کیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بستنی میکس', + desc: '', + price: 47000, + restaurantSlug: 'Piano', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بستنی شکلاتی', + desc: '', + price: 41000, + restaurantSlug: 'Piano', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بستنی موز', + desc: '', + price: 42000, + restaurantSlug: 'Piano', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بستنی وانیل', + desc: '', + price: 40000, + restaurantSlug: 'Piano', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بستنی نسکافه', + desc: '', + price: 42000, + restaurantSlug: 'Piano', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو', + desc: 'اسپرسو سینگل+150mlشیرو فوم', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لاته', + desc: 'اسپرسو دبل+شیر', + price: 115000, + restaurantSlug: 'foodcourt', + categoryTitle: 'آیس کافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سرویس چای چهارنفره', + desc: 'نبات', + price: 165000, + restaurantSlug: 'foodcourt', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پشن دراگون', + desc: 'آب پرتقال+توت فرنگی+سیروپ پشن فورت+آب لیمو تازه', + price: 135000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک ردولوت', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'کوکی و دسرها (آیتم ها به تعداد محدود در روز موجود می‌باشد )', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک نسکافه', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'کوکی و دسرها (آیتم ها به تعداد محدود در روز موجود می‌باشد )', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تریپل چاکلت', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'کوکی و دسرها (آیتم ها به تعداد محدود در روز موجود می‌باشد )', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفاماتا', + desc: 'میکس ژامبون، پپرونی، کوکتل، اوریگانو، قارچ، فلفل دلمه ای، موتزارلا', + price: 563000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758618404.png"], +}, +{ + title: 'اسپرسو دبل', + desc: '', + price: 35000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس چاکلت', + desc: 'بستنی وانیلی + هات چاکلت', + price: 55000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بادام زمینی', + desc: '', + price: 62000, + restaurantSlug: 'Piano', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شکلات فندق', + desc: '', + price: 62000, + restaurantSlug: 'Piano', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وان پیس', + desc: 'بلوکارسائو + آلبالو + لیمو + پرتقال', + price: 60000, + restaurantSlug: 'Piano', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پینات باتر وینگز(new)', + desc: 'بال سرخ شده به همراه سس پینات باتر', + price: 279000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728330951188.png"], +}, +{ + title: 'باربیکیو وینگز(new)', + desc: 'بال سرخ شده به همراه سس باربیکیو', + price: 279000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728330940826.png"], +}, +{ + title: 'قارچ سوخاری(new)', + desc: 'قارچ پولکی، سس مخصوص', + price: 259000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729757626041.png"], +}, +{ + title: 'دوسیب ، البالو ، ادامس دارچین ، موهیتو ، انبه ، سیب یخ ، هندوانه نعنا ، بلوبری ، پرتغال خامه ، آلو یخ ، نعنا ، طالبی ، پاستیل ، کیس می ، شاتوت بستنی ، کاپتان بلک ، ', + desc: '', + price: 70000, + restaurantSlug: 'life', + categoryTitle: 'قلیان', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تاپ شاین', + desc: 'بستنی وانیل ، سس توت فرنگی ، اسلایس میوه ، خامه', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دارک مون', + desc: 'کرم کارامل ، بستنی نسکافه ، میوه', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بن هلن', + desc: 'بستنی وانیل ، خامه ، گلابی', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بنانا اسپیلت', + desc: 'موز ، بستنی وانیل ، گیلاس ، بیسکوئیت کاکائو', + price: 50000, + restaurantSlug: 'life', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جویس اسپانیائی', + desc: 'آب البالو ، آب پرتغال ، موز', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس ملون', + desc: 'طالبی ، آب گاز دار ، نعنا ، شکر', + price: 40000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سانگریا', + desc: 'انگور سفید ، آب انار ، آب پرتغال ، آب گاز دار ، دارچین ، لیمو حلقه شده', + price: 55000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پانچ هلو', + desc: 'هلو ، آب گاز دار ، آب لیمو ترش ، شکر', + price: 45000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیناکولادا', + desc: 'شیر نارگیل ، آب اناناس ، یخ ، شکر ، خامه', + price: 50000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیکو آدو', + desc: 'موز ، توت فرنگی ، آب اناناس ، پرتغال', + price: 50000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پانچ آب آلبالو و انار', + desc: 'آب انار ، آب آلبالو ، آب گاز دار ، لیمو ترش', + price: 50000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گرنادین', + desc: 'آب انار ، یخ ، عرق بهار نارنج ، آبلیموی تازه ، شکر', + price: 50000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وافل نوتلا', + desc: 'وافل ، بستنی نوتلا ، سس توت فرنگی ، اسلایس میوه', + price: 65000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وافل کاکائو', + desc: 'وافل ، بستنی شکلات ، سس شکلات ، اسلایس میوه', + price: 60000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وافل کاکائو و موز', + desc: 'وافل ، بستنی شکلات ، سس شکلات ، اسلایس میوه', + price: 65000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وافل وانیل خامه', + desc: 'وافل ، بستنی وانیل ، سس کارامل ، خامه ، اسلایس میوه', + price: 60000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وافل شاتوت', + desc: 'وافل ، بستنی شاتوت ، سس توت فرنگی ، اسلایس میوه', + price: 60000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وافل بلژیکی', + desc: 'وافل ، بستنی وانیل ، بستنی شکلات ، بستنی نوتلا ، سس شکلات موز ، خامه', + price: 65000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وافل کارامل خامه', + desc: 'وافل ، بستنی کارامل ، خامه ، سس کارامل ، اسلایس میوه', + price: 60000, + restaurantSlug: 'life', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پینک چاکلت', + desc: '', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های گرم ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز برگر', + desc: 'برگر150گرمی، پنیر گودا، کاهو لوتوس، گوجه فرنگی، خیار، سس مخصوص، ساید سالاد و سیب زمینی(سرو سالن)', + price: 443000, + restaurantSlug: 'boote', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758313692.png"], +}, +{ + title: 'سیب کلاسیک', + desc: '', + price: 45000, + restaurantSlug: 'ocafe', + categoryTitle: 'سیب زمینی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فرنچ فرایز', + desc: 'سیب زمینی خلالی،سس مخصوص', + price: 185000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758014480.png"], +}, +{ + title: 'کباب مخصوص سعادت', + desc: '', + price: 175000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیشلیک (شاندیز)', + desc: '', + price: 320000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگ', + desc: '', + price: 160000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سلطانی', + desc: '', + price: 185000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چنجه اعیانی', + desc: '', + price: 180000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جوجه کلاسیک', + desc: '', + price: 89000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جوجه ترش', + desc: '', + price: 99000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فیله ترش', + desc: '', + price: 169000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بختیاری', + desc: '', + price: 100000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوبیده (لقمه)', + desc: '', + price: 70000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کباب ممتاز بلغاری', + desc: '', + price: 110000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کباب مصری', + desc: '', + price: 180000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاسه کباب', + desc: '', + price: 180000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سینی مخصوص (دورچین)', + desc: '', + price: 570000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماهی قزل آلا', + desc: '', + price: 90000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برنج', + desc: '', + price: 30000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جوجه چینی', + desc: '', + price: 100000, + restaurantSlug: 'saadat', + categoryTitle: 'فرنگی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میگو سوخاری', + desc: '', + price: 0, + restaurantSlug: 'saadat', + categoryTitle: 'فرنگی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میگو پفکی', + desc: '', + price: 0, + restaurantSlug: 'saadat', + categoryTitle: 'فرنگی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'استیک ویژه', + desc: '', + price: 250000, + restaurantSlug: 'saadat', + categoryTitle: 'فرنگی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد مخصوص', + desc: '', + price: 85000, + restaurantSlug: 'saadat', + categoryTitle: 'سالاد ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار', + desc: '', + price: 75000, + restaurantSlug: 'saadat', + categoryTitle: 'سالاد ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد یونانی', + desc: '', + price: 70000, + restaurantSlug: 'saadat', + categoryTitle: 'سالاد ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد فصل', + desc: '', + price: 28000, + restaurantSlug: 'saadat', + categoryTitle: 'سالاد ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گردن', + desc: '', + price: 220000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماهیچه', + desc: '', + price: 220000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نوشابه', + desc: '', + price: 10000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دوغ ', + desc: '', + price: 10000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دلستر', + desc: '', + price: 10000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شربت welcome', + desc: '', + price: 8000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قلیان (انواع طمع ها)', + desc: '', + price: 90000, + restaurantSlug: 'saadat', + categoryTitle: 'قلیان', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو', + desc: '', + price: 25000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته', + desc: '', + price: 35000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو', + desc: '', + price: 35000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا', + desc: '', + price: 37000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو', + desc: '', + price: 25000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 35000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا', + desc: '', + price: 35000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته ماکیاتو', + desc: '', + price: 37000, + restaurantSlug: 'saadat', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لاته', + desc: '', + price: 45000, + restaurantSlug: 'saadat', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس موکا', + desc: '', + price: 47000, + restaurantSlug: 'saadat', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هایپ اسپرسو', + desc: '', + price: 50000, + restaurantSlug: 'saadat', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فراپاچینو', + desc: '', + price: 50000, + restaurantSlug: 'saadat', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سودا امریکانو', + desc: '', + price: 35000, + restaurantSlug: 'saadat', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سیاه', + desc: '', + price: 20000, + restaurantSlug: 'saadat', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سفید', + desc: '', + price: 30000, + restaurantSlug: 'saadat', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سبز', + desc: '', + price: 30000, + restaurantSlug: 'saadat', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کمکس', + desc: '', + price: 40000, + restaurantSlug: 'saadat', + categoryTitle: 'قهوه نسل ۳', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ترک', + desc: '', + price: 35000, + restaurantSlug: 'saadat', + categoryTitle: 'قهوه نسل ۳', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'v60', + desc: '', + price: 40000, + restaurantSlug: 'saadat', + categoryTitle: 'قهوه نسل ۳', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رینبو', + desc: '', + price: 35000, + restaurantSlug: 'saadat', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بولفراگ', + desc: '', + price: 40000, + restaurantSlug: 'saadat', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بلور بنفش', + desc: '', + price: 40000, + restaurantSlug: 'saadat', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: '', + price: 35000, + restaurantSlug: 'saadat', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو پرتقال', + desc: '', + price: 40000, + restaurantSlug: 'saadat', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شوکو شیک', + desc: '', + price: 40000, + restaurantSlug: 'saadat', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیناکولادا', + desc: '', + price: 45000, + restaurantSlug: 'saadat', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شامروک', + desc: '', + price: 40000, + restaurantSlug: 'saadat', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سوپ شیر', + desc: '', + price: 20000, + restaurantSlug: 'saadat', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کشک و بادمجان', + desc: '', + price: 70000, + restaurantSlug: 'saadat', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میرزا قاسمی', + desc: '', + price: 70000, + restaurantSlug: 'saadat', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسکندر کباب', + desc: '', + price: 170000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جوجه با استخوان', + desc: '', + price: 100000, + restaurantSlug: 'saadat', + categoryTitle: 'غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک موز گردو', + desc: '', + price: 38000, + restaurantSlug: 'ocafe', + categoryTitle: 'کوکی و دسرها (آیتم ها به تعداد محدود در روز موجود می‌باشد )', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب پنیری', + desc: '', + price: 56000, + restaurantSlug: 'ocafe', + categoryTitle: 'سیب زمینی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی با سس قارچ فیله گوساله', + desc: '', + price: 78000, + restaurantSlug: 'ocafe', + categoryTitle: 'سیب زمینی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی با سس قارچ وبیکن گوساله', + desc: '', + price: 68000, + restaurantSlug: 'ocafe', + categoryTitle: 'سیب زمینی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی پنیری با سوجوک و ژامبون میکس ', + desc: '', + price: 67000, + restaurantSlug: 'ocafe', + categoryTitle: 'سیب زمینی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب سس قارچ', + desc: '', + price: 56000, + restaurantSlug: 'ocafe', + categoryTitle: 'سیب زمینی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو توت فرنگی', + desc: '', + price: 52000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بلو آنجل', + desc: '', + price: 40000, + restaurantSlug: 'saadat', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تست فیله گوساله', + desc: '', + price: 58000, + restaurantSlug: 'ocafe', + categoryTitle: 'پیش غذا و سالادها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تست فیله مرغ', + desc: '', + price: 55000, + restaurantSlug: 'ocafe', + categoryTitle: 'پیش غذا و سالادها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی', + desc: '', + price: 50000, + restaurantSlug: 'saadat', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی ویژه', + desc: '', + price: 80000, + restaurantSlug: 'saadat', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کباب برگ قاجاری', + desc: 'گوشت فیله مرینت شده ', + price: 135000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک مخصوص هفت خوان', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'کباب صدر اعظم', + desc: 'فیله مغز دار رُل شده (گوشت قرمز)', + price: 125000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک مخصوص هفت خوان', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'کاسه کباب گلپایگانی', + desc: 'گوشت قرمز فیله + گوشت سفید فیله مرغ + قارچ کبابی + روغن محلی + کنجد سفید ', + price: 175000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک مخصوص هفت خوان', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'کباب برگ تبريزی ', + desc: 'گوشت قرمز فیله + گوشت کوبیده + فلفل دلمه + کنجد سفید', + price: 145000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک مخصوص هفت خوان', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'جوجه درباری ', + desc: 'فیله مغزدار رُل شده (گوشت سفید)', + price: 115000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک مخصوص هفت خوان', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'جوجه ترش', + desc: '', + price: 95000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک مخصوص هفت خوان', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'کباب اسکندری', + desc: 'گوشت سفید فیله + گوشت کوبیده + فلفل دلمه + کنجد سفید', + price: 90000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک مخصوص هفت خوان', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'کباب چنجه', + desc: 'فیله', + price: 110000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'کباب بختیاری ', + desc: '', + price: 99000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'میکس', + desc: 'جوجه ۱۵۰ گرم + کوبیده ۸۵ گرم', + price: 80000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'کباب نگینی ', + desc: '۲ سیخ ۱۸۰ گرمی', + price: 65000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'کباب گلپایگانی', + desc: '۲ سیخ ۱۸۰ گرمی با دورچین ', + price: 63000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'جوجه کباب', + desc: '۲۵۰ گرمی', + price: 60000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'جوجه چینی', + desc: '', + price: 60000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'شنسل مرغ', + desc: '', + price: 59000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'چلو ایرانی', + desc: '', + price: 32000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'خوراک', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'ماست موسیر پاستوریزه ', + desc: '', + price: 7500, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'زیتون پروده پاستوریزه مهراد', + desc: '', + price: 13000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'زيتون شور', + desc: '', + price: 13000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'سالاد کاهو', + desc: '', + price: 15000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'سیر ترشی', + desc: '', + price: 13000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'نوشابه قوطی', + desc: 'کوکا - فانتا - سون آپ ', + price: 12000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'نوشابه ۳۰۰ سی سی', + desc: 'کوکا - پپسی - فانتا - اسپرایت ', + price: 6500, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'نوشابه خانواده ', + desc: 'کوکا - فانتا - اسپرایت ', + price: 15000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'دلستر قوطی تک نفره', + desc: 'هلو - لیمو - استوایی - آناناس', + price: 12000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'دلستر خانواده ', + desc: 'هلو - لیمو - استوایی - آناناس', + price: 15000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'لیموناد', + desc: '', + price: 15000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'تاک انگور ', + desc: '', + price: 8000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'آب معدنی تک نفره', + desc: '', + price: 4000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'آب معدنی خانواده', + desc: '', + price: 8000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'چای فلاسک ساده با نبات', + desc: '', + price: 30000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'چای و نوشیدنی گرم', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'چای فلاسک طعم با نبات', + desc: 'هل - دارچین - زنجبیل - گلمحمدی- به لیمو ', + price: 35000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'چای و نوشیدنی گرم', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'چای فلاسک زعفرانی با نبات', + desc: '', + price: 40000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'چای و نوشیدنی گرم', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'کاپوچینو', + desc: '', + price: 12000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'چای و نوشیدنی گرم', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 10000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'چای و نوشیدنی گرم', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'کافی میکس', + desc: '', + price: 8000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'چای و نوشیدنی گرم', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'ساده', + desc: 'بلوبری - آدامس دارچین - نعنا پرتقال - دوسیب - دوسیب شلیل - هندونه نعنا - موهیتو - سیب یخ', + price: 50000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'قلیان', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'عربی', + desc: 'آدامس دارچین - تمشک بستنی ', + price: 90000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'قلیان', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'بستنی سنتی', + desc: '', + price: 8000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'دسر', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'بستنی پاستوریزه ', + desc: '', + price: 6000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'دسر', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'کیک روز', + desc: '', + price: 30000, + restaurantSlug: 'Haaft khaan', + categoryTitle: 'دسر', + isActive: true, + stock: 1000, + stockDefault: 1000, + images: [], +}, +{ + title: 'چیز کیک نوتلا', + desc: '', + price: 43000, + restaurantSlug: 'ocafe', + categoryTitle: 'کوکی و دسرها (آیتم ها به تعداد محدود در روز موجود می‌باشد )', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تونیک', + desc: 'آب لیموی تازه ، یخ ، یک شات اسپرسو ، ( سیروپ کارامل به دلخواه)', + price: 35000, + restaurantSlug: 'life', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اگ بندیکت', + desc: 'نان انگلیش مافین،بیکن،قارچ،اسفناج،پچد اگ،سس هالندز', + price: 309000, + restaurantSlug: 'boote', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729757064050.png"], +}, +{ + title: 'بوته اسپشیال', + desc: 'نیمرو،سوسیس،بیکن،هش براون، گوجه کبابی،قارچ کبابی،خوراک لوبیا و سالاد ', + price: 325000, + restaurantSlug: 'boote', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1765281838221.png"], +}, +{ + title: 'اراک برک', + desc: 'سر شیر، پنیر، کره، گردو، مربا، عسل، نوتلا، گوجه، خیار، دورچین به همراه نان', + price: 195000, + restaurantSlug: 'boote', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1761678002013.png"], +}, +{ + title: 'لیمون کوکو', + desc: '', + price: 59000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اورنج سک ', + desc: '', + price: 57000, + restaurantSlug: 'ocafe', + categoryTitle: 'موکتل های ایرانی و ملل ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پپرونی', + desc: '', + price: 220000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیتزا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1659522888259.png"], +}, +{ + title: 'پیتزا پپرونی', + desc: 'پپرونی - سس مخصوص موتزارلا', + price: 15000, + restaurantSlug: 'lounge1', + categoryTitle: 'پیتزاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تاور رینگز', + desc: '7 حلقه پیاز سوخاری', + price: 199000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728330592819.png"], +}, +{ + title: 'چیکن آلفردو', + desc: '', + price: 245000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیتزا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1663567920922.png"], +}, +{ + title: 'وا فل', + desc: 'دو عدد وافل، یک اسکوپ بستنی، کرم شکلات و دورچین میوه', + price: 295000, + restaurantSlug: 'boote', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758734918.png"], +}, +{ + title: 'پنکیک', + desc: 'پنکیک، مربا ویوافل، کرم شکلات و دورچین میوه جات فصل', + price: 195000, + restaurantSlug: 'boote', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756930760.png"], +}, +{ + title: 'کاتانیا', + desc: 'فیله گوشت مزه دار شده، سالامی، سس گوجه، پنیر پارمسان', + price: 589000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756502136.png"], +}, +{ + title: 'سالاد مرغ و گردو', + desc: 'کاهو، مرغ گریل شده ، گردو ، گوجه چری ، پنیر پارمسان ، سس آنتروکوت، جعفری', + price: 479000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729757913755.png"], +}, +{ + title: 'شف برگر (امضای ژیوان).. burger chef', + desc: 'گوشت خالص برگر/ رست بیف/ سس قارچ/پنیر گودا/ نان با خمیر مخصوص..burger meat/roast beef/mushroom sauce/gouda cheese/bread with special dough ', + price: 548000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713706844133.png"], +}, +{ + title: 'پنینی مرغ', + desc: 'فیله مرغ - قارچ - پنیر گودا - پنیر پیتزا - سیب زمینی - سالاد', + price: 141000, + restaurantSlug: 'Honar', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1662297483531.png"], +}, +{ + title: 'پنینی هات داگ اسپشیال', + desc: 'هات داگ پنیری - قارچ - پنیر گودا - پنیر پیتزا - سیب زمینی - سالاد', + price: 135000, + restaurantSlug: 'Honar', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1662297660322.png"], +}, +{ + title: 'آویشن', + desc: '', + price: 37000, + restaurantSlug: 'ocafe', + categoryTitle: 'دمنوش ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن اسفناچ(new)', + desc: 'سینه مرغ گریل، نان چیاباتا، سس زرشک، سس اسفناج، کاهو فرانسه، گوجه فرنگی، سیب زمینی', + price: 407000, + restaurantSlug: 'boote', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728331212413.png"], +}, +{ + title: 'شیرنسکافه', + desc: '', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 115000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لوتوس شیک latus millshake', + desc: '', + price: 170000, + restaurantSlug: 'zhivan', + categoryTitle: 'اسموتی و شیک ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715855188287.png"], +}, +{ + title: 'اورئو شیک oreo milkshake', + desc: '', + price: 150000, + restaurantSlug: 'zhivan', + categoryTitle: 'اسموتی و شیک ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715854766909.png"], +}, +{ + title: 'کورتادو Cortado', + desc: 'قهوه 70/30و شیر به نسبت یک دیگر ', + price: 143000, + restaurantSlug: 'zhivan', + categoryTitle: 'قهوه ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715710960967.png"], +}, +{ + title: 'موهیتو میکس mixed mojito', + desc: '', + price: 95000, + restaurantSlug: 'zhivan', + categoryTitle: 'موهیتو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714293251086.png"], +}, +{ + title: 'اسپرسو', + desc: 'میکس قهوه مورد نظر 70-30 در صورت نیاز قابل تغییر میباشد', + price: 43000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1670941019217.png"], +}, +{ + title: 'آمریکانو', + desc: '', + price: 45000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1670941158643.png"], +}, +{ + title: 'کورتادو', + desc: '', + price: 51000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1670941278888.png"], +}, +{ + title: 'لاته', + desc: '', + price: 57000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1670941383289.png"], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 52000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683374090799.png"], +}, +{ + title: 'ماسالا ', + desc: '', + price: 55000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1670943585434.png"], +}, +{ + title: 'کیک روز', + desc: '', + price: 53000, + restaurantSlug: '1972Cafe', + categoryTitle: 'کیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1671205548041.png"], +}, +{ + title: 'وافل', + desc: 'شکلات و موز', + price: 77000, + restaurantSlug: '1972Cafe', + categoryTitle: 'کیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1671206028714.png"], +}, +{ + title: 'سیب زمینی چدار', + desc: 'سیب زمینی سرخ شده. دیپ چدار . جعفری و ادویه مخصوص', + price: 150000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیش غذا.', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674117429783.png"], +}, +{ + title: 'کاپوچینو', + desc: 'اسپرسو و شیر', + price: 57000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683373474894.png"], +}, +{ + title: 'کمکس', + desc: '', + price: 61000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه های دمی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674317833311.png"], +}, +{ + title: 'سایفون', + desc: '', + price: 65000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه های دمی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674318031385.png"], +}, +{ + title: 'V 60', + desc: '', + price: 57000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه های دمی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674318145146.png"], +}, +{ + title: 'ایروپرس', + desc: '', + price: 53000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه های دمی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683374626803.png"], +}, +{ + title: 'ترک', + desc: 'در صورت نیاز شیر اضافه میشود', + price: 42000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه های دمی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1674318357015.png"], +}, +{ + title: 'پشن لاین', + desc: 'پشن فروت.لیمو.آلبالو.سودا.بلو کاراسایو', + price: 53000, + restaurantSlug: 'Piano', + categoryTitle: 'ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایریش کافی', + desc: 'شکر قهوه ای +قهوه+سیروپ ایریش+فوم شیر', + price: 50000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس موکا', + desc: '', + price: 50000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای مینت', + desc: 'نعناع+چای سیاه+دارچین', + price: 40000, + restaurantSlug: 'Piano', + categoryTitle: 'دمنوش گیاهی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش به', + desc: '', + price: 40000, + restaurantSlug: 'Piano', + categoryTitle: 'دمنوش گیاهی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس امریکانو', + desc: '', + price: 42000, + restaurantSlug: 'Piano', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیف اسفناج(new)', + desc: 'پنه ، فیله گوساله ، سس اسفناج، پنیر پارمسان، چیپس هویج، میکرو گرین، گوجه خشک', + price: 473000, + restaurantSlug: 'boote', + categoryTitle: 'پاستا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728330530614.png"], +}, +{ + title: 'چیز فرایز لارج', + desc: 'سیب زمینی سرخ شده همراه با سس قارچ', + price: 250000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیش غذا.', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک دبل چاکلت(new)', + desc: '', + price: 100000, + restaurantSlug: 'foodcourt', + categoryTitle: 'کیک و دسر', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا ژامبون', + desc: '', + price: 210000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیتزا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1681745992648.png"], +}, +{ + title: 'پیتزا مارگاریتا', + desc: '', + price: 173000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیتزا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1681746130413.png"], +}, +{ + title: 'شیک بادام زمینی', + desc: '', + price: 81000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683377587080.png"], +}, +{ + title: 'سیب زمینی سرخ شده', + desc: 'سیب زمینی .. French fries', + price: 170000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715934532096.png"], +}, +{ + title: 'برگر آجیلی سپنج', + desc: '۱۵۰ گرم گوشت خالص ،مغز پسته ،پنیر پیتزا،کاهو،گوجه،پیاز کاراملی،سس پسته و گردو،سس مک دونالد،دیپ چدار،گودا)', + price: 208000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماشروم برگر', + desc: '(۱۳۰ گرم گوشت خالص،سس قارچ،کاهو،گوجه،جعفری،) ', + price: 188000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هالوپینو', + desc: '(۱۳۰ گرم گوشت،هالوپینو،کاهو،گوجه،گودا)', + price: 177000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز برگر', + desc: '(۱۳۰ گرم گوشت خالص،گوجه،خیارشور،کاهو ،گودا،دیپ چدار)', + price: 192000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر فیله سوخاری', + desc: '(فیله سوخاری ،سس قارچ،کاهو،گوجه)', + price: 146000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آلفردو', + desc: '(پنه ۱۶۰ گرم،فیله مرغ گریل ،سس قارچ،پنیر پارمسان)', + price: 167000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پستو', + desc: '(پنه ۱۶۰ گرم،فیله مرغ گریل شده،سس پستو،پنیر پارمسان)', + price: 172000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گوشت پستو', + desc: '(۸۰ گرم گوشت راسته خالص،سس پستو ،گوجه،ریحون،پارمسان)', + price: 182000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'پنینی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گوشت باربیکیو', + desc: '(۸۰ گرم گوشت راسته خالص ،پیاز کاراملی،هالوپینو،گوجه ،کاهو،سس باربیکیو)', + price: 177000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'پنینی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مرغ پستو', + desc: '(فیله مرغ گریل ۲ عدد ،سس پستو،گوجه،ریحون،پارمسان)', + price: 147000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'پنینی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مرغ باربیکیو', + desc: '(فیله مرغ ۲ عدد ،پیاز کاراملی،هالوپینو،گوجه،کاهو،سس باربیکیو)', + price: 142000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'پنینی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات داگ کاراملی', + desc: '(سوسیس،پیاز کاراملی،گوجه،خیارشور،خلال سیب زمینی،گودا)', + price: 122000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'هات داگ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات داگ ماشروم', + desc: '(سوسیس ،سس قارچ،جعفری،پارمسان)', + price: 138000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'هات داگ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات داگ قارچ و پنیر', + desc: '(سوسیس،کاهو،گوجه،پنیر پیتزا،قارچ)', + price: 127000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'هات داگ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تک لقمه', + desc: '(سوسیس،خلال سیب زمینی،جعفری)', + price: 45000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'هات داگ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تک لقمه ویژه', + desc: '(سوسیس،خلال سیب زمینی،جعفری،سس،پنیر گودا)', + price: 58000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'هات داگ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فیله سوخاری', + desc: '', + price: 142000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قارچ سوخاری', + desc: '', + price: 83000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بشقاب سوخاری', + desc: '', + price: 198000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی با سس قارچ', + desc: '', + price: 88000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی چدار', + desc: '', + price: 97000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی سس مخصوص', + desc: '', + price: 58000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بشقاب سیب قارچ', + desc: '', + price: 137000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار', + desc: '', + price: 130000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سبز', + desc: '', + price: 0, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نوشابه', + desc: '', + price: 0, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دلستر ', + desc: '', + price: 0, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آب معدنی', + desc: '', + price: 0, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ترک', + desc: '', + price: 40000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پرس', + desc: '', + price: 70000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایروپرس', + desc: '', + price: 70000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کمکس', + desc: '', + price: 70000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس لته', + desc: '', + price: 55000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: ' ایس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس موکا', + desc: '', + price: 60000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: ' ایس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: ' ایس امریکانو', + desc: '350000 - 450000', + price: 45000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: ' ایس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس چاکلت', + desc: '', + price: 50000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: ' ایس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس هانی', + desc: '', + price: 58000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: ' ایس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوک اسپرسو', + desc: '', + price: 60000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: ' ایس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای', + desc: '', + price: 15000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'چای دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای طعم دار', + desc: 'هل،دارچین،زنجیل', + price: 20000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'چای دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای زعفران', + desc: '', + price: 30000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'چای دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سبز', + desc: '', + price: 33000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'چای دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای ترش', + desc: '', + price: 33000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'چای دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش به لیمو بهار نارنج', + desc: '', + price: 35000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'چای دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: ' دمنوش گارد', + desc: '', + price: 35000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'چای دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش گل گاوزبان', + desc: '', + price: 30000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'چای دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش ارامش', + desc: '', + price: 35000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'چای دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش سپنچ', + desc: '', + price: 38000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'چای دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک شکلاتی', + desc: '', + price: 0, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'کیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک هویج', + desc: '', + price: 0, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'کیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک روز', + desc: '', + price: 0, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'کیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک کلاسیک', + desc: 'وانیل - شکلات', + price: 80000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک نوتلا', + desc: '', + price: 85000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک اورئو', + desc: '', + price: 90000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک اسپرسو', + desc: '', + price: 90000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک بادام زمینی', + desc: '', + price: 90000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک کیت کت', + desc: '', + price: 95000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک سپنج', + desc: '', + price: 98000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: '', + price: 40000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جینجر لیموناد', + desc: '', + price: 40000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بلک اسکای', + desc: '', + price: 45000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیندرلا', + desc: '', + price: 45000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گرین پاور', + desc: '', + price: 55000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایلد بری', + desc: '', + price: 50000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رد سامر', + desc: '', + price: 50000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو ربوستا', + desc: '30٪ عربیکا، 70٪ ربوستا', + price: 40000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695805575659.png"], +}, +{ + title: 'اسپرسو عربیکا ', + desc: '100٪ عربیکا', + price: 50000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695805517940.png"], +}, +{ + title: 'آمریکانو گرم', + desc: 'اسپرسو، آبجوش', + price: 45000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695288603043.png"], +}, +{ + title: 'کارامل ماکیاتو گرم', + desc: 'اسپرسو، شیر، کارامل', + price: 65000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695287233293.png"], +}, +{ + title: 'موکا گرم', + desc: 'اسپرسو، شکلات، شیر', + price: 65000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695287143843.png"], +}, +{ + title: 'هات چاکلت ', + desc: 'شیر، شکلات ', + price: 60000, + restaurantSlug: 'monikh', + categoryTitle: 'بدون اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695287057123.png"], +}, +{ + title: 'شیر گرم', + desc: 'شیر گرم آرامش‌ بخش و هضم آسان برای سلامت گوارش نیز مفید است. و همچنین حاوی تریپتوفان است که منجر به خوابی راحت می‌شود.', + price: 30000, + restaurantSlug: 'monikh', + categoryTitle: 'بدون اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695286705042.png"], +}, +{ + title: 'شیر زردچوبه ', + desc: 'شیر، زردچوبه، عسل', + price: 45000, + restaurantSlug: 'monikh', + categoryTitle: 'بدون اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695286602239.png"], +}, +{ + title: 'ماسالا گرم', + desc: 'زنجبیل، دارچین، جوز هندی، چای سیاه، شیر', + price: 60000, + restaurantSlug: 'monikh', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695286309005.png"], +}, +{ + title: 'چای سیاه', + desc: 'آرامش معده ،بهبود عملکرد قلب و عروق، ضد سرطان، بهبود عملکرد کبد', + price: 40000, + restaurantSlug: 'monikh', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733426880348.png"], +}, +{ + title: 'چای سبز', + desc: 'چای سبز سرشار از پلی فنول بوده که دارای خواص ضد التهابی است. که می‌تواند پوست تحریک شده شما را آرام کند. قرمزی ناشی از تحریک را کاهش دهد و همچنین تورم پوست شما را کم کند. ', + price: 40000, + restaurantSlug: 'monikh', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695285898103.png"], +}, +{ + title: 'چای آویشن', + desc: 'استفاده دمنوش آویشن شیرازی باعث رقیق شدن خون می‌شود و بخشی از عفونت‌های ریه را از بین می‌برد. دمکرده آویشن همچنین ضد درد مفاصل، ضد سکسکه و ضد نفخ شکم است.', + price: 40000, + restaurantSlug: 'monikh', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695285962920.png"], +}, +{ + title: 'چای گل گاوزبان', + desc: 'این گیاه، ضدالتهاب، ضدمیکروب، ضد درد و حاوی ترکیبات آنتی‌اکسیدان است و به‌طور ویژه برای درمان و بهبود سرماخوردگی و به‌عنوان یک داروی ضداضطراب و آرام‌بخش مصرف میگردد.', + price: 40000, + restaurantSlug: 'monikh', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695286023471.png"], +}, +{ + title: 'چای ترش ', + desc: 'این گیاه دارای آنتی اکسیدان‌های ضد چربی خون و ضد سرطان و کاهش فشارخون و همچنین برای درمان سرفه، گلودرد و آنتی باکتریال مصرف می‌شود.', + price: 40000, + restaurantSlug: 'monikh', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695286204867.png"], +}, +{ + title: 'آمریکانو سرد', + desc: 'اسپرسو، یخ', + price: 45000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695285667290.png"], +}, +{ + title: 'کاپوچینو سرد ', + desc: 'اسپرسو، شیر فوم دار', + price: 57000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695285589063.png"], +}, +{ + title: 'آیس کارامل ماکیاتو ', + desc: 'کارامل، اسپرسو، شیر، یخ ', + price: 65000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695285486443.png"], +}, +{ + title: 'موکا سرد ', + desc: 'اسپرسو، شیر، شکلات، یخ', + price: 65000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695285373905.png"], +}, +{ + title: 'آیس چاکلت ', + desc: 'شکلات، شیر، یخ ', + price: 60000, + restaurantSlug: 'monikh', + categoryTitle: 'بدون اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695285086684.png"], +}, +{ + title: 'سیروپ اضافه ', + desc: 'انتخاب دلخواه', + price: 12000, + restaurantSlug: 'monikh', + categoryTitle: 'سیروپ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733343050554.png"], +}, +{ + title: 'کیک هویج و گردو روز ', + desc: 'یک اسلایس کیک هویج و گردو روز ', + price: 65000, + restaurantSlug: 'monikh', + categoryTitle: 'کیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733345313635.png"], +}, +{ + title: 'اسپرسو ماکیاتو', + desc: 'اسپرسو و فوم شیر', + price: 45000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683373207313.png"], +}, +{ + title: 'موکا', + desc: 'اسپرسو و شیر و شکلات گرم', + price: 61000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683373800924.png"], +}, +{ + title: 'آفوگاتو + گرانولا', + desc: 'شات اسپرسو و اسکوپ بستنی و گرانول', + price: 66000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696438010688.png"], +}, +{ + title: 'فرنچ پرس', + desc: '', + price: 52000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه های دمی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683374733936.png"], +}, +{ + title: 'فراپه لاوندر', + desc: 'قهوه تادی و عصاره اسطوخودوس و شیر و بستنی', + price: 78000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683376449033.png"], +}, +{ + title: 'فراپه افرا ', + desc: 'قهوه تادی و شیره درخت افرا و شیر و بستنی', + price: 83000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683376900135.png"], +}, +{ + title: 'موهیتو ', + desc: '', + price: 67000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683378984433.png"], +}, +{ + title: 'لیموناد اسپرسو ', + desc: 'قهوه تادی و لیمو و سودا ', + price: 71000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683379091941.png"], +}, +{ + title: 'چای و نبات', + desc: '', + price: 34000, + restaurantSlug: '1972Cafe', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683399387668.png"], +}, +{ + title: 'گل گاوزبان', + desc: '', + price: 47000, + restaurantSlug: '1972Cafe', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683399523608.png"], +}, +{ + title: 'به لیمو و آویشن', + desc: '', + price: 45000, + restaurantSlug: '1972Cafe', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683399598375.png"], +}, +{ + title: 'دمنوش ترش و عسل', + desc: '', + price: 46000, + restaurantSlug: '1972Cafe', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1683399710195.png"], +}, +{ + title: 'اسپرسو 50٪', + desc: '', + price: 42000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو 100٪', + desc: '', + price: 46000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو 50٪', + desc: '', + price: 44000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو 100%', + desc: '', + price: 48000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کن هیلو 50%', + desc: '', + price: 44000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کن هیلو %100', + desc: '', + price: 48000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فلت وایت 50%', + desc: '', + price: 51000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فلت وایت 100%', + desc: '', + price: 53000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رومانو50%', + desc: '', + price: 44000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رومانو100%', + desc: '', + price: 48000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کورتادو50%', + desc: '', + price: 46000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کورتادو 100%', + desc: '', + price: 50000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته ماکیاتو50%', + desc: '', + price: 49000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته ماکیاتو100%', + desc: '', + price: 53000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکاتلا 50%', + desc: '', + price: 57000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکاتلا100%', + desc: '', + price: 61000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیچیرین50%', + desc: '', + price: 55000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیچیرین100%', + desc: '', + price: 59000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته سفرون50%', + desc: '', + price: 56000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته سفرون100%', + desc: '', + price: 60000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سینامون لاته50%', + desc: '', + price: 55000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سینامون لاته100%', + desc: '', + price: 59000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو50%', + desc: '', + price: 53000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو100%', + desc: '', + price: 57000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته 50%', + desc: '', + price: 53000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته 100%', + desc: '', + price: 57000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا 50%', + desc: '', + price: 56000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا100%', + desc: '', + price: 60000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های گرم (بر پایه اسپرسو)', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اورجینال آفوگاتو50%', + desc: '', + price: 58000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اورجینال آفوگاتو100%', + desc: '', + price: 60000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سفرون آفوگاتو50%', + desc: '', + price: 61000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سفرون آفوگاتو100%', + desc: '', + price: 65000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیسد امریکانو50%', + desc: '', + price: 45000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیسد امریکانو100%', + desc: '', + price: 49000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیسد لاته 50%', + desc: '', + price: 56000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیسد لاته 100%', + desc: '', + price: 60000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیسد موکا 50%', + desc: '', + price: 64000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیسدموکا100 %', + desc: '', + price: 68000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فراپاچینو 50%', + desc: '', + price: 60000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فراپاچینو 100%', + desc: '', + price: 64000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت ویژه', + desc: '', + price: 52000, + restaurantSlug: 'o-cafe', + categoryTitle: ' نوشیدنی های گرم ملل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت کلاسیک', + desc: '', + price: 46000, + restaurantSlug: 'o-cafe', + categoryTitle: ' نوشیدنی های گرم ملل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مارشمالو چاکلت', + desc: '', + price: 62000, + restaurantSlug: 'o-cafe', + categoryTitle: ' نوشیدنی های گرم ملل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 52000, + restaurantSlug: 'o-cafe', + categoryTitle: ' نوشیدنی های گرم ملل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دارک چاکلت', + desc: '', + price: 51000, + restaurantSlug: 'o-cafe', + categoryTitle: ' نوشیدنی های گرم ملل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات فندقی', + desc: '', + price: 54000, + restaurantSlug: 'o-cafe', + categoryTitle: ' نوشیدنی های گرم ملل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'افترایت چاکلت', + desc: '', + price: 54000, + restaurantSlug: 'o-cafe', + categoryTitle: ' نوشیدنی های گرم ملل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماچا لاته', + desc: '', + price: 66000, + restaurantSlug: 'o-cafe', + categoryTitle: ' نوشیدنی های گرم ملل', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا ', + desc: '', + price: 48000, + restaurantSlug: 'o-cafe', + categoryTitle: ' نوشیدنی های گرم ملل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا رژیمی', + desc: '', + price: 50000, + restaurantSlug: 'o-cafe', + categoryTitle: ' نوشیدنی های گرم ملل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا چاکلت', + desc: '', + price: 56000, + restaurantSlug: 'o-cafe', + categoryTitle: ' نوشیدنی های گرم ملل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ترک کلاسیک', + desc: '', + price: 54000, + restaurantSlug: 'o-cafe', + categoryTitle: ' قهوه های شنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ترکیش وایت کافی', + desc: '', + price: 58000, + restaurantSlug: 'o-cafe', + categoryTitle: ' قهوه های شنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ترکیش وایت هل و دارچین', + desc: '', + price: 59000, + restaurantSlug: 'o-cafe', + categoryTitle: ' قهوه های شنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ترکیش وایت زعفرانی', + desc: '', + price: 69000, + restaurantSlug: 'o-cafe', + categoryTitle: ' قهوه های شنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو', + desc: '', + price: 82000, + restaurantSlug: 'o-cafe', + categoryTitle: ' شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موز شکلات', + desc: '', + price: 80000, + restaurantSlug: 'o-cafe', + categoryTitle: ' شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کره بادام زمینی', + desc: '', + price: 80000, + restaurantSlug: 'o-cafe', + categoryTitle: ' شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شکلات فندق', + desc: '', + price: 78000, + restaurantSlug: 'o-cafe', + categoryTitle: ' شیک ها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پسته زعفران ', + desc: '', + price: 86000, + restaurantSlug: 'o-cafe', + categoryTitle: ' شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیت کت', + desc: '', + price: 84000, + restaurantSlug: 'o-cafe', + categoryTitle: ' شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اورئو', + desc: '', + price: 80000, + restaurantSlug: 'o-cafe', + categoryTitle: ' شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لوتوس', + desc: '', + price: 80000, + restaurantSlug: 'o-cafe', + categoryTitle: ' شیک ها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نوتلا', + desc: '', + price: 82000, + restaurantSlug: 'o-cafe', + categoryTitle: ' شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ویژه (کره بادام زمینی_نوتلا)', + desc: '', + price: 86000, + restaurantSlug: 'o-cafe', + categoryTitle: ' شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک ردولوت', + desc: '', + price: 49000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کوکی ها و دسرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک موز گردو ', + desc: '', + price: 50000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کوکی ها و دسرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک شکلات خامه ', + desc: '', + price: 48000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کوکی ها و دسرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک هویج گردو', + desc: '', + price: 48000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کوکی ها و دسرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک تیرامیسو', + desc: '', + price: 49000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کوکی ها و دسرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاریس برست', + desc: '', + price: 52000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کوکی ها و دسرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی ', + desc: '', + price: 6000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کوکی ها و دسرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپشیال', + desc: '', + price: 55000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کلد برو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'های کافئین', + desc: '', + price: 58000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کلد برو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو+انرژی زا', + desc: '', + price: 70000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کلد برو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکا کلدبرو', + desc: '', + price: 66000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کلد برو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوک اسپرسو', + desc: '', + price: 64000, + restaurantSlug: 'o-cafe', + categoryTitle: ' کلد برو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'v 60', + desc: '', + price: 68000, + restaurantSlug: 'o-cafe', + categoryTitle: ' موج سوم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایروپرس', + desc: '', + price: 68000, + restaurantSlug: 'o-cafe', + categoryTitle: ' موج سوم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کمکس تک کاپ', + desc: '', + price: 62000, + restaurantSlug: 'o-cafe', + categoryTitle: ' موج سوم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کمکس 3 کاپ', + desc: '', + price: 78000, + restaurantSlug: 'o-cafe', + categoryTitle: ' موج سوم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سایفون', + desc: '', + price: 68000, + restaurantSlug: 'o-cafe', + categoryTitle: ' موج سوم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کمر باریک (شارژ رایگان)', + desc: '', + price: 32000, + restaurantSlug: 'o-cafe', + categoryTitle: ' چای های ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هل و دارچین ', + desc: '', + price: 30000, + restaurantSlug: 'o-cafe', + categoryTitle: ' چای های ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سبز و دارچین', + desc: '', + price: 33000, + restaurantSlug: 'o-cafe', + categoryTitle: ' چای های ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیمو عسل', + desc: '', + price: 36000, + restaurantSlug: 'o-cafe', + categoryTitle: ' چای های ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'زعفران ', + desc: '', + price: 40000, + restaurantSlug: 'o-cafe', + categoryTitle: ' چای های ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوهی و لوندر', + desc: '', + price: 34000, + restaurantSlug: 'o-cafe', + categoryTitle: ' چای های ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ویژه', + desc: '', + price: 40000, + restaurantSlug: 'o-cafe', + categoryTitle: ' چای های ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آرامبخش', + desc: '', + price: 46000, + restaurantSlug: 'o-cafe', + categoryTitle: ' دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گل گاو زبان', + desc: '', + price: 44000, + restaurantSlug: 'o-cafe', + categoryTitle: ' دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'به لیمو بهار نارنج', + desc: '', + price: 44000, + restaurantSlug: 'o-cafe', + categoryTitle: ' دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پرتقال گل محمدی', + desc: '', + price: 48000, + restaurantSlug: 'o-cafe', + categoryTitle: ' دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب وبه', + desc: '', + price: 46000, + restaurantSlug: 'o-cafe', + categoryTitle: ' دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب و وانیل', + desc: '', + price: 46000, + restaurantSlug: 'o-cafe', + categoryTitle: ' دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوئین بری', + desc: '', + price: 50000, + restaurantSlug: 'o-cafe', + categoryTitle: ' دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آویشن', + desc: '', + price: 44000, + restaurantSlug: 'o-cafe', + categoryTitle: ' دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ویژه اٌ ', + desc: '', + price: 50000, + restaurantSlug: 'o-cafe', + categoryTitle: ' دمنوش ها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جینجر لایم', + desc: '', + price: 55000, + restaurantSlug: 'o-cafe', + categoryTitle: ' ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: '', + price: 56000, + restaurantSlug: 'o-cafe', + categoryTitle: ' ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رد موهیتو', + desc: '', + price: 64000, + restaurantSlug: 'o-cafe', + categoryTitle: ' ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیموناد', + desc: '', + price: 54000, + restaurantSlug: 'o-cafe', + categoryTitle: ' ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خاکشیر بهار نارنج', + desc: '', + price: 62000, + restaurantSlug: 'o-cafe', + categoryTitle: ' ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'زعفران آلوئه ورا', + desc: '', + price: 70000, + restaurantSlug: 'o-cafe', + categoryTitle: ' ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیمو زعفران', + desc: '', + price: 64000, + restaurantSlug: 'o-cafe', + categoryTitle: ' ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بید مشک نسترن ', + desc: '', + price: 56000, + restaurantSlug: 'o-cafe', + categoryTitle: ' ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رز چینی', + desc: '', + price: 66000, + restaurantSlug: 'o-cafe', + categoryTitle: ' ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اوشن ', + desc: '', + price: 66000, + restaurantSlug: 'o-cafe', + categoryTitle: ' ماکتل ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاستا چیکن آلفردو', + desc: '', + price: 128000, + restaurantSlug: 'o-cafe', + categoryTitle: ' غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاستا گوجه و سبزیجات', + desc: '', + price: 96000, + restaurantSlug: 'o-cafe', + categoryTitle: ' غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر کلاسیک', + desc: '', + price: 132000, + restaurantSlug: 'o-cafe', + categoryTitle: ' غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز برگر', + desc: '', + price: 146000, + restaurantSlug: 'o-cafe', + categoryTitle: ' غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دابل چیز برگر', + desc: '', + price: 189000, + restaurantSlug: 'o-cafe', + categoryTitle: ' غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چوریتسو برگر', + desc: '', + price: 180000, + restaurantSlug: 'o-cafe', + categoryTitle: ' غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر با سس قارچ', + desc: '', + price: 145000, + restaurantSlug: 'o-cafe', + categoryTitle: ' غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شنیسل چیکن ', + desc: '', + price: 160000, + restaurantSlug: 'o-cafe', + categoryTitle: ' غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تست فیله مرغ', + desc: '', + price: 98000, + restaurantSlug: 'o-cafe', + categoryTitle: ' پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تست مرغ سرد', + desc: '', + price: 94000, + restaurantSlug: 'o-cafe', + categoryTitle: ' پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار (گریل)', + desc: '', + price: 138000, + restaurantSlug: 'o-cafe', + categoryTitle: ' پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد اٌ', + desc: '', + price: 0, + restaurantSlug: 'o-cafe', + categoryTitle: ' پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کروسان ژامبون ', + desc: '', + price: 96000, + restaurantSlug: 'o-cafe', + categoryTitle: ' پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب کلاسیک ', + desc: '', + price: 60000, + restaurantSlug: 'o-cafe', + categoryTitle: ' سیب زمینی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب سس قارچ', + desc: '', + price: 88000, + restaurantSlug: 'o-cafe', + categoryTitle: ' سیب زمینی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب با فیله مرغ ترش', + desc: '', + price: 106000, + restaurantSlug: 'o-cafe', + categoryTitle: ' سیب زمینی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب پنیری با سوجوک', + desc: '', + price: 96000, + restaurantSlug: 'o-cafe', + categoryTitle: ' سیب زمینی ها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کشک بادمجان', + desc: '', + price: 108000, + restaurantSlug: 'o-cafe', + categoryTitle: ' پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آبدوغ خیار (ناهار و عصرانه)', + desc: '', + price: 118000, + restaurantSlug: 'o-cafe', + categoryTitle: ' غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'املت قارچ ', + desc: '', + price: 70000, + restaurantSlug: 'o-cafe', + categoryTitle: ' صبحانه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'املت فرانسه ', + desc: '', + price: 73000, + restaurantSlug: 'o-cafe', + categoryTitle: ' صبحانه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'املت ایرانی ', + desc: '', + price: 66000, + restaurantSlug: 'o-cafe', + categoryTitle: ' صبحانه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بشقاب انگلیسی', + desc: '', + price: 186000, + restaurantSlug: 'o-cafe', + categoryTitle: ' صبحانه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نیمرو با نان کروسان ', + desc: '', + price: 69000, + restaurantSlug: 'o-cafe', + categoryTitle: ' صبحانه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیروپ', + desc: '', + price: 8000, + restaurantSlug: 'o-cafe', + categoryTitle: ' آپشنال', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سس قارچ', + desc: '', + price: 28000, + restaurantSlug: 'o-cafe', + categoryTitle: ' آپشنال', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنیر ', + desc: '', + price: 20000, + restaurantSlug: 'o-cafe', + categoryTitle: ' آپشنال', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سس اضافه', + desc: '', + price: 3000, + restaurantSlug: 'o-cafe', + categoryTitle: ' آپشنال', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سس اضافه', + desc: '', + price: 5000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو کامرشیال', + desc: '', + price: 30000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو اسپشیال', + desc: '', + price: 40000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو - کامرشیال', + desc: '', + price: 31000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو - اسپشیال', + desc: '', + price: 41000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو ماکیاتو - کامرشیال', + desc: '', + price: 35000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو ماکیاتو - اسپشیال', + desc: '', + price: 45000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لته ماکیاتو - کامرشیال', + desc: '', + price: 45000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لته ماکیاتو - اسپشیال', + desc: '', + price: 55000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته - کامرشیال', + desc: '', + price: 45000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته اسپشیال', + desc: '', + price: 55000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو - کامرشیال', + desc: '', + price: 42000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو - اسپشیال', + desc: '', + price: 52000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا - کامرشیال', + desc: '', + price: 50000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا - اسپشیال', + desc: '', + price: 55000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'افوگاتو - کامرشیال', + desc: '', + price: 55000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'افوگاتو - اسپشیال ', + desc: '', + price: 65000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر گرم', + desc: '', + price: 25000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر زعفران', + desc: '', + price: 40000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 42000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دارک چاکلت', + desc: '', + price: 45000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 48000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر نسکافه', + desc: '', + price: 40000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر کاکائو', + desc: '', + price: 38000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر عسل', + desc: '', + price: 40000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر عسل دارچین', + desc: '', + price: 42000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'یونانی', + desc: '', + price: 45000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'افوگاتو چاکلت', + desc: '', + price: 50000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا', + desc: '', + price: 42000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چاکلت ماسالا', + desc: '', + price: 45000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماچا لته', + desc: '', + price: 65000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای انگلیسی', + desc: '', + price: 40000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: '760', + desc: '', + price: 70000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس ماچا لته', + desc: '', + price: 70000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: ' ایس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لته زعفران', + desc: '', + price: 58000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: ' ایس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کن هیلو', + desc: '310000 - 410000', + price: 41000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: ' ایس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیروپ اضافه', + desc: '', + price: 0, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار (سوخاری)', + desc: '', + price: 148000, + restaurantSlug: 'o-cafe', + categoryTitle: ' پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب با بیکن گوساله', + desc: '', + price: 96000, + restaurantSlug: 'o-cafe', + categoryTitle: ' سیب زمینی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار (رول سوخاری با پنیر گودا و جعفری) Caesar salad with fried chicken roll ', + desc: 'کاهو رسمی و پیچ/گوجه گیلاسی/زیتون/نان کروتان/پنیر پارمزان/همراه با سس سزار..lettuce/tomato/olive/parmesan cheese/crotan bread/ caesar sauce ', + price: 410000, + restaurantSlug: 'zhivan', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713707131956.png"], +}, +{ + title: 'آیس چاکلت ', + desc: '', + price: 57000, + restaurantSlug: 'o-cafe', + categoryTitle: 'نوشیدنی های سرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس آمریکانو', + desc: '', + price: 48000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1686422430315.png"], +}, +{ + title: 'آیس لته', + desc: '', + price: 63000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1686422578987.png"], +}, +{ + title: 'مت سلامی.. Salami', + desc: 'پنیر/سالامی/پپرونی/هالوپینو/قارچ..cheese/salami/ pepperoni/', + price: 545000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713772598492.png"], +}, +{ + title: 'دنر میکس .. doner kebab sandwich ', + desc: 'دنر گوشت و مرغ/جعفری/پیاز/خیارشور/سس مخصوص/سیب زمینی..chicken & meat doner/parsley/pickled cucumber/onion/potato/special sauce ', + price: 416000, + restaurantSlug: 'zhivan', + categoryTitle: 'ساندویچ و برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713772562102.png"], +}, +{ + title: 'مک اند چیز .. Mac & cheese', + desc: ' پنیر/پاستا ماکارون/دیپ چدار..cheese/macaroni pasta/cheddar dip sause', + price: 360000, + restaurantSlug: 'zhivan', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715787937416.png"], +}, +{ + title: 'دنر میکس(تک نفره).. Mixed doner ', + desc: 'پنیر/دنر مرغ و گوشت/پیاز/قارچ..cheese/chicken & meat doner/onion/olive/mushroom', + price: 514000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713772515977.png"], +}, +{ + title: 'دنر میکس(دونفره).. Mixed doner', + desc: ' پنیر/دنر مرغ و گوشت/پیاز/قارچ..cheese/chicken & meat diner/onion/olive/mushroom', + price: 810000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713771713173.png"], +}, +{ + title: 'چای سیاه(تک نفره) black tea', + desc: '', + price: 70000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715853902968.png"], +}, +{ + title: 'چای سیاه(دونفره) black tea', + desc: '', + price: 120000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715853712320.png"], +}, +{ + title: 'چای سیاه زعفرانی (تک نفره) saffron tea', + desc: '', + price: 80000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715853866749.png"], +}, +{ + title: 'چای سیاه زعفرانی(دونفره) saffron tea', + desc: '', + price: 130000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715853587100.png"], +}, +{ + title: 'لاته.. Latte ', + desc: 'قهوه 70/30 ', + price: 155000, + restaurantSlug: 'zhivan', + categoryTitle: 'قهوه ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715710811427.png"], +}, +{ + title: 'آیس آمریکانو .. ice Americano ', + desc: '', + price: 95000, + restaurantSlug: 'zhivan', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715714615956.png"], +}, +{ + title: 'آیس موکا ..ice mocha', + desc: '', + price: 130000, + restaurantSlug: 'zhivan', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715714518406.png"], +}, +{ + title: 'آیس لاته .. ice latte ', + desc: '', + price: 115000, + restaurantSlug: 'zhivan', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715714441403.png"], +}, +{ + title: 'پاستا چیکن آلفردو', + desc: '', + price: 167000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1689254831099.png"], +}, +{ + title: 'پاستا بیف آلفردو', + desc: '', + price: 189000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1689255132686.png"], +}, +{ + title: 'پاستا بلونز', + desc: 'پاستا-سس گوجه -ریحان -پنیر پارمزان', + price: 163000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696432291066.png"], +}, +{ + title: 'نان سیر', + desc: '', + price: 155000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیش غذا و سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1689259303799.png"], +}, +{ + title: 'سالاد سزار و مرغ گریل', + desc: 'کاهو و مرغ گریل و سس مخصوص', + price: 168000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیش غذا و سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1689259719810.png"], +}, +{ + title: 'سالاد سزار با مرغ گریل', + desc: '', + price: 190000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'سالاد و پیش غذا', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'سالاد سزار سه رول', + desc: '', + price: 235000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'سالاد و پیش غذا', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'سالاد سزار دو رول', + desc: '', + price: 200000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'سالاد و پیش غذا', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'سالاد فصل', + desc: '', + price: 75000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'سالاد و پیش غذا', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'کشک و بادمجان', + desc: '', + price: 90000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'سالاد و پیش غذا', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آب دوغ خیار نوستالژی', + desc: '', + price: 120000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'سالاد و پیش غذا', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آش رشته کشک', + desc: '', + price: 55000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'آش بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آش رشته ترشی', + desc: '', + price: 55000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'آش بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آش جو با سیرابی', + desc: '', + price: 60000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'آش بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آش جو بدون سیرابی', + desc: '', + price: 57000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'آش بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آش شله قلمکار', + desc: '', + price: 60000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'آش بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آش آبادانی', + desc: '', + price: 60000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'آش بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'بشقاب ویژه مهتاب', + desc: '', + price: 310000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'سوخاری پنج تیکه', + desc: '', + price: 270000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'سوخاری سه تیکه', + desc: '', + price: 195000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'سوخاری پنیری پنج تیکه', + desc: '', + price: 295000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'سوخاری پنیری سه تیکه', + desc: '', + price: 220000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لازانیا', + desc: '', + price: 200000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'پاستا پنه آلفردو', + desc: '', + price: 190000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'بشقاب سبزیجات', + desc: '', + price: 130000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'کوفته تبریزی', + desc: '', + price: 120000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'کباب تابه', + desc: '', + price: 150000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'بورک گوشت', + desc: '', + price: 150000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'بورک مرغ', + desc: '', + price: 150000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'حسرت الملوک', + desc: '', + price: 160000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شربت بهار نارنج', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شربت بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شربت بیدمشک', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شربت بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شربت خیار سکنجبین', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شربت بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شربت آلبالو', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شربت بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شربت پرتقال', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شربت بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شربت نوستالژی', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شربت بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شربت آرامش', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شربت بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'تنگ شربت', + desc: '', + price: 200000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شربت بار مهتاب', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'برگر ویژه مهتاب', + desc: '', + price: 220000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'برگر', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'رویال برگر', + desc: '', + price: 200000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'برگر', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'ماشروم برگر', + desc: '', + price: 170000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'برگر', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'اسپرسو', + desc: '', + price: 35000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آمریکانو', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'نوتلا لاته', + desc: '', + price: 60000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'لاته', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'ماچا لاته', + desc: '', + price: 60000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'کاپوچینو', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'نسکافه', + desc: '', + price: 55000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'موکا', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'ماکیاتو', + desc: '', + price: 55000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'کارامل ماکیاتو', + desc: '', + price: 65000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'کوک اسپرسو', + desc: '', + price: 55000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'دالگونا', + desc: '', + price: 70000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آیس موکا', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'رومانو', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آفوگاتو', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آیس لاته', + desc: '', + price: 55000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'ترک', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'یونانی', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'فرانسه', + desc: '', + price: 60000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'طعم و سیروپ اضافه', + desc: '', + price: 10000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'کافی بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 45000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی گرم شکلاتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'دارک چاکلت', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی گرم شکلاتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'وانیل چاکلت', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی گرم شکلاتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'فندق چاکلت', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی گرم شکلاتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'ماسالا', + desc: '', + price: 45000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی گرم شکلاتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'ماسالا چاکلت', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی گرم شکلاتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی گرم شکلاتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'حلوا مخصوص', + desc: '', + price: 30000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دسر و کیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'باقلوا', + desc: '', + price: 35000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دسر و کیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'مسقطی ویژه', + desc: '', + price: 35000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دسر و کیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'کیک بستنی', + desc: '', + price: 70000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دسر و کیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'کیک روز', + desc: '', + price: 60000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دسر و کیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شیک مخصوص', + desc: '', + price: 95000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شیک موز انبه', + desc: '', + price: 80000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شیک شکلات', + desc: '', + price: 75000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شیک بادام زمینی', + desc: '', + price: 80000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شیک نوتلا', + desc: '', + price: 75000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شیک دارک', + desc: '', + price: 75000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'شیک ترش', + desc: '', + price: 75000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'شیک', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'چای مخصوص', + desc: '', + price: 50000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'دمنوش سلامتی', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'چای دمی', + desc: '', + price: 35000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'چای زعفران', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'چای سبز', + desc: '', + price: 35000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'دمنوش لیمو نعناع', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'دمنوش بهار نارنج', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'دمنوش گل گاوزبان', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'دمنوش سیب و به لیمو', + desc: '', + price: 45000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'دمنوش سیب و دارچین', + desc: '', + price: 45000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'دمنوش به', + desc: '', + price: 40000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'قوری چای', + desc: '', + price: 100000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'طعم اضافه', + desc: 'هل - دارچین - زنجبیل ', + price: 1000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'دمنوش بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'موهیتو', + desc: '', + price: 60000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'رد موهیتو', + desc: '', + price: 65000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'لیموناد', + desc: '', + price: 60000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'سیگنیچر', + desc: '', + price: 65000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'بلواسکای', + desc: '', + price: 65000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'تروپیکال', + desc: '', + price: 65000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'اسموتی مخصوص', + desc: '', + price: 95000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'اسموتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'اسموتی شاه توت', + desc: '', + price: 80000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'اسموتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'اسموتی هندوانه', + desc: '', + price: 70000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'اسموتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'اسموتی توت فرنگی', + desc: '', + price: 80000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'اسموتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'اسموتی طالبی', + desc: '', + price: 80000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'اسموتی', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'آب معدنی ', + desc: '', + price: 6000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'کوکا قوطی', + desc: '', + price: 19000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فانتا قوطی', + desc: '', + price: 19000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'اسپرایت قوطی', + desc: '', + price: 19000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'کوکا شیشه', + desc: '', + price: 15000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'فانتا شیشه ای', + desc: '', + price: 15000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'اسپرایت شیشه ای', + desc: '', + price: 15000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'دلستر شیشه انواع طعم ها', + desc: 'طعم هلو - مالت - استوایی - لیمو - سیب', + price: 22000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'انرژی زا', + desc: '', + price: 30000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 30, + stockDefault: 30, + images: [], +}, +{ + title: 'دوغ محلی', + desc: '', + price: 30000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 100, + stockDefault: 100, + images: [], +}, +{ + title: 'فرش دی ( آبمویوه گازدار) با طعم های مختلف', + desc: 'پرتقال پشن فروت - انگور قرمز - انبه پشن فروت - آلبالو', + price: 19000, + restaurantSlug: 'mahtabgarden', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک نوتلا', + desc: '', + price: 83000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1692637912175.png"], +}, +{ + title: 'وایت فرایز White fries', + desc: '', + price: 115000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیش غذا و سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1692635556395.png"], +}, +{ + title: 'یامی برگر', + desc: 'یک عدد برگر گوشت گوساله،یک عدد پنیر چیز برگر، یک عدد ژامبون، کاهو، خیارشور، گوجه، سس مخصوص ', + price: 250000, + restaurantSlug: 'yummyburger', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222298625.png"], +}, +{ + title: 'یامی اسپشیال', + desc: 'یک عدد برگر گوشت گوساله،دو عدد پنیر چیز برگر، دو عدد ژامبون، کاهو، خیارشور، گوجه، سس مخصوص', + price: 275000, + restaurantSlug: 'yummyburger', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733221989785.png"], +}, +{ + title: 'چیز برگر', + desc: 'یک عدد برگر گوشت گوساله، یک عدد پنیر چیز برگر، کاهو، خیارشور، گوجه، سس مخصوص ', + price: 235000, + restaurantSlug: 'yummyburger', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222342056.png"], +}, +{ + title: 'ماشروم برگر', + desc: 'یک عدد برگر گوشت گوساله، قارچ، پنیر چیز برگر، کاهو، خیارشور، گوجه، سس مخصوص ', + price: 270000, + restaurantSlug: 'yummyburger', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222376578.png"], +}, +{ + title: 'چوریتسو برگر', + desc: 'یک عدد برگر گوشت گوساله، سوسیس چوریتسو، دو عدد پنیر چیز برگر، سس مخصوص', + price: 340000, + restaurantSlug: 'yummyburger', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1699784885688.png"], +}, +{ + title: 'آمریکن برگر', + desc: 'یک عدد برگر گوشت گوساله، پیاز سوخاری،دو عدد پنیر چیز برگر، خیارشور، سس مخصوص', + price: 285000, + restaurantSlug: 'yummyburger', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222439998.png"], +}, +{ + title: 'هالوپینو برگر(تند)', + desc: 'یک عدد برگر گوشت گوساله، یک عدد پنیر چیز برگر،فلفل هالوپینو ، گوجه، کاهو، خیارشور،سس مخصوص ', + price: 270000, + restaurantSlug: 'yummyburger', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222055490.png"], +}, +{ + title: 'کلاسیک برگر', + desc: 'یک عدد برگر گوشت گوساله، کاهو، خیارشور، گوجه، سس مخصوص ', + price: 220000, + restaurantSlug: 'yummyburger', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222495307.png"], +}, +{ + title: 'چیکن برگر', + desc: 'یک عدد برگر مرغ، یک عدد پنیر چیز برگر، کاهو، خیارشور،گوجه،سس مخصوص', + price: 220000, + restaurantSlug: 'yummyburger', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222208247.png"], +}, +{ + title: 'دبل برگر', + desc: 'دو عدد برگر گوشت گوساله، کاهو، خیارشور، گوجه، سس مخصوص ', + price: 340000, + restaurantSlug: 'yummyburger', + categoryTitle: 'دبل برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222558661.png"], +}, +{ + title: 'دبل چیز برگر', + desc: 'دو عدد برگر گوشت گوساله، دو عدد پنیر چیز برگر، کاهو، خیارشور، گوجه، سس مخصوص ', + price: 360000, + restaurantSlug: 'yummyburger', + categoryTitle: 'دبل برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222616471.png"], +}, +{ + title: 'دبل چیز اسپشیال', + desc: 'دو عدد برگر گوشت گوساله، دو عدد پنیر چیز برگر، دو عدد ژامبون،کاهو، خیارشور، گوجه، سس مخصوص', + price: 380000, + restaurantSlug: 'yummyburger', + categoryTitle: 'دبل برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1699785752276.png"], +}, +{ + title: 'یامی چیکن', + desc: 'یک عدد برگر گوشت گوساله، یک عدد برگر مرغ، یک عدد ژامبون، یک عدد پنیر چیز برگر، کاهو، گوجه، خیارشور، سس مخصوص', + price: 350000, + restaurantSlug: 'yummyburger', + categoryTitle: 'دبل برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222265811.png"], +}, +{ + title: 'تریپل برگر', + desc: 'سه عدد برگر گوشت گوساله، سه عدد پنیر چیز برگر، کاهو، خیارشور، گوجه، سس مخصوص ', + price: 450000, + restaurantSlug: 'yummyburger', + categoryTitle: 'تریپل برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222694715.png"], +}, +{ + title: 'میکس تریپل', + desc: 'دو عدد برگر گوشت گوساله، یک عدد برگر مرغ ، دو عدد پنیر چیز برگر، کاهو، خیارشور، گوجه، سس مخصوص ', + price: 450000, + restaurantSlug: 'yummyburger', + categoryTitle: 'تریپل برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222144761.png"], +}, +{ + title: 'سالاد سزار', + desc: 'دو عدد رول سوخاری،کاهو، نان سیر،زیتون سبز،سس سزار', + price: 350000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222826703.png"], +}, +{ + title: 'سالاد یامی', + desc: 'فیله مرغ گریل شده،میکس کلم و کاهو،نان تست،ذرت،خیار،هویج،گرین سس', + price: 320000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222864377.png"], +}, +{ + title: 'فرنچ فرایز', + desc: 'سیب زمینی سرخ شده، ادویه مخصوص', + price: 120000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1699784947500.png"], +}, +{ + title: 'قهوه ترک', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های دمی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فرنچ پرس', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های دمی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'V60', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های دمی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کمکس', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های دمی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو / ریسترتو (۳۰-۷۰)', + desc: '', + price: 50000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو/ ریسترتو (عربیکا)', + desc: '', + price: 60000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماکیاتو (۳۰-۷۰)', + desc: '', + price: 60000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماکیاتو (عربیکا)', + desc: '', + price: 67000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو (۳۰-۷۰) ', + desc: '', + price: 58000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو (عربیکا)', + desc: '', + price: 63000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو (۳۰-۷۰)', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو (عربیکا) ', + desc: '', + price: 75000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کافه لته (۳۰-۷۰)', + desc: '', + price: 80000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کافه لته (عربیکا) ', + desc: '', + price: 75000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل ماکیاتو (۳۰-۷۰) ', + desc: '', + price: 78000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل ماکیاتو (عربیکا)', + desc: '', + price: 83000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا (۳۰-۷۰) ', + desc: '', + price: 80000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا (عربیکا)', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو کن پانا', + desc: '', + price: 52000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 68000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا', + desc: '', + price: 68000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خیار سکنجبین', + desc: '', + price: 55000, + restaurantSlug: 'dream', + categoryTitle: 'شربت ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شربت لیمونعنا', + desc: '', + price: 55000, + restaurantSlug: 'dream', + categoryTitle: 'شربت ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شربت بهار نارنج', + desc: '', + price: 55000, + restaurantSlug: 'dream', + categoryTitle: 'شربت ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شربت نسترن', + desc: '', + price: 55000, + restaurantSlug: 'dream', + categoryTitle: 'شربت ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شربت بیدمشک', + desc: '', + price: 55000, + restaurantSlug: 'dream', + categoryTitle: 'شربت ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شربت زعفران', + desc: '', + price: 75000, + restaurantSlug: 'dream', + categoryTitle: 'شربت ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای دمی تک نفره', + desc: '', + price: 40000, + restaurantSlug: 'dream', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای زعفران', + desc: 'همراه با باقلوا', + price: 50000, + restaurantSlug: 'dream', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای آرامش ', + desc: '', + price: 55000, + restaurantSlug: 'dream', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش آویشن نعنا', + desc: '', + price: 55000, + restaurantSlug: 'dream', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش بهارنارنج به لیمو', + desc: '', + price: 55000, + restaurantSlug: 'dream', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش میوه های قرمز', + desc: '', + price: 55000, + restaurantSlug: 'dream', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لته (70-30)', + desc: '', + price: 75000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لته (عربیکا)', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس کارامل ماکیاتو (70-30)', + desc: '', + price: 80000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس کارامل ماکیاتو (عربیکا)', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس موکا (70-30)', + desc: '', + price: 82000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس موکا (عربیکا)', + desc: '', + price: 87000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس امریکانو (70-30)', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس امریکانو (عربیکا)', + desc: '', + price: 75000, + restaurantSlug: 'dream', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک وانیل ', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک قهوه', + desc: '', + price: 95000, + restaurantSlug: 'dream', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک بادام زمینی ', + desc: '', + price: 87000, + restaurantSlug: 'dream', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک کارامل سالت', + desc: '', + price: 87000, + restaurantSlug: 'dream', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک نوتلا', + desc: '', + price: 95000, + restaurantSlug: 'dream', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک شکلات', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک موز شکلات', + desc: '', + price: 100000, + restaurantSlug: 'dream', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک شکلات بادام', + desc: '', + price: 95000, + restaurantSlug: 'dream', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیموناد', + desc: '', + price: 65000, + restaurantSlug: 'dream', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جینجر رزماری ', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اورنج لیموناد', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رد موهیتو', + desc: '', + price: 72000, + restaurantSlug: 'dream', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سوربری ', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تروپیکال فروت', + desc: '', + price: 87000, + restaurantSlug: 'dream', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بلواسکای ', + desc: '', + price: 75000, + restaurantSlug: 'dream', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'انبه شاتوت ', + desc: '', + price: 90000, + restaurantSlug: 'dream', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رول دارچین ساده', + desc: '', + price: 550000, + restaurantSlug: 'dream', + categoryTitle: 'فانتزی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کروسان مغزدار ', + desc: '', + price: 75000, + restaurantSlug: 'dream', + categoryTitle: 'فانتزی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شات سیروپ', + desc: '', + price: 15000, + restaurantSlug: 'dream', + categoryTitle: 'افزودنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چانو(سیر و استیک)', + desc: 'گوشت گوساله مزه دار شده،پپرونی،زیتون،قارچ،سس سیر', + price: 480000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیتزا ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733223584119.png"], +}, +{ + title: 'پپرونی', + desc: 'ژامبون پپرونی،قارچ،فلفل دلمه', + price: 390000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیتزا ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733221872848.png"], +}, +{ + title: 'میت ژامبون', + desc: 'ژامبون گوشت،پنیر گودا،زیتون،قارچ', + price: 390000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیتزا ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733221914467.png"], +}, +{ + title: 'پیده(مخصوص یامی)', + desc: ':گوشت چرخ شده با ژامبون گوشت و مرغ،فلفل دلمه،فلفل هالوپینو،قارچ', + price: 440000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیتزا ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1699784972822.png"], +}, +{ + title: 'چیکن پستو', + desc: 'مرغ مزه دار شده،قارچ،پنیر گودا،سس پستو', + price: 440000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیتزا ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1699785036611.png"], +}, +{ + title: 'لیموناد طبیعی', + desc: '', + price: 90000, + restaurantSlug: 'yummyburger', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222964994.png"], +}, +{ + title: 'موهیتو طبیعی', + desc: '', + price: 90000, + restaurantSlug: 'yummyburger', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222984965.png"], +}, +{ + title: 'دلستر قوطی', + desc: '', + price: 50000, + restaurantSlug: 'yummyburger', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733223033671.png"], +}, +{ + title: 'نوشابه قوطی', + desc: '', + price: 43000, + restaurantSlug: 'yummyburger', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733223011213.png"], +}, +{ + title: 'دلستر خانواده', + desc: '', + price: 60000, + restaurantSlug: 'yummyburger', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733223060511.png"], +}, +{ + title: 'آب معدنی', + desc: '', + price: 12000, + restaurantSlug: 'yummyburger', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733223199180.png"], +}, +{ + title: 'شیک لوتوس', + desc: '', + price: 95000, + restaurantSlug: 'dream', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک اورئو', + desc: '', + price: 95000, + restaurantSlug: 'dream', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'افوگاتو', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای دمی با قوری', + desc: '', + price: 55000, + restaurantSlug: 'dream', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنه سوییسی ', + desc: '', + price: 72000, + restaurantSlug: 'dream', + categoryTitle: 'فانتزی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نان توییست', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'فانتزی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کرافین', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'فانتزی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تارت کروسان', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'فانتزی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نان نوتلا', + desc: '', + price: 72000, + restaurantSlug: 'dream', + categoryTitle: 'فانتزی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دسر انبه', + desc: '', + price: 90000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تیرامیسو', + desc: '', + price: 90000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تارت تتن', + desc: '', + price: 95000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میلفوی', + desc: '', + price: 80000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک چوکوبری', + desc: '', + price: 100000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نیمرو', + desc: '', + price: 65000, + restaurantSlug: 'dream', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'املت فرانسوی', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیوب تست و موز کاراملی', + desc: '', + price: 90000, + restaurantSlug: 'dream', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'استافد کروسان', + desc: '', + price: 90000, + restaurantSlug: 'dream', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنکیک المانی با کارامل نمکی', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیاز سوخاری .. onion rings ', + desc: '10 عدد پیاز سوخاری / سس مخصوص..fried onion/special sauce ', + price: 240000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715934447089.png"], +}, +{ + title: 'سیب زمینی با دیپ چدار و بیکن(new)', + desc: 'سیب زمینی وجز ، سس چدار، بیکن، پولبیبر، رد اویل، میکرو گرین', + price: 277000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728330958600.png"], +}, +{ + title: 'لاته', + desc: 'اسپرسو، شیر داغ', + price: 57000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695288832011.png"], +}, +{ + title: 'کاپوچینو ', + desc: 'اسپرسو، شیر فوم دار', + price: 57000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695289099887.png"], +}, +{ + title: 'لاته سرد', + desc: 'اسپرسو، شیر، یخ', + price: 57000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695805895784.png"], +}, +{ + title: 'ماسالا سرد', + desc: 'چای ماسالا، شیر، یخ', + price: 60000, + restaurantSlug: 'monikh', + categoryTitle: 'بدون اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695806144076.png"], +}, +{ + title: 'کافی ژلاتو', + desc: 'اسپرسو، سه اسکوپ بستنی، سس شکلات یا کارامل', + price: 65000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695807888134.png"], +}, +{ + title: 'کاپاچیلو', + desc: 'شیر شیک شده،اسپرسو، بستنی، یخ', + price: 65000, + restaurantSlug: 'monikh', + categoryTitle: 'شیک و اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695808108259.png"], +}, +{ + title: 'کارامل کاپاچیلو سرد', + desc: 'شیر شیک شده،اسپرسو، بستنی، یخ، کارامل', + price: 75000, + restaurantSlug: 'monikh', + categoryTitle: 'شیک و اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695808700457.png"], +}, +{ + title: 'موکاچیلو ', + desc: 'شیر شیک شده،اسپرسو، شکلات، بستنی، یخ', + price: 75000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1695915741217.png"], +}, +{ + title: 'چیکن آلفردو', + desc: 'پنه ، فیله مرغ ، قارچ ، سس آلفردو ، پیازچه ، پارمژان', + price: 300000, + restaurantSlug: 'lanka', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700505401539.png"], +}, +{ + title: 'کلاسیک فرایز', + desc: 'سیب زمینی سرخ شده ، ادویه سیب زمینی،شات سس کچاپ', + price: 115000, + restaurantSlug: 'lanka', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697470183400.png"], +}, +{ + title: 'وگاس فرایز', + desc: 'سیب زمینی سرخ شده ، دیپ گودا ، بیکن گوساله ، ادویه مخصوص ، جعفری،شات سس کچاپ', + price: 195000, + restaurantSlug: 'lanka', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697470153246.png"], +}, +{ + title: 'وایت فرایز', + desc: 'سیب زمینی سرخ شده ، سس قارچ ،ادویه مخصوص ، جعفری', + price: 150000, + restaurantSlug: 'lanka', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697470087842.png"], +}, +{ + title: 'چیز فرایز', + desc: 'سیب زمینی سرخ شده ، بیکن گوساله ، قارچ، پنیرپیتزا ،ادوی مخصوص جعفری ،سس کچاپ', + price: 220000, + restaurantSlug: 'lanka', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697470068926.png"], +}, +{ + title: 'داینامیت شریمپ', + desc: 'میگوهای سوخاری شده جا افتاده در سس داینامیت شرقی به همراه سالاد کلم ،رایس نودل', + price: 285000, + restaurantSlug: 'lanka', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700064997776.png"], +}, +{ + title: 'اورینتال چیکن', + desc: 'تکه های فیله مرغ سوخاری شده به همراه سیب زمینی ساته شده با سیر و ادویه،رایس نودل،سالاد کلم سس سیر و کچاپ', + price: 240000, + restaurantSlug: 'lanka', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697470045975.png"], +}, +{ + title: 'سوپ روز', + desc: '', + price: 105000, + restaurantSlug: 'lanka', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700503529696.png"], +}, +{ + title: 'کته استیک', + desc: '220 گرم فیله گوساله گریل شده ، برنج اعلاء ایرانی ، گوجه ساته شده ، دورچین', + price: 495000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1705685449063.png"], +}, +{ + title: 'جوجه کباب زعفرانی ', + desc: 'برنج اعلاء ایرانی ،۲ عدد سیخ چوبی فیله مرغ طعم دار شده با زعفران ، دورچین ،', + price: 280000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700418953476.png"], +}, +{ + title: 'ته چین مرغ شیرازی', + desc: 'ته چین مرغ ، بادمجان دودی ، دورچین ', + price: 330000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700418905745.png"], +}, +{ + title: 'ته چین گوشت ', + desc: 'ته چین به همراه گوشت فرآوری شده ، بادمجان دودی ، دورچین', + price: 410000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700418859025.png"], +}, +{ + title: 'فسنجان عیانی', + desc: 'ران مرغ جا افتاده در خورشت فسنجان ، مغز گردو ، کته زعفرانی ، دورچین', + price: 370000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700418787599.png"], +}, +{ + title: 'خوراک قزل آلا', + desc: 'ماهی قزل آلا سرخ شده ، بروکلی و هویج ساته شده ، سس صدف ، سس سیر، سالسا لبو و آناناس زنجبیلی ، خرما مغز دار', + price: 280000, + restaurantSlug: 'lanka', + categoryTitle: 'دریایی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700506766244.png"], +}, +{ + title: 'فراید شریمپ', + desc: 'شاه میگو سوخاری شده ، مش پوتیتو ، سبزیجات ساته شده با سس صدف ، سس سیر ، سالسا آناناس زنجبیلی ، خرما مغزدار', + price: 675000, + restaurantSlug: 'lanka', + categoryTitle: 'دریایی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711381169606.png"], +}, +{ + title: 'بیف آلفردو ', + desc: 'پنه ، فیله گوساله ، قارچ ، سس آلفردو ، پیازچه ، پارمژان', + price: 370000, + restaurantSlug: 'lanka', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1709920205103.png"], +}, +{ + title: 'فتوچینی پستو', + desc: 'فتوچینی ، فیله مرغ گریل شده، قارچ ، سس پستو جنوا ،گردو ، پارمژان', + price: 315000, + restaurantSlug: 'lanka', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700505314228.png"], +}, +{ + title: 'اوشن اسپایسی', + desc: 'فتوچینی ، میگو سوخاری ، سس پیری پیری، بروکلی ، پارمژان', + price: 390000, + restaurantSlug: 'lanka', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711381126223.png"], +}, +{ + title: 'پوتانسکا', + desc: 'پنه ، بیکن گوساله تفت داده شده با کره ، سس آلفردو ، قارچ ، پیازچه ، پنیر هالومی ، پارمژان', + price: 350000, + restaurantSlug: 'lanka', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711381107855.png"], +}, +{ + title: 'لازانیا ', + desc: 'لازانیا ،به انتخاب شما(بیکن. گوشت چرخ کرده.مرغ) سس خامه،سس مارینارا،قارچ ، پنیر پیتزا', + price: 350000, + restaurantSlug: 'lanka', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700065921952.png"], +}, +{ + title: 'کلاسیک برگر', + desc: '130 گرم گوشت مزه دار شده، کاهو فرانسه، گوجه، خیارشور، سس دست ساز BBQ،سس فرانسوی،سیب زمینی تنوری،شات سس کچاپ', + price: 295000, + restaurantSlug: 'lanka', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700064676261.png"], +}, +{ + title: 'هاوایی برگر', + desc: '130 گرم گوشت مزه دار شده،ورق طلا، بیکن کریسپی، آناناس گریل شده، کاهو فرانسه، دیپ آووکادو، گوجه،خیارشور،سیب زمینی تنوری', + price: 405000, + restaurantSlug: 'lanka', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700064706052.png"], +}, +{ + title: 'هانی بیف', + desc: '130 گرم گوشت مزه دار شده، دیپ گودا، بیکن کریسپی، پیاز کاراملایز، کاهو فرانسه، گوجه،خیار شور، پنیر هالومی،سیب زمینی تنوری،شات سس کچاپ', + price: 395000, + restaurantSlug: 'lanka', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700579878511.png"], +}, +{ + title: 'ماریا برگر', + desc: '130 گرم گوشت مزه دار شده ،شنسل مرغ سوخاری ،دیپ گودا،سس فرانسوی، کاهو فرانسه، گوجه،خیارشور، سس دست ساز BBQ،سیب زمینی تنوری', + price: 405000, + restaurantSlug: 'lanka', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700579834554.png"], +}, +{ + title: 'بلک اند بلو', + desc: '130 گرم گوشت مزه دار شده، دریایی از پنیر بلوچیز، کاهو فرانسه، گوجه،خیارشور، قارچ بلانچ شده،سیب زمینی تنوری،شات سس کچاپ', + price: 335000, + restaurantSlug: 'lanka', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711380975664.png"], +}, +{ + title: 'فراید چیکن', + desc: '3 عدد فیله سوخاری، دیپ گودا، سالاد کلم،سس فرانسوی،سیب زمینی تنوری،شات سس کچاپ', + price: 335000, + restaurantSlug: 'lanka', + categoryTitle: 'برگرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700579747065.png"], +}, +{ + title: 'سس دست ساز BBQ', + desc: '', + price: 15000, + restaurantSlug: 'lanka', + categoryTitle: 'شات سس ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711381413862.png"], +}, +{ + title: 'دیپ گودا', + desc: '', + price: 25000, + restaurantSlug: 'lanka', + categoryTitle: 'شات سس ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711381392297.png"], +}, +{ + title: 'سس بلوچیز', + desc: '', + price: 30000, + restaurantSlug: 'lanka', + categoryTitle: 'شات سس ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711381375392.png"], +}, +{ + title: 'سس آووکادو ', + desc: '', + price: 30000, + restaurantSlug: 'lanka', + categoryTitle: 'شات سس ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711392780130.png"], +}, +{ + title: 'سس قارچ', + desc: '', + price: 40000, + restaurantSlug: 'lanka', + categoryTitle: 'شات سس ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711392409168.png"], +}, +{ + title: 'سالاد سزار با مرغ گریل', + desc: 'کاهو رسمی، گوجه گیلاسی، نان کراتان، فیله مرغ گریل شده، سس سزار لانکا، پارمژان', + price: 295000, + restaurantSlug: 'lanka', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار سوخاری', + desc: 'کاهو رسمی، گوجه گیلاسی، نان کراتان، 2 عدد رول مرغ سوخاری پنیری، سس سزار لانکا، پارمژان', + price: 330000, + restaurantSlug: 'lanka', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700064850761.png"], +}, +{ + title: 'سالاد لانکا', + desc: 'کاهو رسمی، گردو کاراملی، بادام هندی،مویز، نان مغزدار، کرنبری،، پرک بادام، نعنا تازه،سس آنتراکت', + price: 345000, + restaurantSlug: 'lanka', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1709920706028.png"], +}, +{ + title: 'سالاد هالومی بیکن', + desc: 'کاهو رسمی، بیکن کریسپی، پنیر هالومی، نان ترتیلا، گوجه چری، کاپاریس،سس گرین', + price: 300000, + restaurantSlug: 'lanka', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700064817754.png"], +}, +{ + title: 'سالاد آسیایی', + desc: 'کاهو رسمی، کینوا، بروکلی، خیار، گوجه چری، نخود پخته شده، پیاز شارلوط، سس بالزامیک ،روغن زیتون فرابکر', + price: 260000, + restaurantSlug: 'lanka', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700506184020.png"], +}, +{ + title: 'استیک فیله مینیون', + desc: '250 گرم فیله گوساله گریل شده ، مش پوتیتو ، سبزیجات ساته شده با سس صدف,سس قارچ', + price: 865000, + restaurantSlug: 'lanka', + categoryTitle: 'استیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711381090415.png"], +}, +{ + title: 'استیک لانکا', + desc: '700 الی 850گرم ریبای استیک،ورق طلا،مش پوتیتو،سبزیجات ساته شده با سس صدف،سس قارچ(پخت مدیوم)', + price: 950000, + restaurantSlug: 'lanka', + categoryTitle: 'استیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1709920062622.png"], +}, +{ + title: 'لمب استیک ', + desc: 'راسته گوسفندی گریل شده ، مش پوتیتو ، سبزیجات ساته شده با سس صدف،سس قارچ', + price: 745000, + restaurantSlug: 'lanka', + categoryTitle: 'استیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711381067217.png"], +}, +{ + title: 'سورف اند تورف', + desc: '250گرم فیله گوساله گریل شده ، 3عددشاه میگو سوخاری شده ، مش پوتیتو ، سبزیجات ساته شده با سس صدف ، سس ترخون', + price: 810000, + restaurantSlug: 'lanka', + categoryTitle: 'استیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711381042187.png"], +}, +{ + title: 'چیکن استیک', + desc: 'شنسل مرغ گریل شده ، مش پوتیتو ، سبزیجات ساته شده با سس صدف ،سس قارچ', + price: 415000, + restaurantSlug: 'lanka', + categoryTitle: 'استیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711381020688.png"], +}, +{ + title: 'دل کاپو', + desc: 'سس سیر، پنیر پیتزا ، فیله گوساله طعم دار شده با سیر ، بیکن گوساله ، قارچ ، زیتون سیاه ، ارگانو،شات سس کچاپ', + price: 460000, + restaurantSlug: 'lanka', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700504370110.png"], +}, +{ + title: 'چیکن جنوا', + desc: 'سس پستو جنوا ، پنیر پیتزا ، فیله مرغ ، قارچ ، دلمه رنگی ، زیتون سیاه ، ذرت ،ریحان،شات سس', + price: 390000, + restaurantSlug: 'lanka', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700065708184.png"], +}, +{ + title: 'دیاوولا(پپرونی)', + desc: 'سس بوفالو(HOT)، پنیر پیتزا ، پپرونی ، هالوپینو،شات سس کچاپ', + price: 405000, + restaurantSlug: 'lanka', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1705681791453.png"], +}, +{ + title: 'موکاورده', + desc: 'سس ناپولیتن ، پنیر پیتزا ، فیله گوساله طعم دار شده با سیر ، فیله مرغ ، قارچ ، دلمه رنگی ، زیتون سیاه،شات سس کچاپ', + price: 410000, + restaurantSlug: 'lanka', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700065792298.png"], +}, +{ + title: 'سالاد مرغ کاریCurry chicken salad', + desc: 'سینه مرغ طمع دار شده-کاهو-سیب زمینی-جعفری-هویج سرخ شده-نان ساج ترکی-سس مخصوص', + price: 156000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیش غذا و سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696430012307.png"], +}, +{ + title: 'سالاد گرین green salad', + desc: 'کاهو-سبزیجات معطر-سویا-مغزیجات-زیتون-dried tomato-نان بلغور-سس میوه', + price: 177000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیش غذا و سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696430495660.png"], +}, +{ + title: 'چیز برگر', + desc: 'گوشت گوساله-دیپ چدار-کاهو-پیاز-گوجه-خیارشور', + price: 170000, + restaurantSlug: '1972Cafe', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696435374474.png"], +}, +{ + title: 'چیکن برگر ', + desc: 'مرغ گریل -کاهو -پنیر -خیارشور -گوجه -سس مخصوص ', + price: 153000, + restaurantSlug: '1972Cafe', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696435891017.png"], +}, +{ + title: 'لیموناد', + desc: '', + price: 55000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696439347250.png"], +}, +{ + title: 'مینت چاکلت', + desc: 'شکلات نعنایی+شیر', + price: 59000, + restaurantSlug: '1972Cafe', + categoryTitle: 'قهوه و نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696440035125.png"], +}, +{ + title: 'چای سبز و نعنا', + desc: '', + price: 52000, + restaurantSlug: '1972Cafe', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696442765180.png"], +}, +{ + title: 'دمنوش کوهی', + desc: '', + price: 49000, + restaurantSlug: '1972Cafe', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696442921555.png"], +}, +{ + title: 'شیک منگو دریم ', + desc: 'بستنی وانیل-آب انبه-دارچین-موز', + price: 89000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696444988115.png"], +}, +{ + title: 'چیز شیک ', + desc: 'بستنی وانیل -پنیر ماسکارپونه-لیدی فینگر ', + price: 89000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696445529672.png"], +}, +{ + title: 'شیک اورئو ', + desc: 'بستنی وانیل - بیسکویئت اورئو ', + price: 91000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696445850261.png"], +}, +{ + title: 'لاوندر', + desc: 'اسطوخودوس-پنیرک-انبه-آب لیمو', + price: 71000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696446980423.png"], +}, +{ + title: 'وینو', + desc: 'آلبالو -چای ترش - توت فرنگی -فلفل', + price: 75000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696447312768.png"], +}, +{ + title: 'اس تی بلک', + desc: 'چای سیاه سرد دم - توت فرنگی-سودا', + price: 65000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696447665612.png"], +}, +{ + title: 'فیزی بلک', + desc: 'چای سیاه سرد دم -لیمو -سودا', + price: 63000, + restaurantSlug: '1972Cafe', + categoryTitle: ' نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696447800091.png"], +}, +{ + title: 'love', + desc: '', + price: 0, + restaurantSlug: '1972Cafe', + categoryTitle: 'قلیان', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696448428513.png"], +}, +{ + title: 'لیدی کیلر', + desc: '', + price: 0, + restaurantSlug: '1972Cafe', + categoryTitle: 'قلیان', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696448494533.png"], +}, +{ + title: 'آدامس دارچین', + desc: '', + price: 0, + restaurantSlug: '1972Cafe', + categoryTitle: 'قلیان', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696448567661.png"], +}, +{ + title: 'سیب یخ', + desc: '', + price: 0, + restaurantSlug: '1972Cafe', + categoryTitle: 'قلیان', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696448599521.png"], +}, +{ + title: 'آلو یخ', + desc: '', + price: 0, + restaurantSlug: '1972Cafe', + categoryTitle: 'قلیان', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696448628354.png"], +}, +{ + title: 'هندوانه نعنا', + desc: '', + price: 0, + restaurantSlug: '1972Cafe', + categoryTitle: 'قلیان', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1696448896830.png"], +}, +{ + title: 'مارگریتا', + desc: 'سس مارینارا،پنیر توپی موزارلا،گوجه اسلایس ،ریحان،پارمژان', + price: 310000, + restaurantSlug: 'lanka', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728639153521.png"], +}, +{ + title: 'اسپرسو ', + desc: '', + price: 85000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697923414665.png"], +}, +{ + title: 'اسپرسو70/30', + desc: '', + price: 85000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697923462054.png"], +}, +{ + title: 'امریکانو', + desc: 'اسپرسو+آب جوش', + price: 95000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697923497768.png"], + discount: 1, +}, +{ + title: 'آفوگاتو', + desc: 'اسپرسو+بستنی ', + price: 135000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697997795070.png"], +}, +{ + title: 'کاپوچینو', + desc: 'اسپرسو+190میل شیر', + price: 128000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697923705360.png"], +}, +{ + title: 'لاته', + desc: 'اسپرسو+230 میل شیر', + price: 145000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697923748826.png"], +}, +{ + title: 'موکا', + desc: 'اسپرسو+220میل شیر+شکلات', + price: 152000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697923777904.png"], +}, +{ + title: 'ماست موسیر', + desc: '', + price: 85000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700503768714.png"], +}, +{ + title: 'بورانی بادمجان', + desc: '', + price: 85000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700503897293.png"], +}, +{ + title: 'ماست و خیار', + desc: '', + price: 85000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700503854385.png"], +}, +{ + title: 'زیتون پرورده', + desc: '', + price: 120000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700503801658.png"], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 138000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1699531171893.png"], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 142000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1699531024668.png"], +}, +{ + title: 'چای ماسالا', + desc: '', + price: 135000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1699530957021.png"], +}, +{ + title: 'هات لوتوس', + desc: 'شیر+کره لوتوس', + price: 120000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697997963811.png"], +}, +{ + title: 'شیر کارامل دارچین', + desc: '', + price: 98000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697997918424.png"], +}, +{ + title: 'ایس امریکانو', + desc: '', + price: 115000, + restaurantSlug: 'lanka', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700505148529.png"], +}, +{ + title: 'ایس لاته', + desc: '', + price: 138000, + restaurantSlug: 'lanka', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700505066167.png"], +}, +{ + title: 'ایس کوکی لاته', + desc: '', + price: 150000, + restaurantSlug: 'lanka', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700505009799.png"], +}, +{ + title: 'ایس پاپکورن لاته', + desc: '', + price: 150000, + restaurantSlug: 'lanka', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700504953778.png"], +}, +{ + title: 'ایس کارامل ماکیاتو', + desc: '', + price: 150000, + restaurantSlug: 'lanka', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700504882868.png"], +}, +{ + title: 'ایس کوکو لاته', + desc: '', + price: 150000, + restaurantSlug: 'lanka', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700504694051.png"], +}, +{ + title: 'لوتوس باتر', + desc: '', + price: 185000, + restaurantSlug: 'lanka', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697995109260.png"], +}, +{ + title: 'لایف چاکلت', + desc: '', + price: 160000, + restaurantSlug: 'lanka', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697998248760.png"], +}, +{ + title: 'پینات باتر', + desc: 'بستنی+بادام زمینی', + price: 170000, + restaurantSlug: 'lanka', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697999716171.png"], +}, +{ + title: 'لیموناد', + desc: '', + price: 120000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697998467799.png"], +}, +{ + title: 'ویرجین موهیتو', + desc: '(همراه با عرق نیشکر)', + price: 130000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697998418915.png"], +}, +{ + title: 'چیز کیک لوتوس', + desc: '', + price: 103000, + restaurantSlug: 'lanka', + categoryTitle: 'کیک و دسر ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1734024510493.png"], +}, +{ + title: 'فیله استریپس 3 تیکه ', + desc: '3 تیکه فیله مرغ کریسپی شده،سیب زمینی سرخ شده بهمراه ادویه، سالاد کلم،نان مک،سس چیلی،سس سیر', + price: 340000, + restaurantSlug: 'lanka', + categoryTitle: 'سوخاری ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697469906857.png"], +}, +{ + title: 'فراید پلیت ', + desc: '2تیکه فیله مرغ کریسپی شده،قارچ سوخاری،پیاز سوخاری.چیکن پنیری.سیب زمینی سوخاری،گل کلم سوخاری سالاد کلم،سس چیلی،سس سیر', + price: 410000, + restaurantSlug: 'lanka', + categoryTitle: 'سوخاری ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1705682276880.png"], +}, +{ + title: 'بوفالو وینگز', + desc: 'بال مرغ سوخاری،رایس نودل،سالاد کلم،سس بوفالو (HOT) ', + price: 222000, + restaurantSlug: 'lanka', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697469854714.png"], +}, +{ + title: 'فیله استریپس 5تیکه', + desc: '5عدد فیله مرغ کریسپی شده ،سالاد کلم،نان مک،سیب زمینی سرخ شده بهمراه ادویه ،سس سیر-چیلی تای', + price: 450000, + restaurantSlug: 'lanka', + categoryTitle: 'سوخاری ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697469825117.png"], +}, +{ + title: 'چای سیاه', + desc: '', + price: 65000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1734024149641.png"], +}, +{ + title: 'چای سیاه 2 نفره', + desc: '', + price: 90000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697923912214.png"], +}, +{ + title: 'چای سیاه 4نفره', + desc: '', + price: 160000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697923944307.png"], +}, +{ + title: 'اقیانوس آبی ', + desc: 'لوندر فرانسوی . نخود پروانه ای . بلوبری', + price: 75000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1734023335326.png"], +}, +{ + title: 'دمنوش بعد از شام', + desc: 'سیب. به . زنجبیل . رزماری', + price: 75000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1734023260428.png"], +}, +{ + title: 'اکسترا فیله ', + desc: 'یک عدد فیله مرغ گریل شده', + price: 65000, + restaurantSlug: 'lanka', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697469803784.png"], +}, +{ + title: 'پولد بیف ', + desc: 'سس خامه،پنیر پیتزا،مغز ران پخته شده طعم دار،فلفل دلمه رنگی ،قارچ،زیتون سیاه،گوجه خشک مزه دار شده،شات سس کچاپ', + price: 435000, + restaurantSlug: 'lanka', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1705682387141.png"], +}, +{ + title: 'اسپرسو عربیکا', + desc: '', + price: 50000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701607992109.png"], +}, +{ + title: 'بلو اوشن', + desc: '', + price: 145000, + restaurantSlug: 'lanka', + categoryTitle: 'اسموتی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697996464397.png"], +}, +{ + title: 'لانکا بری', + desc: '', + price: 160000, + restaurantSlug: 'lanka', + categoryTitle: 'اسموتی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697998762565.png"], +}, +{ + title: 'بلک ویدو', + desc: '', + price: 140000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697998657211.png"], +}, +{ + title: 'چیلی فلاور', + desc: '', + price: 140000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697993972425.png"], +}, +{ + title: 'بیتر آلموند ', + desc: '', + price: 145000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1697923853450.png"], +}, +{ + title: 'اسپرسو 50-50', + desc: '', + price: 43000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701608031535.png"], +}, +{ + title: 'ربوستا دوپیو ربوستا', + desc: '', + price: 35000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701608129536.png"], +}, +{ + title: 'V 60', + desc: 'اتیوپی هامبلا', + price: 70000, + restaurantSlug: 'LIAN', + categoryTitle: 'دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701608093471.png"], +}, +{ + title: 'ماسالا اسپرسو', + desc: 'اسپرسو دوبل-پودر ماسالا-شیر', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701607738884.png"], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 50000, + restaurantSlug: 'LIAN', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700662718913.png"], +}, +{ + title: 'هات چاکلت فندوقی', + desc: 'شیر-پودر هات چاکلت-سیروپ فندوق', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701607453105.png"], +}, +{ + title: 'ماسالا', + desc: 'شیر-زنجبیل-هل-دارچین', + price: 50000, + restaurantSlug: 'LIAN', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701607360495.png"], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 55000, + restaurantSlug: 'LIAN', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701608212804.png"], +}, +{ + title: 'شیر فندوق', + desc: 'شیر-فندوق-سیروپ فندوق', + price: 50000, + restaurantSlug: 'LIAN', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر عسل', + desc: 'شیر گرم فوم دار شده-عسل طبیعی', + price: 50000, + restaurantSlug: 'LIAN', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس آمریکانو 50-50', + desc: 'اسپرسو دوبل 50-50 -آب-یخ', + price: 53000, + restaurantSlug: 'LIAN', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701608264002.png"], +}, +{ + title: 'آیس آمریکانو ربوستا', + desc: 'اسپرسو دوبل ربوستا-آب-یخ', + price: 45000, + restaurantSlug: 'LIAN', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701606499539.png"], +}, +{ + title: 'آیس موکا', + desc: 'اسپرسو دوبل-شیر-سیروپ شکلات-یخ', + price: 75000, + restaurantSlug: 'LIAN', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701606450996.png"], +}, +{ + title: 'آیس لیان', + desc: 'پودر هات چاکلت-قهوه گلد-سیروپ فندوق-نوتلا-شیر-یخ', + price: 70000, + restaurantSlug: 'LIAN', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701605340716.png"], +}, +{ + title: 'موز شکلات', + desc: 'بستنی شکلاتی-موز ', + price: 75000, + restaurantSlug: 'LIAN', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701606038603.png"], +}, +{ + title: 'بادام زمینی', + desc: 'بستنی وانیل-کره بادام زمینی-شیر', + price: 90000, + restaurantSlug: 'LIAN', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701605978968.png"], +}, +{ + title: 'نوتلا توییکس', + desc: 'بستنی وانیل-نوتلا-شکلات توییکس-شیر', + price: 98000, + restaurantSlug: 'LIAN', + categoryTitle: 'شیک', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701605889766.png"], +}, +{ + title: ' اسپرسو', + desc: 'اسپرسو دبل-بستنی وانیل-شیر', + price: 75000, + restaurantSlug: 'LIAN', + categoryTitle: 'شیک', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701605808978.png"], +}, +{ + title: 'چای سیاه', + desc: 'چای عطری دمی', + price: 20000, + restaurantSlug: 'LIAN', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای زعفران', + desc: 'چای سیاه دمی-زعفران', + price: 25000, + restaurantSlug: 'LIAN', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701604795540.png"], +}, +{ + title: 'مدیترانه', + desc: 'چای ترش-سیب-نسترن-کشمش-پوست پرتقال-به لیمو', + price: 25000, + restaurantSlug: 'LIAN', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701608482959.png"], +}, +{ + title: 'آیس لاته', + desc: 'شیر-اسپرسو دبل-سیروپ دلخواه-یخ', + price: 75000, + restaurantSlug: 'LIAN', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1725301291531.png"], +}, +{ + title: 'سیب سرخ کرده', + desc: '', + price: 65000, + restaurantSlug: 'dream', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بروسکتا آل پومودرو', + desc: '', + price: 120000, + restaurantSlug: 'dream', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز برگر', + desc: '', + price: 235000, + restaurantSlug: 'dream', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیکن تنوری', + desc: '', + price: 150000, + restaurantSlug: 'dream', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن الفردو', + desc: '', + price: 250000, + restaurantSlug: 'dream', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز کیک سن سباستین', + desc: '', + price: 115000, + restaurantSlug: 'lanka', + categoryTitle: 'کیک و دسر ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1705685420900.png"], +}, +{ + title: 'قهوه ترک', + desc: '', + price: 135000, + restaurantSlug: 'lanka', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1744480231161.png"], +}, +{ + title: 'V-60', + desc: '', + price: 140000, + restaurantSlug: 'lanka', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711380844317.png"], +}, +{ + title: 'هات داگ اسپشیال', + desc: 'هات داگ ٧٠٪‏،قارچ،پنیر،سس مخصوص،کاهو،خیارشور،گوجه', + price: 220000, + restaurantSlug: 'yummyburger', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733223422595.png"], +}, +{ + title: 'میت لاورز ', + desc: 'گوشت طعم دار شده، زیتون،قارچ،سس مخصوص،پنیر گودا،پنیر پیتزا', + price: 450000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیتزا ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733221743797.png"], +}, +{ + title: 'میکس تو', + desc: 'گوشت طعم دار شده،مرغ طعم دار شده،قارچ،زیتون،پنیر پیتزا', + price: 450000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیتزا ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733221726935.png"], +}, +{ + title: 'جگر گوسفندی ', + desc: 'جگر', + price: 35000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوسفندی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700257580271.png"], +}, +{ + title: 'دل گوسفندی', + desc: '', + price: 35000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوسفندی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700291221757.png"], +}, +{ + title: 'قلوه گوسفندی', + desc: '', + price: 45000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوسفندی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چنجه دنبه ', + desc: '', + price: 110000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوسفندی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700310947996.png"], +}, +{ + title: 'چنجه ', + desc: '', + price: 125000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوسفندی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دل شکاری', + desc: '', + price: 122000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوسفندی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700311095564.png"], +}, +{ + title: 'قلوه شکاری', + desc: '', + price: 110000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوسفندی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سینی جگر دو نفره ', + desc: '۱۰سیخ جیگر - ۲ سیخ دل - ۲ سیخ قلوه و ۱ سیخ قارچ ۱سیخ دنبه', + price: 495000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوسفندی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سینی چهار نفره ', + desc: '14سیخ جیگر -۴ سیخ قلوه - ۴سیخ دل-۲ سیخ دنبه ‌ - ۲ سیخ قارچ', + price: 920000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوسفندی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جگر گوساله', + desc: '', + price: 30000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوساله', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700311451584.png"], +}, +{ + title: 'دل گوساله', + desc: '', + price: 30000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوساله', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قلوه گوساله', + desc: '', + price: 35000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوساله', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جگر دنبه', + desc: '', + price: 38000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوساله', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جگر پیچ', + desc: '', + price: 100000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوساله', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دل دنبه ', + desc: '', + price: 38000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوساله', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماهی کباب', + desc: 'قزل ', + price: 195000, + restaurantSlug: 'banicho', + categoryTitle: 'کباب ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700312385716.png"], +}, +{ + title: 'کباب کوبیده ممتاز', + desc: '', + price: 140000, + restaurantSlug: 'banicho', + categoryTitle: 'کباب ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دنبه', + desc: '', + price: 25000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوسفندی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جوجه زعفرانی مخصوص', + desc: '250 گرمی ', + price: 120000, + restaurantSlug: 'banicho', + categoryTitle: 'کباب ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700312935278.png"], +}, +{ + title: 'جوجه مکزیکی', + desc: '250 گرمی', + price: 130000, + restaurantSlug: 'banicho', + categoryTitle: 'کباب ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700313100271.png"], +}, +{ + title: 'جوجه ترش مخصوص ', + desc: '۲۵۰ گرم ران مرغ', + price: 140000, + restaurantSlug: 'banicho', + categoryTitle: 'کباب ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700313261875.png"], +}, +{ + title: 'کتف و بال زعفرانی ', + desc: '330 گرمی ', + price: 80000, + restaurantSlug: 'banicho', + categoryTitle: 'کباب ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700313401274.png"], +}, +{ + title: 'کتف و بال ترش ', + desc: '330 گرمی', + price: 95000, + restaurantSlug: 'banicho', + categoryTitle: 'کباب ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سینی کباب دو نفره ', + desc: 'دوسیخ کوبیده - یک سیخ جوجه ', + price: 270000, + restaurantSlug: 'banicho', + categoryTitle: 'کباب ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سینی کباب 4 نفره', + desc: '', + price: 530000, + restaurantSlug: 'banicho', + categoryTitle: 'کباب ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گوجه کبابی', + desc: '', + price: 15000, + restaurantSlug: 'banicho', + categoryTitle: ' پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قارچ کبابی ساده ', + desc: '', + price: 20000, + restaurantSlug: 'banicho', + categoryTitle: ' پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700313994866.png"], +}, +{ + title: 'قارچ کبابی طعم دار', + desc: '', + price: 25000, + restaurantSlug: 'banicho', + categoryTitle: ' پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700314072117.png"], +}, +{ + title: 'لیوان دوغ محلی', + desc: '', + price: 40000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700320142532.png"], +}, +{ + title: 'کوکا قوطی ', + desc: '', + price: 20000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فانتا قوطی ', + desc: '', + price: 20000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرایت', + desc: '', + price: 20000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس امریکانو', + desc: '', + price: 35000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لاته', + desc: '', + price: 45000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس موکا', + desc: '', + price: 50000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اورنج کوک', + desc: '', + price: 90000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'استراکوک', + desc: '', + price: 90000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ردسور', + desc: '', + price: 110000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مانگوپانگو', + desc: '', + price: 80000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: '', + price: 75000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700320798249.png"], +}, +{ + title: 'لیموناد', + desc: '', + price: 70000, + restaurantSlug: 'banicho', + categoryTitle: 'بارسرد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700320859207.png"], +}, +{ + title: 'چایی تک نفره و باقلوا', + desc: '', + price: 35000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700321026241.png"], +}, +{ + title: 'سرویس چایی و باقلوا ', + desc: '', + price: 98000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1700321087269.png"], +}, +{ + title: 'چایی ماچا', + desc: '', + price: 70000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چایی ماسالا', + desc: '', + price: 40000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جانگل فروت ', + desc: '', + price: 35000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چایی آویشن ', + desc: '', + price: 30000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رستیرتو', + desc: '', + price: 35000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو', + desc: '', + price: 35000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لانگو', + desc: '', + price: 35000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو', + desc: '', + price: 40000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو', + desc: '', + price: 35000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته', + desc: '', + price: 45000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا', + desc: '', + price: 50000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 60000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مینت چاکلت ', + desc: '', + price: 65000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 60000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قهوه ', + desc: 'فرانسه نسل ۳', + price: 40000, + restaurantSlug: 'banicho', + categoryTitle: 'بارگرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر کلاسیک', + desc: '130 گرم گوشت خالص ، کاهو ، گوجه ، خیارشور', + price: 167000, + restaurantSlug: 'cafe_sepanj', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جگر دنبه ', + desc: '', + price: 38000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوساله', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاسه کباب', + desc: 'کوبیده یک سیخ - جوجه یک سیخ - چنجه یک سیخ', + price: 315000, + restaurantSlug: 'banicho', + categoryTitle: 'کباب ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کتف و بال مکزیکی', + desc: '', + price: 90000, + restaurantSlug: 'banicho', + categoryTitle: 'کباب ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سینی جگر تک نفره', + desc: '5سیخ جگر -۲سیخ دل - ۱سیخ قلوه ', + price: 269000, + restaurantSlug: 'banicho', + categoryTitle: 'جگر گوساله', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رول اسفناج و پنیر', + desc: 'اسفناج پخته شده و پنیر و نان ', + price: 117000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیش غذا و سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701533184098.png"], +}, +{ + title: 'رول بادمجان و گوجه ', + desc: 'بادمجان و گوجه بخار پز شده ', + price: 119000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیش غذا و سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701533325745.png"], +}, +{ + title: 'پیده پپرونی', + desc: '', + price: 120000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیش غذا و سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701534131794.png"], +}, +{ + title: 'پیده سبزیجات ', + desc: '', + price: 128000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیش غذا و سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701534236314.png"], +}, +{ + title: 'پیده اسفناج و تخم مرغ', + desc: '', + price: 115000, + restaurantSlug: '1972Cafe', + categoryTitle: 'پیش غذا و سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1701534392361.png"], +}, +{ + title: 'ماشروم برگر', + desc: 'نان برگر ،برگر 150 گرمی ، پنیر گودا ،سس قارچ،کاهو لوتوس،گوجه فرنگی، ساید سالاد و سیب زمینی(سرو سالن)', + price: 453000, + restaurantSlug: 'boote', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756411302.png"], +}, +{ + title: 'ویکتوریا تک نفره Victoria ', + desc: 'لیمو چای ترش وانیل', + price: 65000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715853437636.png"], +}, +{ + title: 'سیزن موهیتو - season mojito', + desc: 'پرتقال / توت فرنگی / هندوانه / کیوی / نارنگی ', + price: 120000, + restaurantSlug: 'zhivan', + categoryTitle: 'موهیتو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715790991573.png"], +}, +{ + title: 'ویکتوریا دو نفره Victoria ', + desc: 'چای ترش لیمو وانیل ', + price: 100000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715853408811.png"], +}, +{ + title: 'سیر و استیک', + desc: 'سس سیر.پنیر پیتزا.فیله گوساله طعم دار شده با سیر.ارگانو.شات سس کچاپ', + price: 460000, + restaurantSlug: 'lanka', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1705685396897.png"], +}, +{ + title: 'خوراک ماهیچه گوسفندی', + desc: 'ماهیچه بره ارام پخته شده در کره و روغن/سس پیاز فرانسوی/دورچین', + price: 630000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1705681718685.png"], +}, +{ + title: 'چیکن پنیری', + desc: '', + price: 180000, + restaurantSlug: 'lanka', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1705680891927.png"], +}, +{ + title: 'اسپرسو سینگل عربیکا', + desc: '', + price: 55000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو دوبل روبوستا', + desc: '', + price: 55000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو عربیکا', + desc: '', + price: 76000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو ماکیاتو', + desc: '', + price: 80000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو', + desc: '', + price: 80000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته', + desc: '', + price: 85000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل ماکیاتو ', + desc: '', + price: 90000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا', + desc: '', + price: 70000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 70000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیرکاکائو', + desc: '', + price: 60000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا', + desc: '', + price: 70000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیرعسل', + desc: '', + price: 55000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر نسکافه', + desc: '', + price: 55000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس آمریکانو 50/50', + desc: '', + price: 66000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفوگاتو', + desc: '', + price: 95000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای', + desc: '', + price: 28000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'چای ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای زعفران', + desc: '', + price: 45000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'چای ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای نعنا', + desc: '', + price: 30000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'چای ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای هل', + desc: '', + price: 30000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'چای ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای دارچین', + desc: '', + price: 30000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'چای ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سبز', + desc: '', + price: 60000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'چای ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای ترش', + desc: '', + price: 65000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'چای ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر گرم', + desc: '', + price: 30000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش مخصوص میلکو', + desc: '', + price: 70000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش گل گاوزبان', + desc: '', + price: 70000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش به لیمو', + desc: '', + price: 65000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش سیب دارچین', + desc: '', + price: 65000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش آویشن و عسل', + desc: '', + price: 65000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش آرامش میلکو', + desc: '', + price: 70000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک اسنیکرز', + desc: '', + price: 120000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک مخصوص', + desc: '', + price: 125000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک شکلات ', + desc: '', + price: 100000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک اسپرسو', + desc: '', + price: 120000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک نوتلا', + desc: '', + price: 120000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک توت فرنگی نوتلا', + desc: '', + price: 130000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'معجون', + desc: '', + price: 115000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی', + desc: '', + price: 105000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: '', + price: 90000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیکو', + desc: '', + price: 105000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'منگوهاوایی', + desc: '', + price: 105000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پانچ بهار', + desc: '', + price: 90000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شربت شیراز', + desc: '', + price: 90000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر کلاسیک', + desc: '', + price: 215000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714229914645.png"], +}, +{ + title: ' برگر الفردو', + desc: '', + price: 290000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714229843007.png"], +}, +{ + title: 'میلکو برگر', + desc: '', + price: 280000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714229794246.png"], +}, +{ + title: 'چیز برگر', + desc: '', + price: 265000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714229694410.png"], +}, +{ + title: 'هالوپینو برگر', + desc: '', + price: 235000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714229659721.png"], +}, +{ + title: 'باربیکیو برگر', + desc: '', + price: 238000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن برگر', + desc: '', + price: 215000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714229555597.png"], +}, +{ + title: 'برگر آلفردو (سس قارچ)', + desc: '', + price: 290000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات داگ کلاسیک', + desc: '', + price: 100000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'هات داگ ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714231997120.png"], +}, +{ + title: 'هات داگ باربیکیو', + desc: '', + price: 125000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'هات داگ ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714231799092.png"], +}, +{ + title: 'هات داگ قارچ و پنیر', + desc: '', + price: 175000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'هات داگ ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714231644573.png"], +}, +{ + title: 'هات داگ مخصوص میلکو', + desc: '', + price: 195000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'هات داگ ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714231434599.png"], +}, +{ + title: 'هات داگ هالوپینو', + desc: '', + price: 125000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'هات داگ ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714231390596.png"], +}, +{ + title: 'کوکتل ساده ', + desc: 'خیار شور گوجه کاهو', + price: 90000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714232175149.png"], +}, +{ + title: 'تک لقمه ساده', + desc: '', + price: 70000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714232152695.png"], +}, +{ + title: 'تک لقمه مخصوص', + desc: '', + price: 80000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714232119536.png"], +}, +{ + title: 'بال و کتف سوخاری۷تکه', + desc: '', + price: 230000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714233976658.png"], +}, +{ + title: 'بال و کتف۹تکه +سیب زمینی', + desc: '', + price: 295000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714233954479.png"], +}, +{ + title: 'فیله سوخاری ۳ تیکه', + desc: '', + price: 170000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714233374520.png"], +}, +{ + title: 'فیله سوخاری ۵ تیکه با سیب زمینی', + desc: '', + price: 275000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714233347221.png"], +}, +{ + title: 'فیله سوخاری ۷ تیکه با سیب زمینی', + desc: '', + price: 330000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714233322046.png"], +}, +{ + title: 'سیب زمینی ساده (متوسط)', + desc: '', + price: 130000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی ساده (بزرگ)', + desc: '', + price: 165000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سوسیس سیب زمینی با دیپ گودا(متوسط)', + desc: '', + price: 145000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714233563859.png"], +}, +{ + title: 'سوسیس سیب زمینی با دیپ گودا (بزرگ)', + desc: '', + price: 180000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی با ژامبون دیپ پنیر گودا (بزرگ)', + desc: '', + price: 180000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی با ژامبون و دیپ پنیر گودا ( متوسط)', + desc: '', + price: 150000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی آلفردو متوسط', + desc: '', + price: 175000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714233584644.png"], +}, +{ + title: 'سیب زمینی آلفردو بزرگ', + desc: '', + price: 195000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سس چیلی تای', + desc: '', + price: 20000, + restaurantSlug: 'lanka', + categoryTitle: 'شات سس ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711392599728.png"], +}, +{ + title: 'رول سوخاری', + desc: '', + price: 110000, + restaurantSlug: 'lanka', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1711478461824.png"], +}, +{ + title: 'اسپرسو سینگل', + desc: '', + price: 38000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو دوبل', + desc: '', + price: 45000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'استیک مرغ.. chicken steak ', + desc: 'سینه ی مرغ /سیب زمینی تنوری/سبزیجات و صیفی جات بخار پز/سس قارچ..chicken breast/roast potatoes/steamed vegetables/steamed summer crops/ mushroom sauce ', + price: 625000, + restaurantSlug: 'zhivan', + categoryTitle: 'استیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715700983206.png"], +}, +{ + title: 'اسپرسو روبوستا', + desc: '', + price: 35000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو ماکیاتو', + desc: '', + price: 47000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو', + desc: '', + price: 46000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو', + desc: '', + price: 60000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته بزرگ', + desc: '', + price: 65000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته کوچک', + desc: '', + price: 60000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل ماکیاتو کوچک', + desc: '', + price: 60000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل ماکیاتو بزرگ', + desc: '', + price: 65000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا بزرگ', + desc: '', + price: 65000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت کوچک', + desc: '', + price: 50000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت بزرگ', + desc: '', + price: 55000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر کاکائو', + desc: '', + price: 45000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا بزرگ', + desc: '', + price: 55000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر عسل', + desc: '', + price: 45000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر نسکافه کوچک', + desc: '', + price: 40000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر نسکافه بزرگ', + desc: '', + price: 45000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دارک چاکلت کوچک', + desc: '', + price: 60000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دارک چاکلت بزرگ', + desc: '', + price: 65000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس امریکانو', + desc: '', + price: 46000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های سر بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لاته', + desc: '', + price: 60000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های سر بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس موکا', + desc: '', + price: 65000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های سر بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفوگاتو', + desc: '', + price: 65000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های سر بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گل گاوزبان کوچک', + desc: '', + price: 40000, + restaurantSlug: 'lama', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گل گاوزبان بزرگ', + desc: '', + price: 45000, + restaurantSlug: 'lama', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'به لیمو کوچک', + desc: '', + price: 35000, + restaurantSlug: 'lama', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'به لیمو بزرگ', + desc: '', + price: 40000, + restaurantSlug: 'lama', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب دارچین کوچک', + desc: '', + price: 35000, + restaurantSlug: 'lama', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب دارچین بزرگ', + desc: '', + price: 40000, + restaurantSlug: 'lama', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آویشن عسل کوچک', + desc: '', + price: 35000, + restaurantSlug: 'lama', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آویشن عسل بزرگ', + desc: '', + price: 40000, + restaurantSlug: 'lama', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مخصوص کوچک', + desc: '', + price: 45000, + restaurantSlug: 'lama', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مخصوص بزرگ', + desc: '', + price: 50000, + restaurantSlug: 'lama', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'منگو هاوایی', + desc: '', + price: 57000, + restaurantSlug: 'lama', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پانچ بهاری', + desc: '', + price: 50000, + restaurantSlug: 'lama', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شربت شیراز', + desc: '', + price: 45000, + restaurantSlug: 'lama', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای ساده کوچک', + desc: '', + price: 20000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای ساده بزرگ', + desc: '', + price: 23000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای زعفران کوچک', + desc: '', + price: 30000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای زعفران بزرگ', + desc: '', + price: 35000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای نعنا کوچک', + desc: '', + price: 22000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای نعنا بزرگ', + desc: '', + price: 25000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای هل کوچک', + desc: '', + price: 22000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای هل بزرگ', + desc: '', + price: 25000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای دارچین کوچک', + desc: '', + price: 22000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای دارچین بزرگ', + desc: '', + price: 25000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سبز کوچک', + desc: '', + price: 35000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سبز بزرگ', + desc: '', + price: 40000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای ترش کوچک', + desc: '', + price: 35000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای ترش بزرگ', + desc: '', + price: 40000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر چای کوچک', + desc: '', + price: 35000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر چای بزرگ', + desc: '', + price: 40000, + restaurantSlug: 'lama', + categoryTitle: 'چای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک مخصوص', + desc: '', + price: 75000, + restaurantSlug: 'lama', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک اسنیکرز', + desc: '', + price: 75000, + restaurantSlug: 'lama', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک شکلات', + desc: '', + price: 65000, + restaurantSlug: 'lama', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک اسپرسو', + desc: '', + price: 70000, + restaurantSlug: 'lama', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک نوتلا توت فرنگی ', + desc: '', + price: 80000, + restaurantSlug: 'lama', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک معجون', + desc: '', + price: 80000, + restaurantSlug: 'lama', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک کوکی', + desc: '', + price: 80000, + restaurantSlug: 'lama', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا کوچک', + desc: '', + price: 60000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا کوچک', + desc: '', + price: 50000, + restaurantSlug: 'lama', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک نوتلا', + desc: '', + price: 75000, + restaurantSlug: 'lama', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک لوتوس', + desc: '', + price: 90000, + restaurantSlug: 'lama', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کته جوجه کباب .. chicken kebab & rice/3 skewers ', + desc: '٣ سیخ جوجه کباب/زیتون /سالاد شیرازی/ماست/سبزی خوردن/گوجه کبابی..chicken kebab/shirazi salad/yogurt/vegetable/p/tomato', + price: 520000, + restaurantSlug: 'zhivan', + categoryTitle: 'ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714079813660.png"], +}, +{ + title: 'کته استیک .. fillet steak & rice ', + desc: 'فیله استیک،برنج کته ایرانی٫،سیب زمینی تنوری ..steak fillet/iranian rice/meat sauce/roast potatoes ', + price: 880000, + restaurantSlug: 'zhivan', + categoryTitle: 'ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1713941274547.png"], +}, +{ + title: 'کته کباب چنجه .. chenjeh kabab & rice ', + desc: '٢ سیخ فیله/سالاد شیرازی/ماست/سبزی خوردن..Iranian rice/2skewers fillet/shirazi salad/yogurt/vegetable', + price: 770000, + restaurantSlug: 'zhivan', + categoryTitle: 'ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715696779861.png"], +}, +{ + title: 'پنیر سوخاری .. cheese fries ', + desc: '', + price: 210000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715934346706.png"], +}, +{ + title: 'پیتزا پپرونی تک نفره', + desc: '', + price: 220000, + restaurantSlug: 'lama', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا پپرونی دو نفره', + desc: '', + price: 280000, + restaurantSlug: 'lama', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا بیکن تک نفره', + desc: '', + price: 230000, + restaurantSlug: 'lama', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا بیکن دو نفره', + desc: '', + price: 290000, + restaurantSlug: 'lama', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا چیکن تک نفره', + desc: '', + price: 270000, + restaurantSlug: 'lama', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا چیکن دو نفره', + desc: '', + price: 310000, + restaurantSlug: 'lama', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا رست بیف تک نفره', + desc: '', + price: 280000, + restaurantSlug: 'lama', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا رست بیف دو نفره', + desc: '', + price: 330000, + restaurantSlug: 'lama', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا پنیر گردو تک نفره', + desc: '', + price: 140000, + restaurantSlug: 'lama', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا پنیر گردو دو نفره', + desc: '', + price: 160000, + restaurantSlug: 'lama', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نان سیر', + desc: '', + price: 128000, + restaurantSlug: 'lama', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر کلاسیک', + desc: '', + price: 175000, + restaurantSlug: 'lama', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر کلاسیک ذغالی', + desc: '', + price: 195000, + restaurantSlug: 'lama', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز برگر', + desc: '', + price: 190000, + restaurantSlug: 'lama', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز برگر ذغالی', + desc: '', + price: 0, + restaurantSlug: 'lama', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هالوپینو برگر', + desc: '', + price: 180000, + restaurantSlug: 'lama', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هالوپینو برگر ذغالی', + desc: '', + price: 205000, + restaurantSlug: 'lama', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن برگر', + desc: '', + price: 160000, + restaurantSlug: 'lama', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیکن برگر', + desc: '', + price: 195000, + restaurantSlug: 'lama', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیکن برگر ذغالی', + desc: '', + price: 215000, + restaurantSlug: 'lama', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر آلفردو', + desc: '', + price: 185000, + restaurantSlug: 'lama', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر آلفردو ذغالی', + desc: '', + price: 205000, + restaurantSlug: 'lama', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کته کباب دیگی .. digi kebab & rice ', + desc: 'گوشت،سیب زمینی تنوری،گوجه سس کباب دیگی،فلفل دلمه ای،برنج ایرانی ..meat/roast potatoes/tomato/digi kebab sauce/sweet pepper/iranian rice', + price: 510000, + restaurantSlug: 'zhivan', + categoryTitle: 'ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714732721495.png"], +}, +{ + title: 'هات داگ کلاسیک', + desc: '', + price: 75000, + restaurantSlug: 'lama', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات داگ باربیکیو', + desc: '', + price: 90000, + restaurantSlug: 'lama', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات داگ مجاری', + desc: '', + price: 125000, + restaurantSlug: 'lama', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات داگ هالوپینو', + desc: '', + price: 85000, + restaurantSlug: 'lama', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ آلمانی قارچ و پنیر', + desc: '', + price: 90000, + restaurantSlug: 'lama', + categoryTitle: 'ساندویچ نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کته .. rice ', + desc: 'برنج ایرانی ..Iranian rice', + price: 155000, + restaurantSlug: 'zhivan', + categoryTitle: 'ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714293401098.png"], +}, +{ + title: 'باقالی پلو با گردن دو نفره', + desc: 'دو عدد باقالی پلو. گردن با ون 1 کیلوگرم به همراه دورچین کامل', + price: 1350000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714733620233.png"], +}, +{ + title: 'ساندویچ کوکتل', + desc: '', + price: 75000, + restaurantSlug: 'lama', + categoryTitle: 'ساندویچ نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ کوکتل قارچ و پنیر', + desc: '', + price: 90000, + restaurantSlug: 'lama', + categoryTitle: 'ساندویچ نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ آلمانی', + desc: '', + price: 75000, + restaurantSlug: 'lama', + categoryTitle: 'ساندویچ نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تک لقمه ساده', + desc: '', + price: 45000, + restaurantSlug: 'lama', + categoryTitle: 'ساندویچ نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تک لقمه مخصوص', + desc: '', + price: 55000, + restaurantSlug: 'lama', + categoryTitle: 'ساندویچ نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بال و کتف ۷ تکه', + desc: '', + price: 145000, + restaurantSlug: 'lama', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بال و کتف ۹ تکه و سیب زمینی', + desc: '', + price: 195000, + restaurantSlug: 'lama', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فیله سوخاری ۵ تکه و سیب زمینی', + desc: '', + price: 195000, + restaurantSlug: 'lama', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فیله سوخاری ۷ تکه و سیب زمینی', + desc: '', + price: 215000, + restaurantSlug: 'lama', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی ساده متوسط', + desc: '', + price: 80000, + restaurantSlug: 'lama', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی ساده بزرگ', + desc: '', + price: 95000, + restaurantSlug: 'lama', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی و سوسیس متوسط', + desc: '', + price: 90000, + restaurantSlug: 'lama', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی و سوسیس بزرگ', + desc: '', + price: 120000, + restaurantSlug: 'lama', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی و ژامبون متوسط', + desc: '', + price: 90000, + restaurantSlug: 'lama', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی و ژامبون بزرگ', + desc: '', + price: 120000, + restaurantSlug: 'lama', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت فرایز متوسط', + desc: '', + price: 115000, + restaurantSlug: 'lama', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت فرایز بزرگ', + desc: '', + price: 145000, + restaurantSlug: 'lama', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنه آلفردو', + desc: '', + price: 156000, + restaurantSlug: 'lama', + categoryTitle: 'پنه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنه گوشت', + desc: '', + price: 183000, + restaurantSlug: 'lama', + categoryTitle: 'پنه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1724694688777.png"], +}, +{ + title: 'پنه سبزیجات', + desc: '', + price: 110000, + restaurantSlug: 'lama', + categoryTitle: 'پنه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ریبای استیک . ribeye steak & mushroom sauce ', + desc: '500 گرم گوشت گوساله ،سبزیجات بخار پز،سس قارچ..500g veal meat/steamed vegetables/ mushroom sauce ', + price: 1030000, + restaurantSlug: 'zhivan', + categoryTitle: 'استیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714242244841.png"], +}, +{ + title: 'خوراک جوجه کباب. Chicken kebab/3 skewers ', + desc: '٣ سیخ جوجه/گوجه گیلاسی/سبزی خوردن/سالاد شیرازی/ماست..chicken/tomato/vegetable/shirazi salad/yogurt', + price: 445000, + restaurantSlug: 'zhivan', + categoryTitle: 'ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715696138450.png"], +}, +{ + title: 'رویال برگر ', + desc: '', + price: 235000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714230711903.png"], +}, +{ + title: 'کوکتل قارچ وپنیر ', + desc: '', + price: 135000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میکس برگر', + desc: '', + price: 235000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1714233840875.png"], +}, +{ + title: 'بشقاب پروتئین(رژیمی).. dietetic foods', + desc: 'گوشت گوساله،فیله مرغ،بی بی اسفناج،سبزیجات روز،سیب زمینی تنوری،تخم مرغ آب پز،قارچ،سس مخصوص ژیوان..veal/chicken fillet/baby spinach/vegetable/roast potatoes/boiled egg/mushrom/ special Zhivan sauce ', + price: 558000, + restaurantSlug: 'zhivan', + categoryTitle: 'استیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715701220774.png"], +}, +{ + title: 'کته استیک ریبای . Ribeye steak & rice', + desc: '۵٠٠ گرم گوشت گوساله، برنج ایرانی، سالاد شیرازی، ماست..500g veal meat/iranian rice/shirazi salad/yogurt', + price: 1050000, + restaurantSlug: 'zhivan', + categoryTitle: 'ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715697744094.png"], +}, +{ + title: 'آمریکانو روبوستا', + desc: '', + price: 56000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو سینگل روبوستا ', + desc: '', + price: 35000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو سینگل 50/50', + desc: '', + price: 45000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو دوبل 50/50', + desc: '', + price: 65000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیما...Sima', + desc: 'بهارنارنج،تخم شربتی،citrus aurantium/chia/', + price: 105000, + restaurantSlug: 'zhivan', + categoryTitle: 'شربت و عرقیجات', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715700359170.png"], +}, +{ + title: 'هما .. Homa', + desc: 'خیار،سکنجبین،لیمو..cucumber/ skanjbin/lemon', + price: 115000, + restaurantSlug: 'zhivan', + categoryTitle: 'شربت و عرقیجات', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715700302453.png"], +}, +{ + title: 'جانا .. Jana', + desc: 'زعفران،گل محمدی،تخم شربتی..saffron/damask rose/chia', + price: 115000, + restaurantSlug: 'zhivan', + categoryTitle: 'شربت و عرقیجات', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715700257579.png"], +}, +{ + title: 'سالاد سزار گریل', + desc: '', + price: 250000, + restaurantSlug: 'dream', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار دو رول', + desc: '', + price: 265000, + restaurantSlug: 'dream', + categoryTitle: 'سالاد', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'فروت سالاد', + desc: 'اهو سیب سبز کیوی توت فرنگی سس زرشک و تمشک', + price: 220000, + restaurantSlug: 'dream', + categoryTitle: 'سالاد', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سالاد مخصوص', + desc: '', + price: 110000, + restaurantSlug: 'dream', + categoryTitle: 'سالاد', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سالاد بیستکا', + desc: 'کاهو فیله گوساله جوانه گندم سس مخصوص', + price: 240000, + restaurantSlug: 'dream', + categoryTitle: 'سالاد', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سالاد کلاسیک', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'سالاد', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'پاین', + desc: 'ژامبون گوشت ٫ فیله مرغ ٫ قارچ ٫ پنیر مخصوص', + price: 265000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 0, + stockDefault: 0, + images: [], +}, +{ + title: 'سه تیکه استریپس', + desc: '', + price: 265000, + restaurantSlug: 'dream', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنج تیکه استریپس', + desc: '', + price: 345000, + restaurantSlug: 'dream', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دبل دان', + desc: '', + price: 245000, + restaurantSlug: 'dream', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میگو سوخاری', + desc: '', + price: 270000, + restaurantSlug: 'dream', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بشقاب سوخاری', + desc: '2فیله مرغ 5قارچ سوخاری 2پیازحلقه سیب سوخاری', + price: 285000, + restaurantSlug: 'dream', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیف آلفردو', + desc: '', + price: 265000, + restaurantSlug: 'dream', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پستو', + desc: '', + price: 220000, + restaurantSlug: 'dream', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لازانیا', + desc: '', + price: 200000, + restaurantSlug: 'dream', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز پاستا', + desc: 'پنه سس مارتیارا سس قارچ پستو سس ریحان و مرغ', + price: 290000, + restaurantSlug: 'dream', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیده گوشت', + desc: '', + price: 220000, + restaurantSlug: 'dream', + categoryTitle: 'پیده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیده مرغ', + desc: '', + price: 210000, + restaurantSlug: 'dream', + categoryTitle: 'پیده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وجترین', + desc: '', + price: 170000, + restaurantSlug: 'dream', + categoryTitle: 'پیده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیف استروگانف', + desc: '', + price: 0, + restaurantSlug: 'dream', + categoryTitle: 'خوراک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن', + desc: '', + price: 0, + restaurantSlug: 'dream', + categoryTitle: 'خوراک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سس سزار', + desc: '', + price: 20000, + restaurantSlug: 'dream', + categoryTitle: 'افزودنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سس قارچ', + desc: '', + price: 20000, + restaurantSlug: 'dream', + categoryTitle: 'افزودنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سس دیپ', + desc: '', + price: 15000, + restaurantSlug: 'dream', + categoryTitle: 'افزودنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سس پستو', + desc: '', + price: 15000, + restaurantSlug: 'dream', + categoryTitle: 'افزودنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نان مک', + desc: '', + price: 10000, + restaurantSlug: 'dream', + categoryTitle: 'افزودنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رولر', + desc: '', + price: 250000, + restaurantSlug: 'dream', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دبل', + desc: '', + price: 310000, + restaurantSlug: 'dream', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاین برگر', + desc: '', + price: 295000, + restaurantSlug: 'dream', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر کلاسیک', + desc: '', + price: 225000, + restaurantSlug: 'dream', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ فیله مرغ', + desc: '', + price: 240000, + restaurantSlug: 'dream', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ رست بیف', + desc: '', + price: 250000, + restaurantSlug: 'dream', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مینیون', + desc: 'فیله گوساله سس قارچ', + price: 510000, + restaurantSlug: 'dream', + categoryTitle: 'استیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ریبای', + desc: '', + price: 530000, + restaurantSlug: 'dream', + categoryTitle: 'استیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فیلتو آل اجتو بالزامیک', + desc: 'فیله گوساله سس بالزامیک', + price: 540000, + restaurantSlug: 'dream', + categoryTitle: 'استیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پتو دی پلو آل ملگارانوت', + desc: '', + price: 310000, + restaurantSlug: 'dream', + categoryTitle: 'استیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فیلتو گریلیا کونفوگیس', + desc: 'فیله گوساله سس قارچ ', + price: 510000, + restaurantSlug: 'dream', + categoryTitle: 'استیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیرواستیک', + desc: 'راسته گوساله سیر فلفل دلمه ای و پنیر', + price: 320000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پپرونی', + desc: 'پپرونی و پنیر فلفل دلمه', + price: 290000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوآترو پارتی', + desc: 'پپرونی مرغ طمع دار شده هات داگ و سبزیجات', + price: 310000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیکن', + desc: 'پنیر بیکن فلفل دلمه و قارچ', + price: 290000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رست بیف', + desc: 'گوشت گوساله قارچ فلفل پنیر', + price: 285000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پپر', + desc: 'ژامبون پپرونی ٫ قارچ ٫ فلفل دلمه ٫ پنیر مخصوص', + price: 250000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سبزیجات', + desc: 'قارچ فلفل گوجه پنیر', + price: 210000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مونترال(مخلوط)', + desc: 'ژامبون گوشت ٫ هات داگ ۹۰٪ ٫ قارچ ٫ پنیر مخصوص', + price: 245000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالامی', + desc: 'ژامبون سالامی قارچ فلفل پنیرمخصوص', + price: 260000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ویکتوریا', + desc: 'ژامبون گوشت ، ژامبون مرغ ٫ پنیر مخصوص', + price: 257000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مکزیکی', + desc: 'گوشت تند٫کاهو ٫چیپس٫پنیر مخصوص', + price: 235000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کالزونه', + desc: 'ژامبون گوشت مرغ طمع دار شده قارچ پنیر گودا و دولایه خمیر ', + price: 265000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک چنجه.. chenjeh kebab/3 skewers', + desc: '۳سیخ کباب چنجه،سالاد شیرازی ،ماست،سبزی خوردن، سبزیجات بخار پز..chenjeh kebab/shirazi salad/yogurt/vegetable/steamed vegetables ', + price: 840000, + restaurantSlug: 'zhivan', + categoryTitle: 'ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1715697924107.png"], +}, +{ + title: 'رول پنیری', + desc: '3 عدد رول(خمیر مخصوص و ژامبون و پنیر چدار)', + price: 120000, + restaurantSlug: 'dream', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن استیس', + desc: 'دو سیخ جوجه سوخاری', + price: 150000, + restaurantSlug: 'dream', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قارچ سوخاری', + desc: '', + price: 115000, + restaurantSlug: 'dream', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب تنوری', + desc: '', + price: 110000, + restaurantSlug: 'dream', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی مخصوص', + desc: 'سیب سرخ کرده و پنیر پیتزا زیتون و فلفل دلمه ', + price: 130000, + restaurantSlug: 'dream', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب سوخاری', + desc: '', + price: 80000, + restaurantSlug: 'dream', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا ایتالیایی وجترین', + desc: 'کدو و بادمجان قارچ و فلفل دلمه ای و زیتون گوجه', + price: 225000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا پاین ایتالیایی', + desc: 'فیله گوساله و بیکن گوشت قارچ بلانچ و فلفل دلمه ای', + price: 330000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا آمریکایی چیکن', + desc: 'مواد تشکیل دهنده: مرغ طمع دار شده و قارچ فلفل دلمه ای و پنیر مخصوص', + price: 270000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنه آلفردو ', + desc: '', + price: 195000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنه گوشت', + desc: '', + price: 225000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک لوتوس', + desc: '', + price: 140000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز کیک لوتوس', + desc: '', + price: 90000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میکس بری', + desc: '', + price: 95000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رول نیویورکی', + desc: '', + price: 100000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خمیر شو', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سن سباستین', + desc: '', + price: 85000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دسر نوتلا ', + desc: '', + price: 92000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اکلر', + desc: '', + price: 80000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاریس برس', + desc: '', + price: 110000, + restaurantSlug: 'dream', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چلو کباب ', + desc: '', + price: 250000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چلو جوجه ترش', + desc: '', + price: 290000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چلو برگ', + desc: '', + price: 350000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'زرشک پلو', + desc: '', + price: 80000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک کباب', + desc: '', + price: 190000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک جوجه', + desc: '', + price: 220000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک جوجه ترش', + desc: '', + price: 230000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک برگ', + desc: '', + price: 350000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک بختیاری', + desc: '', + price: 280000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک گردن', + desc: '', + price: 340000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک کباب نگینی', + desc: '', + price: 220000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک کباب تبریزی', + desc: '', + price: 210000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک کباب مصری ', + desc: '', + price: 240000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک سلطانی', + desc: 'یک سیخ کوبیده و یک سیخ برگ', + price: 430000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک مرغ', + desc: '', + price: 180000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جگر', + desc: '', + price: 60000, + restaurantSlug: 'dream', + categoryTitle: 'باربیکیو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دل', + desc: '', + price: 55000, + restaurantSlug: 'dream', + categoryTitle: 'باربیکیو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قلوه', + desc: '', + price: 80000, + restaurantSlug: 'dream', + categoryTitle: 'باربیکیو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دنبه', + desc: '', + price: 30000, + restaurantSlug: 'dream', + categoryTitle: 'باربیکیو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کتف و بال', + desc: '', + price: 170000, + restaurantSlug: 'dream', + categoryTitle: 'باربیکیو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاسه کباب', + desc: '', + price: 270000, + restaurantSlug: 'dream', + categoryTitle: 'باربیکیو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چنجه', + desc: '', + price: 350000, + restaurantSlug: 'dream', + categoryTitle: 'باربیکیو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قارچ کبابی', + desc: '', + price: 50000, + restaurantSlug: 'dream', + categoryTitle: 'باربیکیو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نان', + desc: '', + price: 5000, + restaurantSlug: 'dream', + categoryTitle: 'باربیکیو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا هیرو / hero pizza', + desc: 'فیله گوساله /قارچ/سبزیجات خارجی /گوجه اسلایس /فلفل دلمه ای /ریحان ایتالیایی/سس مخصوص کره بادام زمینی ژیوان ', + price: 580000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1718492975613.png"], +}, +{ + title: 'آل پولو ایتالیایی', + desc: 'مرغ قارچ فلفل دلمه', + price: 330000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آل فونگی ایتالیایی', + desc: '', + price: 285000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوآتروماژی ایتالیایی', + desc: '4 مدل پنیر', + price: 300000, + restaurantSlug: 'dream', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ریسو تندو', + desc: '', + price: 100000, + restaurantSlug: 'dream', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برنج سوخاری', + desc: '10 عدد برنج سوخاری', + price: 100000, + restaurantSlug: 'dream', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار سوخاری', + desc: '', + price: 275000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماکتیل بلک بری ', + desc: 'میوه های قرمز ذغال اخته', + price: 120000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک بِری', + desc: '', + price: 120000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بلک موهیتو', + desc: '', + price: 95000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سایفون ', + desc: '', + price: 120000, + restaurantSlug: 'foodcourt', + categoryTitle: 'قهوه های دمی.', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایروپرس', + desc: '', + price: 125000, + restaurantSlug: 'foodcourt', + categoryTitle: 'قهوه های دمی.', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قهوه ترک', + desc: '', + price: 95000, + restaurantSlug: 'foodcourt', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سینامون لاته', + desc: '', + price: 125000, + restaurantSlug: 'foodcourt', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس کافی', + desc: '', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'آیس کافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس کارامل', + desc: '', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'آیس کافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس فندوق', + desc: '', + price: 110000, + restaurantSlug: 'foodcourt', + categoryTitle: 'آیس کافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اورنج کافی', + desc: '', + price: 85000, + restaurantSlug: 'foodcourt', + categoryTitle: 'آیس کافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکون لاته ', + desc: '', + price: 85000, + restaurantSlug: 'foodcourt', + categoryTitle: 'آیس کافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'میکس بری', + desc: '', + price: 95000, + restaurantSlug: 'foodcourt', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش استوایی', + desc: '', + price: 95000, + restaurantSlug: 'foodcourt', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'به لیمو زنجبیل ', + desc: '', + price: 90000, + restaurantSlug: 'foodcourt', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آریا', + desc: '', + price: 160000, + restaurantSlug: 'foodcourt', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بنانا چاکلت', + desc: '', + price: 165000, + restaurantSlug: 'foodcourt', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بری نوتلا', + desc: '', + price: 160000, + restaurantSlug: 'foodcourt', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیت کت', + desc: '', + price: 160000, + restaurantSlug: 'foodcourt', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وزیری', + desc: 'یک سیخ کوبیده و یک سیخ جوجه', + price: 250000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوبیده (تک سیخ)', + desc: '', + price: 75000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برنج زعفرانی', + desc: '', + price: 70000, + restaurantSlug: 'dream', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک وزیری', + desc: 'یک سیخ کوبیده و یک سیخ جوجه', + price: 350000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک بختیاری', + desc: 'مخلوط جوجه و برگ', + price: 320000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک برگ', + desc: '180 گرم گوشت گوساله مو دورچین', + price: 410000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک سلطانی', + desc: 'یک سیخ کوبیده و یک سیخ برگ', + price: 470000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جوجه ترش', + desc: '250 گرم فیله مرغ به همراه رب انار و گردو', + price: 290000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک کوبیده', + desc: '2 سیخ کباب کوبیده', + price: 270000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک نگینی', + desc: ' دو سیخ کباب کوبیده به همراه تیکه های مرغ', + price: 270000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک مصری', + desc: 'رول فیله مرغ به همراه رب انار فلفل دلمه ای پیاز و ادویه های ویژه و گردو', + price: 340000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کباب تبریزی', + desc: 'دو سیخ کباب کوبیده به همراه سبزیجات و گوشت راسته گوساله', + price: 300000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برنج زعفرانی', + desc: '', + price: 110000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن', + desc: 'مرغ طمع دار شده و قارچ و فلفل دلمه ای و پنیر مخصوص', + price: 300000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رست بیف', + desc: 'گوشت گوساله و قارچ و پنیر', + price: 320000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پپر', + desc: 'ژامبون پپرونی قارچ و فلفل دلمه ای و پنیر مخصوص', + price: 270000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مونترال(مخلوط)', + desc: 'ژامبون گوشت و هات داگ 90%و قارچ و پنیر مخصوص', + price: 285000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سبزیجات', + desc: 'قارچ وفلفل و گوجه و پنیر مخصوص', + price: 240000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بشقاب سوخاری', + desc: '3 عدد فیله مرغ 8 عدد قارچ 1 عدد توپک برنجی سیب زمینی سرخ کرده و سوخاری', + price: 390000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دبل دان', + desc: 'دو عدد شنسل مرغ تند و ژامبون و پنیر و قارچ تفت داده به همراه سیب زمینی', + price: 330000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: '5 تیکه استریپس', + desc: '', + price: 420000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: '3 تیکه استریپس', + desc: '', + price: 310000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار گریل', + desc: 'دو عداد فیله طمع دار شده به همراه نان سیر تست شده گوجه گیلاسی زیتون و سس مخصوص', + price: 260000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار دو رول', + desc: 'دو رول فیله سوخاری به همراه نان سیر تست شده گوجه گیلاسی زیتون و سس مخصوص', + price: 275000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد مخصوص', + desc: 'کاهو گوجه گیلاسی پرتغال سس مخصوص و زیتون و ژامبون', + price: 120000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد بیستکا', + desc: 'کاهو و فیله گوساله و سس مخصوص پیاز و خیار و زیتون ', + price: 280000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد کلاسیک', + desc: 'کاهو و گوجه و خیار و زامبون و سس مخصوص', + price: 80000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فروت سالاد ', + desc: 'کاهو و میوه فصل', + price: 220000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خوراک کباب دیگی digi kebab', + desc: 'گوشت،سیب زمینی تنوری،گوجه سس کباب دیگی،فلفل دلمه ای، ..meat/roast potatoes/tomato/digi kebab sauce/sweet pepper/iranian rice', + price: 420000, + restaurantSlug: 'zhivan', + categoryTitle: 'ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1721822590888.png"], +}, +{ + title: 'چیز برگر', + desc: '150 گرم گوشت گوساله به همراه پنیر ', + price: 265000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برگر کلاسیک ', + desc: '150 گرم گوشت چرخ کرده گوساله به همراه کاهو و...', + price: 250000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دبل برگر', + desc: '300 گرم گوشت چرخ کرده گوساله به همراه سبزیجات', + price: 350000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاین برگر', + desc: '150 گرم گوشت چرخ کرده گوساله وشنسل مرغ به همراه قارچ و پنیر', + price: 320000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ فیله سوخاری', + desc: ' 2عدد فیله مرغ سوخاری و کاهو ...', + price: 250000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ رست بیف', + desc: 'گوشت فیله گوساله و دورچین', + price: 260000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیکن تنوری', + desc: '', + price: 200000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'برگر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تیرامیسو', + desc: '', + price: 90000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز کیک لوتوس', + desc: '', + price: 100000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سن سباستین', + desc: '', + price: 100000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دسر نوتلا ', + desc: '', + price: 100000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو 70/30', + desc: '', + price: 60000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو 100 عربیکا', + desc: '', + price: 67000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماکیاتو70/30', + desc: '1 شات اسپرسو یه همراه یک لکه شیر', + price: 75000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماکیاتو 100 عربیکا', + desc: 'یک شات اسپرسو به همراه یک لکه شیر', + price: 83000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو 70/30', + desc: 'یک شات اسپرسو به همراه 150 میلی لیتر آب', + price: 63000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو 100 عربیکا', + desc: 'یک شات اسپرسو به همراه 150 میلی لیتر آب', + price: 70000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوجینو 70/30', + desc: 'ریسترتو (اسپرسو کم آب) به همراه 180 گرم شیر', + price: 70000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو 100 عربیکا', + desc: 'ریسترتو (اسپرسو کم آب) به همراه 180 گرم شیر', + price: 77000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته 70/030', + desc: 'ریسترتو (اسپرسو کم آب) به همراه 250 گرم شیر', + price: 75000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته 100 عربیکا', + desc: 'ریسترتو (اسپرسو کم آب) به همراه 250 گرم شیر', + price: 82000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل ماکیاتو70/30', + desc: 'ریسترتو (اسپرسو کم آب) به همراه 250میلی لیتر شیر و سیروب کارامل', + price: 78000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل ماکیاتو 100 عربیکا', + desc: 'ریسترتو (اسپرسو کم آب) به همراه 250 میلی لیتر شیر و سیروب کارامل', + price: 84000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا 70/30', + desc: 'ریسترتو (اسپرسو کم آب) به همراه 250میلی لیتر شیر و سیروب شکلات', + price: 79000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا 100 عربیکا', + desc: 'ریسترتو (اسپرسو کم آب) به همراه 250میلی لیتر شیر و سیروب شکلات', + price: 84000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفاگاتو', + desc: '2 اسکوب بستنی وانیل به همراه 1 شات اسپرسو ', + price: 70000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای دمی ', + desc: '', + price: 40000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای زعفران', + desc: '', + price: 50000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای دمی با قوری 2 نفره', + desc: '', + price: 65000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش آرامش', + desc: 'سنبل الطیب و گل گاو زبان و لیمو عمانی', + price: 55000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش آویشن نعنا', + desc: '', + price: 55000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش بهار نارنج به لیمو', + desc: '', + price: 55000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش میوه های قرمز', + desc: '', + price: 55000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 68000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا', + desc: '', + price: 68000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لاته70/30', + desc: 'یک شات اسپرسو و 280 میلی لیتر شیر و یخ', + price: 75000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لاته عربیکا', + desc: 'یک شات اسپرسو و 280 میلی لیتر شیر و یخ', + price: 85000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس کارامل ماکیتو 70/30', + desc: 'یک شات اسپرسو و 280 میلی لیتر شیر و یخ و سیروب کارامل', + price: 80000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس کارامل ماکیاتو عربیکا', + desc: 'یک شات اسپرسو و 280 میلی لیتر شیر و یخ و سیروب کارامل', + price: 88000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس موکا 70/30', + desc: 'یک شات اسپرسو و 280 میلی لیتر شیر و یخ و سیروب شکلات', + price: 80000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس موکا عربیکا', + desc: 'یک شات اسپرسو و 280 میلی لیتر شیر و یخ و سیروب شکلات', + price: 87000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس آمریکانو70/30', + desc: 'یک شات اسپرسو و 200میلی لیتر آب و یخ', + price: 70000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس آمریکانو عربیکا', + desc: 'یک شات اسپرسو و 200میلی لیتر آب و یخ', + price: 75000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'قهوه های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قهوه ترک', + desc: '', + price: 70000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'قهوه های دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قهوه فرانسه (فرنچ پرس)', + desc: '', + price: 85000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'قهوه های دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'v60', + desc: '', + price: 85000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'قهوه های دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وانیل', + desc: '', + price: 100000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شیک ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شکلات', + desc: '', + price: 115000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شیک ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موز شکلات', + desc: '', + price: 120000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شیک ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نوتلا', + desc: '', + price: 120000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شیک ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قهوه', + desc: '', + price: 115000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شیک ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک لوتوس', + desc: '', + price: 110000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شیک ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اوریو', + desc: '', + price: 110000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شیک ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بادام زمینی', + desc: '', + price: 115000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شیک ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شکلات بادام زمینی', + desc: '', + price: 120000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شیک ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل سالت', + desc: '', + price: 115000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شیک ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیموناد ', + desc: 'لیمو مادل شده و سیروب شکر و سودا و یخ', + price: 65000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اورنج لیموناد', + desc: 'پرتغال مادل شده و آب لیمو و سیروب تیری پل سک و سودا و یخ', + price: 70000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: 'لیمو مادل شده و نعنا و سیروب شکر و سودا و یخ', + price: 70000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رد موهیتو', + desc: 'لیمو مادل شده و نعنا و سیروب کرن بری وسیروب شکر و سودا و یخ', + price: 72000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سوربری', + desc: 'توت فرنگی و نمک دریا و سیروب کرن بری آب آلبالو و آب لیمو یخ', + price: 85000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تروپیکال فروت', + desc: 'سیروب پشن فروت و آب هلو و آب انبه و آب لیمو و یخ', + price: 87000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بلو اسکای', + desc: 'سیروب بلو کارسائو و آب آنانانس و آب لیمو و یخ', + price: 75000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'انبه شاتوت', + desc: 'بریلو شاتوت و آب انبه و یخ', + price: 90000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'موکتل و آب میوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آب میوه طبیعی', + desc: 'میوه های فصل', + price: 75000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'موکتل و آب میوه ها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب سرخ کرده', + desc: '', + price: 100000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب سوخاری', + desc: '', + price: 130000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی مخصوص', + desc: 'سیب زمینی سرخ کرده به همراه پنیر و قارچ و ژامبون', + price: 160000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قارچ سوخاری', + desc: '', + price: 125000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رول پنیری', + desc: '3 عدد رول پنیر ئ ژامبون سوخاری شده', + price: 125000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن استیس', + desc: '2 عدد سیخ فیله سوخاری شده ', + price: 200000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برنج سوخاری ', + desc: '', + price: 100000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'خیار سکنجبین', + desc: '', + price: 55000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شربت', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بها نارنج', + desc: '', + price: 55000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شربت', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نسترن', + desc: '', + price: 55000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شربت', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیدمشک', + desc: '', + price: 55000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شربت', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'زعفران', + desc: '', + price: 55000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'شربت', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایتالیایی وجترین', + desc: 'کدو و بادمجان و قارچ و فلفل دلمه ای و زیتون', + price: 270000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیر و استیک', + desc: 'راسته گوساله سیر فلفل دلمه ای و پنیر مخصوص', + price: 360000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آل پلو', + desc: 'مرغ طمع دار شده و قارچ و فلفل دلمه ای', + price: 350000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پپرونی ', + desc: 'پپرونی هات داگ و سبزیجات', + price: 330000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاسه کباب', + desc: 'یک سیخ کوبیده و یک سیخ جوجه و گوشت چنجه', + price: 350000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تیرامیسو', + desc: '', + price: 165000, + restaurantSlug: 'zhivan', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بشقاب تولد', + desc: '', + price: 18000, + restaurantSlug: 'foodcourt', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای تک نفره', + desc: '', + price: 60000, + restaurantSlug: 'foodcourt', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بستنی ', + desc: 'وانیل / شکلاتی / همراه با میوه و سس ', + price: 140000, + restaurantSlug: 'zhivan', + categoryTitle: 'اسموتی و شیک ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1723556152610.png"], +}, +{ + title: 'اسپرسو عربیکا ویژه', + desc: 'اتیوپی هامبلا تخمیری', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو ربوستا', + desc: 'اسپرسو دوپیو ربوستا -آب', + price: 40000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو 50-50', + desc: 'اسپرسو دوپیو 50-50 -آب', + price: 48000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو عربیکا ', + desc: 'اسپرسو دوپیو عربیکا - آب', + price: 55000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ترک', + desc: '', + price: 45000, + restaurantSlug: 'LIAN', + categoryTitle: 'دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فرانسه', + desc: '', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماکیاتو', + desc: 'اسپرسو دوپیو - لکه فوم شیر', + price: 40000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کٌرتادو', + desc: 'نسبت برابر شیر با اسپرسو', + price: 45000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیکولو', + desc: 'نسبت دوبرار شیر به اسپرسو', + price: 45000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو', + desc: 'اسپرسو دوپیو-شیر-فوم شیر ', + price: 55000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فلت وایت', + desc: 'اسپرسو-شیر-فوم شیر سبک', + price: 55000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته', + desc: 'اسپرسو-شیر فوم دار شده', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته با سیروپ', + desc: 'اسپرسو-شیر-سیروپ(کارامل-فندوق-وانیل-نارگیل)', + price: 70000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا', + desc: 'اسپرسو-شیر-سیروپ شکلات', + price: 70000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا فندوقی', + desc: 'اسپرسو-شیر-سیروپ شکلات و فندوق', + price: 75000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفوگاتو', + desc: 'اسپرسو دوپیو-بستنی وانیل', + price: 50000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفوگاتو ویژه', + desc: 'اسپرسو دوپیو عربیکا-بستنی وانیل و شکلات', + price: 70000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس آمریکانو عربیکا ', + desc: 'اسپرسو دوپیو عربیکا-آب-یخ', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای لاته', + desc: 'چای-قهوه گلد-شیر-سیروپ', + price: 50000, + restaurantSlug: 'LIAN', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گل گاوزبان', + desc: '', + price: 25000, + restaurantSlug: 'LIAN', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'مانستر کولا', + desc: '', + price: 70000, + restaurantSlug: 'LIAN', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیمیت', + desc: 'نان سیمیت-پنیر-گردو-خیار-گوجه-ریحان', + price: 70000, + restaurantSlug: 'LIAN', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ مرغ', + desc: 'نان چاپاتا-سس پستو-مرغ-کاهو فرانسه-گوجه گیلاسی', + price: 115000, + restaurantSlug: 'LIAN', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ بوقلمون', + desc: 'نان چاپاتا-سس پستو-بوقلمون-پنیر موزرلا-گوجه گیلاسی', + price: 130000, + restaurantSlug: 'LIAN', + categoryTitle: 'میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1736521255416.png"], +}, +{ + title: 'اگ وافل(new)', + desc: 'وافل، بیکن، سالاد روکولا، تخم مرغ، سس مخصوص', + price: 285000, + restaurantSlug: 'boote', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728329980738.png"], +}, +{ + title: 'املت ویژه', + desc: 'تخم مرغ، سس گوجه فرنگی، پنیر گودا، ، چیپس خلال، دورچین', + price: 165000, + restaurantSlug: 'boote', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1765281756496.png"], +}, +{ + title: 'املت شاپوری', + desc: 'تخم مرغ، سس گوجه فرنگی، خوراک لوبیا، پیاز سرخ شده، دورچین به همراه نان', + price: 179000, + restaurantSlug: 'boote', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1765281673778.png"], +}, +{ + title: 'مدالیون استیک', + desc: 'فیله گوساله، پوره سیب زمینی، هویج، بروکلی، قارچ، کدو، سس باترپپر، سس قارچ', + price: 975000, + restaurantSlug: 'boote', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732099143873.png"], +}, +{ + title: 'باربیکیو چیکن(new)', + desc: 'سینه مرغ، پوره سیب زمینی، سبزیجات، سس باربیکیو، میکرو گرین', + price: 553000, + restaurantSlug: 'boote', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728331573491.png"], +}, +{ + title: 'چیکن بلو(new)', + desc: 'پنه، سس آلفردو، شنیسل مرغ سوخاری، پنیر پارمسان، ریحان ایتالیایی', + price: 417000, + restaurantSlug: 'boote', + categoryTitle: 'پاستا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758234581.png"], +}, +{ + title: 'داینامیت شریمپ(new)', + desc: 'میگو(تند)، سالاد روکولا، رایس پیپر، رلیش خیار، ترشی پیاز، پلبیبر، کنجد، خمیر بنیه', + price: 399000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728330007896.png"], +}, +{ + title: 'شنیسل مرغ(new)', + desc: 'سینه مرغ سوخاری، پوره سیب زمینی، سالاد روکولا، سس انتروکوت', + price: 545000, + restaurantSlug: 'boote', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728331603363.png"], +}, +{ + title: 'جاکارتا جینجر', + desc: 'زنجبیل اسپایسی همراه با عصاره پشن فروت و تونیک سودای لیمو با آب سیب ترش', + price: 175000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373582119.png"], +}, +{ + title: 'فرنچ پاستیس', + desc: 'عطر یادی از بادیان ستاره ای با طعم پاستیلی و سودا', + price: 175000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373531857.png"], +}, +{ + title: 'موهیتو اسپارکل', + desc: 'ترکیبی از لیمو و نعناع به سبک آمریکای جنوبی', + price: 169000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373498052.png"], +}, +{ + title: 'تونیک جینجر', + desc: 'سودا طعم دار شده با زنجبیل و پرتقال خونی', + price: 155000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373498950.png"], +}, +{ + title: 'کرونا سودا واتر', + desc: 'آب جوی بدون الکل اصل کرونا همراه با عسل و پاپریکا', + price: 215000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373326721.png"], +}, +{ + title: 'بالتیکا مارگاریتا', + desc: 'پوره طبیعی سیفیجات با سیب ترش همراه باعصاره پوست پرتقال', + price: 185000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373364742.png"], +}, +{ + title: 'لیموناد مصری', + desc: 'ترکیب زعفران همراه با عصاره لیمو و عطر پرتقال ترش', + price: 165000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373396422.png"], +}, +{ + title: 'الدوراند بالی', + desc: 'عصاره آلوئه ورا همراه با سودای لیمویی و عطر خیار با آب آناناس', + price: 179000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373551935.png"], +}, +{ + title: 'چاکلت پاپچی', + desc: 'ژلاتو شکلات کارات تلخ همراه با کیک برانی و پودر شکلات هلندی', + price: 195000, + restaurantSlug: 'boote', + categoryTitle: 'ژلاتو میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728372980251.png"], +}, +{ + title: 'بلک چری', + desc: 'سوربتو شاه توت به همراه میوه های قرمز و سس انار با پوره کرن بری', + price: 189000, + restaurantSlug: 'boote', + categoryTitle: 'ژلاتو میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728372948803.png"], +}, +{ + title: 'کرانچ وانیلا باتر', + desc: 'ژلاتو وانیلی با کره بادام زمینی همراه موز و کوکی', + price: 185000, + restaurantSlug: 'boote', + categoryTitle: 'ژلاتو میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728372895437.png"], +}, +{ + title: 'ماراش استانبول', + desc: 'باقلوا بستنی به همراه زعفران و کره لوتوس با قیماخ', + price: 209000, + restaurantSlug: 'boote', + categoryTitle: 'ژلاتو میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728372863049.png"], +}, +{ + title: 'تی مو تی مانگو', + desc: 'پوره پشن فروت به همراه انبه و شیر نارگیل در کنار مغزیجات رست شده', + price: 195000, + restaurantSlug: 'boote', + categoryTitle: 'اسموتی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373344734.png"], +}, +{ + title: 'می مو سا آفریقایی', + desc: 'پوره شاه توت و موز به همراه توت فرنگی و آلوئه ورا در کنار سس انار و زنجبیل', + price: 195000, + restaurantSlug: 'boote', + categoryTitle: 'اسموتی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373241200.png"], +}, +{ + title: 'آناستازیا', + desc: 'پوره پرتقال و سبزیجات معطر به همراه خیار و نمک دریایی و عصاره پوست پرتقال', + price: 195000, + restaurantSlug: 'boote', + categoryTitle: 'اسموتی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373220295.png"], +}, +{ + title: 'مکزیکن(new)', + desc: 'خمیر پیتزا، سس هات بین، قارچ، پولد بیف، اوریگانو، سس چدار، تردیلا، چیپس هویج، پلبیبر', + price: 655000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728330318027.png"], +}, +{ + title: 'پیتزا برگر(new)', + desc: 'خمیر پیتزا، پنیر میکس، سس چدار ، سس مارینارا، گوشت برگر گریل شده، قارچ، اوریگانو، زیتون سیاه', + price: 593000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728306990260.png"], +}, +{ + title: 'کارنه(new)', + desc: 'خمیر ایتالیایی، سس مارینارا، گوشت مرغ، فیله گوساله، قارچ، پیکل پیاز، پستو، ریحان ایتالیایی، اوریگانو، زیتون سیاه', + price: 587000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728330463701.png"], +}, +{ + title: 'چانو(new)', + desc: 'خمیر ایتالیایی، پنیر میکس، پستو ریحان، فیله گوساله، گوجه خشک، اوریگانو، چیپس بادمجان، گردو، پنیر پارمسان', + price: 649000, + restaurantSlug: 'boote', + categoryTitle: 'پیتزا ایتالیایی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728330684783.png"], +}, +{ + title: 'جینجرپشن', + desc: 'لیموناد به همراه زنجبیل تازه', + price: 120000, + restaurantSlug: 'zhivan', + categoryTitle: 'موهیتو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1726913724347.png"], +}, +{ + title: 'فاهیتامیکس(new) تند', + desc: 'سینه مرغ،فیله گوساله،پیاز،فلفل دلمه رنگی،برنج مکزیکی،ساورکرم،دیپ چدار،دیپ تورتیلا،دیپ چدار', + price: 515000, + restaurantSlug: 'boote', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728331131292.png"], +}, +{ + title: 'چای ماسالا', + desc: 'ماسالا چای، شیر، دارچین', + price: 165000, + restaurantSlug: 'boote', + categoryTitle: 'هاوس آف تی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374980662.png"], +}, +{ + title: 'چای کرک', + desc: 'ماسالا چای، زعفران، هل، دارچین، شیر', + price: 169000, + restaurantSlug: 'boote', + categoryTitle: 'هاوس آف تی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374956579.png"], +}, +{ + title: 'چای مراکشی', + desc: 'چای سبز، دارچین، نعنا، لیمو', + price: 155000, + restaurantSlug: 'boote', + categoryTitle: 'هاوس آف تی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728377431806.png"], +}, +{ + title: 'چای لاته', + desc: 'چای، شیر، پودر شکلات', + price: 145000, + restaurantSlug: 'boote', + categoryTitle: 'هاوس آف تی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729765132668.png"], +}, +{ + title: 'چای سبز', + desc: 'چای سبز، لیمو، نبات', + price: 145000, + restaurantSlug: 'boote', + categoryTitle: 'هاوس آف تی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728377808931.png"], +}, +{ + title: 'لانگ بلک', + desc: '', + price: 145000, + restaurantSlug: 'boote', + categoryTitle: 'امریکن استایل', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728377481568.png"], +}, +{ + title: 'اورنج امریکانو', + desc: '', + price: 159000, + restaurantSlug: 'boote', + categoryTitle: 'امریکن استایل', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728372536686.png"], +}, +{ + title: 'آیریش کافی', + desc: '', + price: 175000, + restaurantSlug: 'boote', + categoryTitle: 'امریکن استایل', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729759379045.png"], +}, +{ + title: 'آمریکانو', + desc: '', + price: 135000, + restaurantSlug: 'boote', + categoryTitle: 'امریکن استایل', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728377490744.png"], +}, +{ + title: 'ایبریک (قهوه ترک)', + desc: '', + price: 135000, + restaurantSlug: 'boote', + categoryTitle: 'دمی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728373971406.png"], +}, +{ + title: 'عثمانی', + desc: '', + price: 129000, + restaurantSlug: 'boote', + categoryTitle: 'دمی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374077203.png"], +}, +{ + title: 'دله', + desc: '', + price: 115000, + restaurantSlug: 'boote', + categoryTitle: 'دمی بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374188201.png"], +}, +{ + title: 'موکاچینو', + desc: 'اسپرسو، شیر، سس شکلات، پودر کاکائو', + price: 165000, + restaurantSlug: 'boote', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374516173.png"], +}, +{ + title: 'اسپرسو ماکیاتو', + desc: 'اسپرسو، شیر', + price: 135000, + restaurantSlug: 'boote', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729765217266.png"], +}, +{ + title: 'اسپرسو اسپشیالیتی', + desc: '', + price: 145000, + restaurantSlug: 'boote', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758883089.png"], +}, +{ + title: 'اسپرسو رومانو', + desc: 'اسپرسو، لیمو', + price: 139000, + restaurantSlug: 'boote', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374453525.png"], +}, +{ + title: 'کاپوچینو', + desc: 'اسپرسو، شیر', + price: 149000, + restaurantSlug: 'boote', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374681449.png"], +}, +{ + title: 'کافه لاته', + desc: 'اسپرسو، شیر', + price: 155000, + restaurantSlug: 'boote', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374690285.png"], +}, +{ + title: 'اسپرسو کورتادو', + desc: 'اسپرسو، شیر گاومیش', + price: 145000, + restaurantSlug: 'boote', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728374070853.png"], +}, +{ + title: 'اسپرسو آریش کرما', + desc: 'اسپرسو، شیر، سیروپ آیریش', + price: 149000, + restaurantSlug: 'boote', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758906445.png"], +}, +{ + title: 'هات چاکلت', + desc: 'پودر هات چاکلت، شیر، پودر کاکائو', + price: 165000, + restaurantSlug: 'boote', + categoryTitle: 'چاکلت بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728377462810.png"], +}, +{ + title: 'هات چاکلت بیسکوف', + desc: 'کره لوتوس، پودر هات چاکلت، شیر، پودر کاکائو', + price: 185000, + restaurantSlug: 'boote', + categoryTitle: 'چاکلت بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728377484916.png"], +}, +{ + title: 'وایت چاکلت', + desc: 'پودر وایت چاکلت، شیر', + price: 165000, + restaurantSlug: 'boote', + categoryTitle: 'چاکلت بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728377480666.png"], +}, +{ + title: 'آیس موکا', + desc: '', + price: 169000, + restaurantSlug: 'boote', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728377253866.png"], +}, +{ + title: 'آیس کورتادو', + desc: '', + price: 145000, + restaurantSlug: 'boote', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728376290215.png"], +}, +{ + title: 'آیس آمریکانو', + desc: '', + price: 139000, + restaurantSlug: 'boote', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728376953071.png"], +}, +{ + title: 'آیس لاته', + desc: '', + price: 161000, + restaurantSlug: 'boote', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728377261101.png"], +}, +{ + title: 'آیس رومانو', + desc: '', + price: 155000, + restaurantSlug: 'boote', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728376208132.png"], +}, +{ + title: 'اسپرسو کامرشیال', + desc: '', + price: 125000, + restaurantSlug: 'boote', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758879931.png"], +}, +{ + title: 'چای سیاه لاهیجان 2 کاپ', + desc: 'برگ دستچین شده مزارع لاهیجان،همراه با تاپینگ دارچین، زعفران یا هل', + price: 165000, + restaurantSlug: 'boote', + categoryTitle: 'هاوس آف تی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728377477277.png"], +}, +{ + title: 'سالاد چاینیز(new)', + desc: 'کاهو،سینه مرغ سوخاری،هویج اسپاگتی،سس پینات باتر(تند)، بادام زمینی،کلم بنفش،پیازچه،گشنیز تازه،خیار،بیبی اسفناج،چیپس بادمجان،میکروگرین، رایس نودل', + price: 435000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728306986068.png"], +}, +{ + title: 'چلو گردن ', + desc: 'گردن گوسفندی حدود 600 گرم همراه با برنج و دورچین ', + price: 785000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت فرایز', + desc: 'سیب زمینی خلالی،سس قارچ و خامه', + price: 223000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729757889287.png"], +}, +{ + title: 'نان سیر', + desc: 'خمیر ایتالیایی،میکس پنیر،سس سیر', + price: 337000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729757637426.png"], +}, +{ + title: 'رول سوخاری', + desc: 'مرغ سوخاری شده،پنیر گودا', + price: 197000, + restaurantSlug: 'boote', + categoryTitle: 'پیش غذا ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729757745572.png"], +}, +{ + title: 'سیزلر استیک', + desc: 'پوره سیب زمینی،دورچین سبزیجات،سس قارچ،فیله گوساله سروشده در ظرف چدن', + price: 985000, + restaurantSlug: 'boote', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729758019524.png"], +}, +{ + title: 'فیله استریپس(new)', + desc: 'سه تیکه فیله مرغ پولکی،سیب زمینی،ساید سالاد،سس مخصوص', + price: 415000, + restaurantSlug: 'boote', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1739472531418.png"], +}, +{ + title: 'ته چین گوشت و بادمجان', + desc: 'ته چین،گوشت ماهیچه گوساله،چیپس بادمجان،سس مخصوص', + price: 545000, + restaurantSlug: 'boote', + categoryTitle: 'ناهار بوته', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728331171079.png"], +}, +{ + title: 'براونی کیت کت', + desc: 'یک اسلایس براونی کیت کت', + price: 145000, + restaurantSlug: 'boote', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1728221807368.png"], +}, +{ + title: 'براونی پنیری همراه با بستنی', + desc: 'یک اسلایس کیک براونی به همراه یک اسکوپ بستنی', + price: 165000, + restaurantSlug: 'boote', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729759080723.png"], +}, +{ + title: 'خوراک جوجه ', + desc: '', + price: 220000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وجی لاور new', + desc: 'سس پستو. پنیر پیتزا.کدو طعم دار شده.بروکلی.گوجه خشک مزه دار شده.زیتون سیاه.پارمژان.چیپس هویج.شاتسس کچاپ', + price: 345000, + restaurantSlug: 'lanka', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'زرشک پلو با مرغ', + desc: 'ران مرغ جا افتاده در سس هویج و الو-برنج ایرانی-نثار-دورچین', + price: 275000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'قیمه نثار', + desc: '', + price: 495000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اکبر جوجه', + desc: '', + price: 370000, + restaurantSlug: 'lanka', + categoryTitle: 'ایران زمین', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: 'اب گازدار،سیروپ،لیموتازه،نعنا،یخ کراش', + price: 155000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756970934.png"], +}, +{ + title: 'لیموناد', + desc: 'میکس لیمو تازه،سیروپ.یخ.اب سودا', + price: 149000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729756906514.png"], +}, +{ + title: 'براونی پنیری', + desc: 'یک اسلابس کیک برانی', + price: 135000, + restaurantSlug: 'boote', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729800488338.png"], +}, +{ + title: 'چیزکیک لوتوس', + desc: 'یک اسلایس چیزکیک لوتوس', + price: 185000, + restaurantSlug: 'boote', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1759837227083.png"], +}, +{ + title: 'ردموهیتو', + desc: 'اب گازدار،سیروپ،لیموتازه،نعنا،یخ کراش،سیروپ گرانادین', + price: 169000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729755149179.png"], +}, +{ + title: 'اب میوه فصل', + desc: 'اب پرتغال طبیعی', + price: 185000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1729755296114.png"], +}, +{ + title: 'شیک نوتلا', + desc: '3 اسکوپ بستنی وانیل مخلوط شده با شیر پرچرب و شکلات نوتلا', + price: 175000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک شکلات', + desc: '3 اسکوپ بستنی شکلاتی مخلوط شده با شیر پرچرب ', + price: 175000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک موز ', + desc: '3 اسکوپ بستنی وانیل مخلوط شده با شیر پرچرب و موز تازه ', + price: 170000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک بادام زمینی', + desc: '3 اسکوپ بستنی وانیل مخلوط شده با شیرپرچرب همراه با کره بادوم زمینی ', + price: 175000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک کارامل گردو ', + desc: '3 اسکوپ بستنی وانیل مخلوط شده با شیر پرچرب و سیروپ کارامل و گردو ', + price: 185000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک کاپوچینو', + desc: '3 اسکوپ بستنی وانیل مخلوط شده با اسپرسو 50/50', + price: 185000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک یونیکورن', + desc: '3 اسکوپ بستنی توت فرنگی مخلوط شده با شیرپرچرب ', + price: 170000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک موزشکلات', + desc: '3 اسکوپ بستنی شکلاتی مخلوط شده با شیرپرچرب همراه با موز تازه', + price: 180000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فریکی فروت', + desc: '3 اسکوپ بستنی میوه ای ، موز ، توت فرنگی ، خامه ', + price: 175000, + restaurantSlug: 'donat-factory', + categoryTitle: 'بستنی ویژه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'معجون', + desc: '3 اسکوپ بستنی معجون همراه با مغزیجات،پودر کنجد ، پودر نارگیل و عسل ', + price: 230000, + restaurantSlug: 'donat-factory', + categoryTitle: 'بستنی ویژه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بهشت شکلات', + desc: '3 اسکوپ بستنی شکلات همراه با کورن فلکس ،شکلات هیس ، یسکوییت شکلاتی ، شوکورول و سس شکلات ', + price: 175000, + restaurantSlug: 'donat-factory', + categoryTitle: 'بستنی ویژه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743526924119.png"], +}, +{ + title: 'ویتامینه معجون', + desc: 'بستنی معجون 3 اسکوپ ، مغزیجات ، پودر نارگیل و کنجد ، عسل ،خامه ، موز ، آناناس', + price: 200000, + restaurantSlug: 'donat-factory', + categoryTitle: 'ویتامینه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733563611746.png"], +}, +{ + title: 'چالیس فروت', + desc: 'توت فرنگی ، بستنی وانیل ، موز ، بستنی شکلات ، کیک شکلات ، خامه ، شوکورول', + price: 165000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733306399133.png"], +}, +{ + title: 'چالیس کیک', + desc: 'بستنی وانیل ، ژله ، کیک شکلاتی ، موز', + price: 165000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733306350712.png"], +}, +{ + title: 'دونات بستنی', + desc: 'دونات شکلات ، بستنی شکلات ، موز ، آناناس ، خامه ، سس شکلات ', + price: 165000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180961735.png"], +}, +{ + title: 'کیک بستنی', + desc: 'بستنی شکلات ، توت فرنگی ، موز، کیک شکلاتی ، خامه ، شوکورول ، سس شکلات ', + price: 165000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733142832782.png"], +}, +{ + title: 'برلینر معجون', + desc: 'یک عدد دونات ، خامه ، موز ، بستنی معجون 1 اسکوپ ، مغزیجات ، پودر نارگیل و کنجد ، عسل ، سس شکلات ', + price: 240000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسموتی انبه', + desc: 'انبه 150 گرم ، یخ ', + price: 170000, + restaurantSlug: 'donat-factory', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسموتی ترش', + desc: 'آلبالو 150 گرم ، نمک ، گلپر ، یخ', + price: 170000, + restaurantSlug: 'donat-factory', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسموتی استوایی', + desc: 'انبه ، آناناس ، موز ، یخ ', + price: 180000, + restaurantSlug: 'donat-factory', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسموتی اناناس', + desc: '', + price: 170000, + restaurantSlug: 'donat-factory', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسموتی سیب موز', + desc: '', + price: 160000, + restaurantSlug: 'donat-factory', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس کارامل ماکیاتو', + desc: 'شیر پرچرب ، اسپرسو 50/50 ، سیروپ کارامل ، یخ', + price: 145000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731760342565.png"], +}, +{ + title: 'آیس آمریکانو', + desc: 'اسپرسو 50/50 ،آب ، یخ', + price: 75000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731760427059.png"], +}, +{ + title: 'آیس موکا', + desc: 'شیر پرچرب ، اسپرسو 50/50 ، سیروپ شکلات ، یخ', + price: 145000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731759538021.png"], +}, +{ + title: 'آیس لته', + desc: 'شیر پرچرب ، اسپرسو 50/50 ، یخ', + price: 130000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731759571881.png"], +}, +{ + title: 'اسپرسو ', + desc: '50 درصد عربیکا ، 50 رصد روبوستا ', + price: 70000, + restaurantSlug: 'donat-factory', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733143237751.png"], +}, +{ + title: 'قهوه فرانسه ', + desc: 'فرانسه 70درصد عربیکا ، 30 درصد روبوستا ', + price: 115000, + restaurantSlug: 'donat-factory', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733143297427.png"], +}, +{ + title: 'کارامل ماکیاتو', + desc: 'شیر پرچرب ،اسپرسو 50/50 ، سیروپ کارامل ', + price: 125000, + restaurantSlug: 'donat-factory', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180816485.png"], +}, +{ + title: 'کاپوچینو', + desc: 'شیر پرچرب ،اسپرسو 50/50', + price: 115000, + restaurantSlug: 'donat-factory', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180883149.png"], +}, +{ + title: 'آمریکانو', + desc: 'اسپرسو 50/50 ، آب جوش', + price: 70000, + restaurantSlug: 'donat-factory', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180916579.png"], +}, +{ + title: 'آفوگاتو', + desc: 'بستنی وانیل 1 اسکوپ استاندارد ،اسپرسو 50/50', + price: 115000, + restaurantSlug: 'donat-factory', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180792530.png"], +}, +{ + title: 'لاته', + desc: 'شیر پرچرب ،اسپرسو 50/50', + price: 115000, + restaurantSlug: 'donat-factory', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180650251.png"], +}, +{ + title: 'هات چاکلت اسپرسو', + desc: 'شیر پرچرب ،پودر شکلات ، اسپرسو 50/50', + price: 170000, + restaurantSlug: 'donat-factory', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733143171406.png"], +}, +{ + title: 'هات چاکلت نوتلا', + desc: 'شیر پرچرب ،پودر شکلات ، شکلات نوتلا', + price: 155000, + restaurantSlug: 'donat-factory', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733143139138.png"], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 110000, + restaurantSlug: 'donat-factory', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733143112734.png"], +}, +{ + title: 'هات چاکلت دارک', + desc: '', + price: 110000, + restaurantSlug: 'donat-factory', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733143077005.png"], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 110000, + restaurantSlug: 'donat-factory', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پینک چاکلت', + desc: '', + price: 110000, + restaurantSlug: 'donat-factory', + categoryTitle: 'نوشیدنی های گرم', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیرکاکائو', + desc: '', + price: 90000, + restaurantSlug: 'donat-factory', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733142954323.png"], +}, +{ + title: 'شیرنسکافه', + desc: '', + price: 110000, + restaurantSlug: 'donat-factory', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733142892750.png"], +}, +{ + title: 'چای ماسالا', + desc: '', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733142461417.png"], +}, +{ + title: 'شیر عسل دارچین', + desc: '', + price: 100000, + restaurantSlug: 'donat-factory', + categoryTitle: 'نوشیدنی های گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733142510825.png"], +}, +{ + title: 'چای سیاه', + desc: 'چای ایرانی دمی ', + price: 40000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733142551995.png"], +}, +{ + title: 'چای ترش ', + desc: '', + price: 45000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733142584507.png"], +}, +{ + title: 'دمنوش به', + desc: '', + price: 45000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733142615641.png"], +}, +{ + title: 'دمنوش زنجبیل', + desc: '', + price: 45000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733142649142.png"], +}, +{ + title: 'گل گاو زبان', + desc: '', + price: 50000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733142675241.png"], +}, +{ + title: 'سیب دارچین', + desc: '', + price: 45000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733142720798.png"], +}, +{ + title: 'آیس معجون ', + desc: '3 اسکوپ بستنی معجون ، موز خورد شده ', + price: 165000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس شکلات', + desc: '3 اسکوپ بستنی شکلات ، موز خورد شده ', + price: 140000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'توت فرنگی', + desc: '3 اسکوپ بستنی توت فرنگی، موز خورد شده ', + price: 140000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'طالبی', + desc: '3 اسکوپ بستنی طالبی، موز خورد شده ', + price: 140000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موز', + desc: '3 اسکوپ بستنی وانیل ، موز تازه ، موز خورد شده ', + price: 140000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'انبه', + desc: '3 اسکوپ بستنی وانیل ، انبه 100 گرم، موز خورد شده ', + price: 140000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیرموز', + desc: 'شیر پرچرب ، بستنی وانیل ، موز تازه ، بدون هیچگونه افزودنی ', + price: 85000, + restaurantSlug: 'donat-factory', + categoryTitle: 'ویتامینه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آب پرتقال', + desc: 'آب پرتقال طبیعی ', + price: 80000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آبمیوه طبیعی', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731760921692.png"], +}, +{ + title: 'آب طالبی', + desc: 'بلند شده آب طالبی طبیعی و 1 اسکوپ بستنی طالبی ', + price: 75000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آبمیوه طبیعی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیموناد', + desc: '', + price: 0, + restaurantSlug: 'donat-factory', + categoryTitle: 'آبمیوه طبیعی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: '', + price: 0, + restaurantSlug: 'donat-factory', + categoryTitle: 'آبمیوه طبیعی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نوتلا فست', + desc: 'یک عدد دونات شکلات ، نوتلا تیوپی 1 عدد', + price: 0, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180737310.png"], +}, +{ + title: 'تیرامیسو', + desc: 'یک عدد دونات شیری همراه با بیسکویت لیدی فینگر و پودر قهوه فوری ', + price: 85000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180706730.png"], +}, +{ + title: 'نوتلا شیشه ای', + desc: 'یک عدد دونات شکلات ، کورن فلکس شکلاتی ، 1 عدد دونات نوتلا شیشه 30 گرمی', + price: 195000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733146270989.png"], +}, +{ + title: 'اسنیکرز', + desc: 'یک عدد دونات شکلات همراه با تکه های شکلات اسنیکرز ، خلال بادام ', + price: 145000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733146241787.png"], +}, +{ + title: 'کیندر', + desc: 'یک عدد دونات شکلات ، 2 عدد کیندر ', + price: 180000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733146295503.png"], +}, +{ + title: 'نوتلا', + desc: 'یک عدد دونات روکش نوتلا ', + price: 99000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733146214104.png"], +}, +{ + title: 'کیت کت', + desc: 'یک عدد دونات شکلات همراه با 2عدد شکلات کیت کت ', + price: 145000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733146319268.png"], +}, +{ + title: 'توییکس', + desc: 'یک عدد دونات شکلات همراه با 1عدد شکلات توییکس', + price: 145000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733146188871.png"], +}, +{ + title: 'ام اند ام', + desc: 'یک عدد دونات شکلات شیری همراه با 10عدد اسمارتیز m&m ، سس شکلات توت فرنگی', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733146348034.png"], +}, +{ + title: 'هوبی', + desc: 'یک عدد دونات شکلات همراه با تکه های شکلات هوبی ', + price: 110000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733146551965.png"], +}, +{ + title: 'اورئو', + desc: 'یک عدد دونات شکلات شیری همراه با بیسکویت اورئو و پودر بیسکویت ', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733146582932.png"], +}, +{ + title: 'وبی', + desc: 'یک عدد دونات شکلات طرح دار ', + price: 100000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات آرت', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180029406.png"], +}, +{ + title: 'اسپیرال', + desc: 'یک عدد دونات شیری طرح دار ', + price: 100000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات آرت', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180052223.png"], +}, +{ + title: 'استریپی', + desc: 'یک عدد دونات شکلات طرح دار ', + price: 100000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات آرت', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180073573.png"], +}, +{ + title: 'زبرا', + desc: 'یک عدد دونات شکلات طرح دار ', + price: 100000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات آرت', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180093424.png"], +}, +{ + title: 'رابی', + desc: 'یک عدد دونات شکلات طرح دار ', + price: 100000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات آرت', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180179189.png"], +}, +{ + title: 'رزتا', + desc: 'یک عدد دونات شکلات طرح دار ', + price: 100000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات آرت', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180161432.png"], +}, +{ + title: 'مینیون', + desc: 'یک عدد دونات موزی طرح دار ', + price: 85000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات فانتزی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731576162224.png"], +}, +{ + title: 'کافی', + desc: 'یک عدد دونات شکلات شیری ، پودر نسکافه ', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180206128.png"], +}, +{ + title: 'دونات شکلات', + desc: 'یک عدد دونات با روکش شکلات شیرین', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180258080.png"], +}, +{ + title: 'دونات توت فرنگی', + desc: 'یک عدد دونات با روکش شکلات توت فرنگی ، 1 عدد توت فرنگی', + price: 96000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180232243.png"], +}, +{ + title: 'دونات دارک', + desc: 'یک عدد دونات شکلات 40% ', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180128527.png"], +}, +{ + title: 'دونات شیری', + desc: 'یک عدد دونات با روکش شکلات شیری ', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178966498.png"], +}, +{ + title: 'دونات شکری', + desc: 'یک عدد دونات ساده همراه با شکر ', + price: 75000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179002531.png"], +}, +{ + title: 'دونات نارگیل', + desc: 'یک عدد دونات شکلات شیری همراه با پودر نارگیل و شکلات اسپارک ', + price: 96000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179035398.png"], +}, +{ + title: 'دونات کارامل', + desc: 'یک عدد دونات ساده همراه با کارامل و شکلات تکه شده نانی ', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179058776.png"], +}, +{ + title: 'دونات دارچین', + desc: 'یک عدد دونات ساده همراه با دارچین ', + price: 75000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179092163.png"], +}, +{ + title: 'برلینر نوتلا', + desc: 'یک عدد دونات برش خورده ، شکلات نوتلا ', + price: 105000, + restaurantSlug: 'donat-factory', + categoryTitle: 'برلینر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کره بادام زمینی عسل', + desc: 'یک عدد دونات برش خورده ، کره بادام زمینی ، عسل ', + price: 125000, + restaurantSlug: 'donat-factory', + categoryTitle: 'برلینر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733143433807.png"], +}, +{ + title: 'کرم شیر', + desc: 'یک عدد دونات برش خورده ، کرم شیر ساده ', + price: 105000, + restaurantSlug: 'donat-factory', + categoryTitle: 'برلینر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733145942477.png"], +}, +{ + title: 'برلینر دارک', + desc: 'یک عدد دونات برش خورده ، شکلات دارک 40%', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'برلینر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رست نات برجی', + desc: 'دو عدد دونات رست شده ، موز ، توت فرنگی ، شکلات نوتلا، کرم شیر ، خامه ', + price: 295000, + restaurantSlug: 'donat-factory', + categoryTitle: 'رست نات', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731756831421.png"], +}, +{ + title: 'رست نات توت فرنگی', + desc: 'یک عدد دونات رست شده ، توت فرنگی ، بستنی توت فرنگی ،خامه ،شکلات شیرین ', + price: 145000, + restaurantSlug: 'donat-factory', + categoryTitle: 'رست نات', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179129124.png"], +}, +{ + title: 'رست نات چوبی ', + desc: 'یک عدد دونات رست شده ، شکلات به دلخواه ', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'رست نات', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179150342.png"], +}, +{ + title: 'رست نات کارامل', + desc: 'یک عدد دونات رست شده ، کارامل ، خلال بادام ', + price: 99000, + restaurantSlug: 'donat-factory', + categoryTitle: 'رست نات', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179172451.png"], +}, +{ + title: 'رست نات موز نوتلا', + desc: 'یک عدد دونات رست شده ، موز ، شکلات نوتلا', + price: 140000, + restaurantSlug: 'donat-factory', + categoryTitle: 'رست نات', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179238571.png"], +}, +{ + title: ' رست نات فروتی نوتلا', + desc: 'یک عدد دونات رست شده ، موز ، توت فرنگی ، شکلات نوتلا،خلال بادام ', + price: 140000, + restaurantSlug: 'donat-factory', + categoryTitle: 'رست نات', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179754391.png"], +}, +{ + title: 'کیک', + desc: 'یک عدد دونات شکلات همراه با تکه های کیک شکلاتی ', + price: 105000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179332686.png"], +}, +{ + title: 'پیگمنت', + desc: 'یک عدد دونات شکلاتی همراه با ترافل', + price: 97000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179444761.png"], +}, +{ + title: 'اسمارتین', + desc: 'یک عدد دونات با روکش شکلات موز همراه با اسمارتیز', + price: 99000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179690846.png"], +}, +{ + title: 'گلوبال', + desc: '', + price: 90000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179479179.png"], +}, +{ + title: 'لاولی', + desc: '', + price: 105000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179728101.png"], +}, +{ + title: 'پیلو', + desc: 'یک عدد دونات شکلات ساده همراه با کورن فلکس بالشتی ', + price: 105000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178577704.png"], +}, +{ + title: 'دونات پسته', + desc: 'یک عدد دونات با روکش شکلات شیری همراه با پودر پسته ', + price: 110000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات ناتس', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178624247.png"], +}, +{ + title: 'دونات کنجد', + desc: 'یک عدد دونات شکلات ساده همراه با کنجد ', + price: 90000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات ناتس', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178650347.png"], +}, +{ + title: 'میکس ناتس', + desc: 'یک عدد دونات شکلاتی همراه با مغزیجات', + price: 145000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات ناتس', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178679557.png"], +}, +{ + title: 'بادام هندی', + desc: 'یک عدد دونات شکلات ، بادام هندی ', + price: 115000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات ناتس', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178707024.png"], +}, +{ + title: 'فندق', + desc: 'یک عدد دونات شکلات ، فندوق تکه شده', + price: 145000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات ناتس', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178735904.png"], +}, +{ + title: 'گردو', + desc: 'یک عدد دونات شکلا ساده همراه با گردو ', + price: 135000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات ناتس', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178755505.png"], +}, +{ + title: 'بادام', + desc: 'یک عدد دونات شکلات ساده همراه با خلال بادام ', + price: 90000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات ناتس', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178778940.png"], +}, +{ + title: 'لوتوس', + desc: 'یک عدد دونات برش خورده ، شکلات شیری ، بیسکویت لوتوس خورد شده و کامل ', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات لقمه ای ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوتونی', + desc: 'یک‌ عدد دونات برش خورده ۸ تکه همراه با خامه و سس شکلات', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات لقمه ای ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178810557.png"], +}, +{ + title: 'شوکوفال', + desc: 'یک عدد دونات برش خورده 8 تکه ، شات شکلات شیرین ، شات خامه ، شات ژله ، شات اسمارتیز', + price: 150000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات لقمه ای ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فروتی نوتلا', + desc: 'یک عدد دونات برش خورده 8 تکه ، موز ، توت فرنگی ، شکلات نوتلا ', + price: 100000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات لقمه ای ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178833313.png"], +}, +{ + title: 'کارامل', + desc: 'یک عدد دونات برش خورده ، کارامل ، خلال بادام ', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات لقمه ای ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شکلات پسته', + desc: 'یک عدد دونات برش خورده ،شکلات شیرین، پودر پسته ', + price: 110000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات لقمه ای', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733211567462.png"], +}, +{ + title: 'کارامل فندق', + desc: 'یک عدد دونات برش خورده ، کارامل ، فندوق آسیاب شده ', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات لقمه ای', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179996739.png"], +}, +{ + title: 'تگرال', + desc: 'یک عدد دونات برش خورده ، شکلات شیری ، کیک شکلاتی پودر شده', + price: 85000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات لقمه ای', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فروت', + desc: 'یک عدد دونات برش خورده ، موز ، توت فرنگی ، شکلات شیرین', + price: 110000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات لقمه ای', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733179971176.png"], +}, +{ + title: 'پیتزا استیک', + desc: 'فیلۀ گوسالۀ گریل شده', + price: 350000, + restaurantSlug: 'narsis', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731411277692.png"], +}, +{ + title: 'پیتزا مخصوص', + desc: '', + price: 270000, + restaurantSlug: 'narsis', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731411636704.png"], +}, +{ + title: 'پیتزا مرغ', + desc: '', + price: 290000, + restaurantSlug: 'narsis', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731411735773.png"], +}, +{ + title: 'پیتزا تاکو', + desc: '', + price: 340000, + restaurantSlug: 'narsis', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731411826143.png"], +}, +{ + title: 'پیتزا سبزیجات', + desc: '', + price: 240000, + restaurantSlug: 'narsis', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731411906820.png"], +}, +{ + title: 'پیتزا پپرونی', + desc: '', + price: 290000, + restaurantSlug: 'narsis', + categoryTitle: 'پیتزا آمریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731411990084.png"], +}, +{ + title: 'کلاسیک برگر', + desc: '', + price: 295000, + restaurantSlug: 'narsis', + categoryTitle: 'ﺑﺮگرﻫﺎ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731412092522.png"], +}, +{ + title: 'قارچ برگر', + desc: '', + price: 330000, + restaurantSlug: 'narsis', + categoryTitle: 'ﺑﺮگرﻫﺎ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731412145634.png"], +}, +{ + title: 'دوبل برگر', + desc: '', + price: 435000, + restaurantSlug: 'narsis', + categoryTitle: 'ﺑﺮگرﻫﺎ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731412222935.png"], +}, +{ + title: 'چیزبرگر', + desc: '', + price: 310000, + restaurantSlug: 'narsis', + categoryTitle: 'ﺑﺮگرﻫﺎ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731412297126.png"], +}, +{ + title: 'رویال برگر', + desc: '', + price: 360000, + restaurantSlug: 'narsis', + categoryTitle: 'ﺑﺮگرﻫﺎ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731412378414.png"], +}, +{ + title: 'چیکن برگر', + desc: '', + price: 235000, + restaurantSlug: 'narsis', + categoryTitle: 'ﺑﺮگرﻫﺎ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731412496429.png"], +}, +{ + title: 'چیکن برگر با قارچ و پنیر', + desc: '', + price: 265000, + restaurantSlug: 'narsis', + categoryTitle: 'ﺑﺮگرﻫﺎ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731412559712.png"], +}, +{ + title: 'پاستا پنه آلفردو', + desc: '', + price: 290000, + restaurantSlug: 'narsis', + categoryTitle: 'پاستاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731412728968.png"], +}, +{ + title: 'پاستا آرابیتا', + desc: '', + price: 247000, + restaurantSlug: 'narsis', + categoryTitle: 'پاستاها', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731412794164.png"], +}, +{ + title: 'سیب زمینی ساده', + desc: '', + price: 135000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732981239945.png"], +}, +{ + title: 'سیب با قارچ و پنیر', + desc: '', + price: 250000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413339741.png"], +}, +{ + title: 'سیب زمینی ویژه', + desc: '', + price: 280000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413407048.png"], +}, +{ + title: 'سیب زمینی با سس الفردو', + desc: '', + price: 210000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413473719.png"], +}, +{ + title: 'سیب زمینی با سس چدار', + desc: '', + price: 160000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413532205.png"], +}, +{ + title: 'سالاد سزار', + desc: '', + price: 290000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732981174286.png"], +}, +{ + title: 'سالاد کلم ', + desc: '', + price: 55000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413627560.png"], +}, +{ + title: 'سالاد شف', + desc: '', + price: 340000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732980912025.png"], +}, +{ + title: 'سالاد فصل', + desc: '', + price: 38500, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413776749.png"], +}, +{ + title: 'ماست موسیر', + desc: '', + price: 20000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413843112.png"], +}, +{ + title: 'زیتون شور', + desc: '', + price: 30000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413888957.png"], +}, +{ + title: 'زیتون پرورده', + desc: '', + price: 35000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413923790.png"], +}, +{ + title: 'ژله بستنی ۴نفره', + desc: '', + price: 65000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413957375.png"], +}, +{ + title: 'ژله بستنی تک نفره', + desc: '', + price: 44000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731413996457.png"], +}, +{ + title: 'کوکا قوطی', + desc: '', + price: 42800, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414193558.png"], +}, +{ + title: 'فانتا قوطی', + desc: '', + price: 42800, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414213873.png"], +}, +{ + title: 'اسپرایت قوطی', + desc: '', + price: 42800, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414243110.png"], +}, +{ + title: 'زیرو قوطی', + desc: '', + price: 42800, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414267628.png"], +}, +{ + title: 'کوکا بطری', + desc: '', + price: 22100, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414291175.png"], +}, +{ + title: 'فانتا بطری', + desc: '', + price: 22100, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414311705.png"], +}, +{ + title: 'اسپرایت بطری', + desc: '', + price: 22100, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414334741.png"], +}, +{ + title: 'دلستر هلو قوطی', + desc: '', + price: 31300, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414358764.png"], +}, +{ + title: 'دلستر قوطی لیمو', + desc: '', + price: 34400, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414383446.png"], +}, +{ + title: 'دلستر قوطی استوایی', + desc: '', + price: 34400, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414416539.png"], +}, +{ + title: 'دلستر قوطی اناناس', + desc: '', + price: 24000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414437905.png"], +}, +{ + title: 'لیموناد شیشه ای', + desc: '', + price: 34000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414461946.png"], +}, +{ + title: 'دوغ سنتی', + desc: '', + price: 27000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414507415.png"], +}, +{ + title: 'اب معدنی کوچک', + desc: '', + price: 10000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414527513.png"], +}, +{ + title: 'اب معدنی بزرگ', + desc: '', + price: 16000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی سرد آماده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731414548792.png"], +}, +{ + title: 'چای ماسالا ', + desc: '', + price: 95000, + restaurantSlug: 'zhivan', + categoryTitle: 'چای و دمنوش ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731426631526.png"], +}, +{ + title: 'آیس چاکلت ', + desc: 'شیر ، پودر شکلات ، یخ ، سیروپ نعنا ', + price: 130000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731756734489.png"], +}, +{ + title: 'آیس لته فندق ', + desc: 'شیر،اسپرسو 50/50 ، یخ ، سیروپ فندق ', + price: 145000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731760524883.png"], +}, +{ + title: 'رست نات نوتلا', + desc: 'یک عدد دونات رست شده ، موز ، نوتلا ، پودر فندق', + price: 150000, + restaurantSlug: 'donat-factory', + categoryTitle: 'رست نات', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178896471.png"], +}, +{ + title: 'دونات لوتوس', + desc: 'یک عدد دونات شیری ، بیسکویت لوتوس', + price: 105000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731757253386.png"], +}, +{ + title: 'دونات دبل چاکلت', + desc: 'یک عدد دونات تمام شکلات', + price: 120000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733180317775.png"], +}, +{ + title: 'دونات موز', + desc: 'یک عدد دونات با روکش شکلات موزی', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731757165838.png"], +}, +{ + title: 'بیسکو بستنی', + desc: 'بستنی وانیل ، پودر بیسکویت لوتوس ، خامه', + price: 150000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731785589735.png"], +}, +{ + title: 'دونات موکا', + desc: 'یک عدد دونات دارک ، پودر قهوه فوری ', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شوکودونات', + desc: 'یک عدد دونات شکلات ، شوکورول', + price: 96000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات جنرال', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731756902912.png"], +}, +{ + title: 'موکا', + desc: 'شیرپرچرب ، سیروپ شکلات ، اسپرسو 50/50', + price: 125000, + restaurantSlug: 'donat-factory', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو عربیکا', + desc: 'یک شات اسپرسو ۱۰۰ درصد عربیکا ', + price: 80000, + restaurantSlug: 'donat-factory', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733178537171.png"], +}, +{ + title: 'شیک لوتوس', + desc: '3اسکوپ بستنی وانیل ، شیر پرچرب ، کرم لوتوس ', + price: 180000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731757109397.png"], +}, +{ + title: 'لقمه کره بادام زمینی همراه با آیس کافی ', + desc: '۲ جفت ، نان جو‌، کره بادام زمینی مرغوب ،موز، آیس کافی (دلخواه)', + price: 245000, + restaurantSlug: 'donat-factory', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731759308900.png"], +}, +{ + title: 'لقمه نوتلا همراه با آیس کافی', + desc: '۲ جفت ، نان جو‌، نوتلا ،موز، آیس کافی (دلخواه)', + price: 245000, + restaurantSlug: 'donat-factory', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731759372412.png"], +}, +{ + title: 'برلینر خامه', + desc: 'یک عدد دونات برش خورده ، خامه قنادی', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'برلینر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک‌ موز کارامل', + desc: '۳ اسکوپ بستنی وانیل ، موز تازه ، کارامل', + price: 175000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برلینر بستنی', + desc: 'دونات برش خورده ، بستنی شکلاتی ، سس شکلات', + price: 120000, + restaurantSlug: 'donat-factory', + categoryTitle: 'برلینر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'برلینر بستنی لوتوس', + desc: 'دونات برش خورده ، بستنی لوتوس ، بیسکویت لوتوس', + price: 125000, + restaurantSlug: 'donat-factory', + categoryTitle: 'برلینر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کندی دونات', + desc: 'یک عدد دونات شکلات ، آبنبات چوبی ', + price: 110000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات فانتزی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس آمریکانو', + desc: '', + price: 88000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731839915863.png"], +}, +{ + title: 'آیس لته', + desc: '', + price: 120000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731839980535.png"], +}, +{ + title: 'آیس موکا', + desc: '', + price: 130000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731840146230.png"], +}, +{ + title: 'آیس کارامل ماکیاتو', + desc: '', + price: 130000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731840047857.png"], +}, +{ + title: 'بابل آیس لته کاراملی', + desc: '', + price: 134000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد بر پایه قهوه', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731840082007.png"], +}, +{ + title: 'کافه گلاسه', + desc: '', + price: 120000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731840114012.png"], +}, +{ + title: 'آیس ماچا لته', + desc: '', + price: 140000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731840179642.png"], +}, +{ + title: 'آفوگاتو', + desc: '', + price: 110000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731840216807.png"], +}, +{ + title: 'اسپرسو', + desc: '', + price: 88000, + restaurantSlug: 'narsis', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731842514051.png"], +}, +{ + title: 'آمریکانو', + desc: '', + price: 78000, + restaurantSlug: 'narsis', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731842589131.png"], +}, +{ + title: 'کاپوچینو', + desc: '', + price: 82000, + restaurantSlug: 'narsis', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731842666471.png"], +}, +{ + title: 'لته', + desc: '', + price: 84000, + restaurantSlug: 'narsis', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731842722244.png"], +}, +{ + title: 'موکا', + desc: '', + price: 110000, + restaurantSlug: 'narsis', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731842854030.png"], +}, +{ + title: 'کارامل ماکیاتو', + desc: '', + price: 119000, + restaurantSlug: 'narsis', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731843233734.png"], +}, +{ + title: 'قهوه دمی', + desc: '', + price: 110000, + restaurantSlug: 'narsis', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731843283042.png"], +}, +{ + title: 'نسکافه', + desc: '', + price: 60000, + restaurantSlug: 'narsis', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731843554862.png"], +}, +{ + title: 'سیروپ اضافه(نارگیل- وانیل- آیریش- فندق- کارامل- شکلات)', + desc: '', + price: 15000, + restaurantSlug: 'narsis', + categoryTitle: 'افزودنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731843901508.png"], +}, +{ + title: 'شیر غیر لبنی( بادام- فندق- سویا- گاومیش- بدون لاکتوز)', + desc: '', + price: 15000, + restaurantSlug: 'narsis', + categoryTitle: 'افزودنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844009732.png"], +}, +{ + title: 'قهوه ۱۰۰ عربیکا', + desc: '', + price: 88000, + restaurantSlug: 'narsis', + categoryTitle: 'قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844095978.png"], +}, +{ + title: 'قهوه بدون کافئین', + desc: '', + price: 110000, + restaurantSlug: 'narsis', + categoryTitle: 'قهوه', + isActive: false, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844139530.png"], +}, +{ + title: 'قوری چای تی بگ دو نفره+ نبات', + desc: '', + price: 35000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844409966.png"], +}, +{ + title: 'قوری چای تی بگ دو نفره + قند', + desc: '', + price: 25000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844447354.png"], +}, +{ + title: 'قوری چای دمی تک نفره ', + desc: '', + price: 45000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844493317.png"], +}, +{ + title: 'قوری چای دمی دو نفره', + desc: '', + price: 70000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844524655.png"], +}, +{ + title: 'چای سبز تک نفره', + desc: '', + price: 50000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844572185.png"], +}, +{ + title: 'چای سبز دو نفره', + desc: '', + price: 75000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844608662.png"], +}, +{ + title: 'چای کرک', + desc: '', + price: 59000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844642144.png"], +}, +{ + title: 'چای ماسالا', + desc: '', + price: 57000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844677728.png"], +}, +{ + title: 'دمنوش میوه های ترش تک نفره', + desc: '', + price: 60000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844716456.png"], +}, +{ + title: 'دمنوش میوه های ترش دونفره ', + desc: '', + price: 90000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844756865.png"], +}, +{ + title: 'دمنوش میوه های شیرین تک نفره ', + desc: '', + price: 55000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844791962.png"], +}, +{ + title: 'دمنوش میوه های شیرین دونفره', + desc: '', + price: 85000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844840101.png"], +}, +{ + title: 'هات چاکلت ', + desc: '', + price: 70000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844875467.png"], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 72000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731844907633.png"], +}, +{ + title: 'موهیتو', + desc: '', + price: 95000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731845522341.png"], +}, +{ + title: 'لیموناد ', + desc: '', + price: 85000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731845623466.png"], +}, +{ + title: 'شربت بهار نارنج ', + desc: '', + price: 120000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731845654713.png"], +}, +{ + title: 'ایس چاکلت', + desc: '', + price: 95000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731845691173.png"], +}, +{ + title: 'اب هویج بستنی', + desc: '', + price: 70000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های طبیعی با بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731845826747.png"], +}, +{ + title: 'طالبی بستنی', + desc: '', + price: 120000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های طبیعی با بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731845859178.png"], +}, +{ + title: 'انبه بستنی', + desc: '', + price: 150000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های طبیعی با بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731845890478.png"], +}, +{ + title: 'توت بستنی', + desc: '', + price: 130000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های طبیعی با بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731845921498.png"], +}, +{ + title: 'شاتوت بستنی', + desc: '', + price: 130000, + restaurantSlug: 'narsis', + categoryTitle: 'نوشیدنی های طبیعی با بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731845967183.png"], +}, +{ + title: 'شیر موز', + desc: '', + price: 10000, + restaurantSlug: 'narsis', + categoryTitle: 'ﻧﻮﺷﯿﺪﻧﯽ ﻫﺎ ﺑﺮ ﭘﺎﯾﻪ ﺷﯿﺮ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731846168393.png"], +}, +{ + title: 'شیر انبه', + desc: '', + price: 140000, + restaurantSlug: 'narsis', + categoryTitle: 'ﻧﻮﺷﯿﺪﻧﯽ ﻫﺎ ﺑﺮ ﭘﺎﯾﻪ ﺷﯿﺮ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731846303557.png"], +}, +{ + title: 'شیر پسته', + desc: '', + price: 140000, + restaurantSlug: 'narsis', + categoryTitle: 'ﻧﻮﺷﯿﺪﻧﯽ ﻫﺎ ﺑﺮ ﭘﺎﯾﻪ ﺷﯿﺮ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731846384825.png"], +}, +{ + title: 'شیر موز انبه', + desc: '', + price: 160000, + restaurantSlug: 'narsis', + categoryTitle: 'ﻧﻮﺷﯿﺪﻧﯽ ﻫﺎ ﺑﺮ ﭘﺎﯾﻪ ﺷﯿﺮ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731846470584.png"], +}, +{ + title: 'شیر موز خرما', + desc: '', + price: 125000, + restaurantSlug: 'narsis', + categoryTitle: 'ﻧﻮﺷﯿﺪﻧﯽ ﻫﺎ ﺑﺮ ﭘﺎﯾﻪ ﺷﯿﺮ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731846511022.png"], +}, +{ + title: 'شیر موز شکلات ', + desc: '', + price: 120000, + restaurantSlug: 'narsis', + categoryTitle: 'ﻧﻮﺷﯿﺪﻧﯽ ﻫﺎ ﺑﺮ ﭘﺎﯾﻪ ﺷﯿﺮ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731846579935.png"], +}, +{ + title: 'شیر موز قهوه ', + desc: '', + price: 165000, + restaurantSlug: 'narsis', + categoryTitle: 'ﻧﻮﺷﯿﺪﻧﯽ ﻫﺎ ﺑﺮ ﭘﺎﯾﻪ ﺷﯿﺮ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1731846648318.png"], +}, +{ + title: 'خوراک جوجه', + desc: '', + price: 250000, + restaurantSlug: 'kaj.foodhall', + categoryTitle: 'غذای ایرانی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آب هویج', + desc: '', + price: 40000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ﻃﺒﯿﻌﯽ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732089438973.png"], +}, +{ + title: 'اب طالبی', + desc: '', + price: 50000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ﻃﺒﯿﻌﯽ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732089491149.png"], +}, +{ + title: 'اب هندوانه ', + desc: '', + price: 44000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ﻃﺒﯿﻌﯽ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732089545598.png"], +}, +{ + title: 'اب پرتقال', + desc: '', + price: 90000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ﻃﺒﯿﻌﯽ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732090599736.png"], +}, +{ + title: 'اب انار', + desc: '', + price: 100000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ﻃﺒﯿﻌﯽ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732090646560.png"], +}, +{ + title: 'اب اناناس ', + desc: '', + price: 95000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ﻃﺒﯿﻌﯽ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732090716302.png"], +}, +{ + title: 'اب توت فرنگی', + desc: '', + price: 90000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ﻃﺒﯿﻌﯽ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732090768365.png"], +}, +{ + title: 'اب شاتوت ', + desc: '', + price: 10000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ﻃﺒﯿﻌﯽ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732091322530.png"], +}, +{ + title: 'اب سیب', + desc: '', + price: 88000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ﻃﺒﯿﻌﯽ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732091384413.png"], +}, +{ + title: 'انبه اناناس', + desc: '', + price: 135000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ترکیبی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732091444892.png"], +}, +{ + title: 'موز انبه', + desc: '', + price: 120000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ترکیبی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732091854953.png"], +}, +{ + title: 'پرتقال انار', + desc: '', + price: 90000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ترکیبی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732091930952.png"], +}, +{ + title: 'توت شاتوت ', + desc: '', + price: 85000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ترکیبی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732091967969.png"], +}, +{ + title: 'اب انبه ', + desc: '', + price: 110000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ترکیبی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732092020362.png"], +}, +{ + title: 'پرتقال انبه', + desc: '', + price: 130000, + restaurantSlug: 'narsis', + categoryTitle: 'آﺑﻤﯿﻮه ﻫﺎی ترکیبی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732092066831.png"], +}, +{ + title: 'شیک نوتلا', + desc: '', + price: 190000, + restaurantSlug: 'narsis', + categoryTitle: 'شیک ﻫﺎ و آﯾﺲ پک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732092152836.png"], +}, +{ + title: 'شیک توت فرنگی', + desc: '', + price: 170000, + restaurantSlug: 'narsis', + categoryTitle: 'شیک ﻫﺎ و آﯾﺲ پک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732092233333.png"], +}, +{ + title: 'شیک لوتوس ', + desc: '', + price: 185000, + restaurantSlug: 'narsis', + categoryTitle: 'شیک ﻫﺎ و آﯾﺲ پک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732092544878.png"], +}, +{ + title: 'شیک اورئو', + desc: '', + price: 170000, + restaurantSlug: 'narsis', + categoryTitle: 'شیک ﻫﺎ و آﯾﺲ پک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732092580168.png"], +}, +{ + title: 'شیک انبه', + desc: '', + price: 170000, + restaurantSlug: 'narsis', + categoryTitle: 'شیک ﻫﺎ و آﯾﺲ پک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732092629927.png"], +}, +{ + title: 'ایس پک ', + desc: '', + price: 170000, + restaurantSlug: 'narsis', + categoryTitle: 'شیک ﻫﺎ و آﯾﺲ پک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732092722313.png"], +}, +{ + title: 'کیک شکلات', + desc: '', + price: 10000, + restaurantSlug: 'narsis', + categoryTitle: 'کیک ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732980656070.png"], +}, +{ + title: 'چیز کیک شکلاتی دو نفره', + desc: '', + price: 95000, + restaurantSlug: 'narsis', + categoryTitle: 'کیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732980434978.png"], +}, +{ + title: 'چیز کیک لوتوس دو نفره', + desc: '', + price: 95000, + restaurantSlug: 'narsis', + categoryTitle: 'کیک ها ', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732979733603.png"], +}, +{ + title: 'خوراک چنجه ', + desc: '', + price: 465000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732979580830.png"], +}, +{ + title: 'خوراک برگ', + desc: '', + price: 445000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732094118572.png"], +}, +{ + title: 'خوراک سلطانی', + desc: '', + price: 550000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732094158201.png"], +}, +{ + title: 'خوراک بختیاری', + desc: '', + price: 345000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732094195105.png"], +}, +{ + title: 'خوراک کباب ترش', + desc: '', + price: 480000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732094233214.png"], +}, +{ + title: 'خوراک کباب نگینی', + desc: '', + price: 330000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732974433427.png"], +}, +{ + title: 'خوراک کباب لبنانی', + desc: '', + price: 250000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732974297311.png"], +}, +{ + title: 'خوراک کوبیده', + desc: '', + price: 225000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732974212826.png"], +}, +{ + title: 'خوراک کباب تک سیخ', + desc: '', + price: 120000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732094438499.png"], +}, +{ + title: 'خوراک کباب سه سیخ', + desc: '', + price: 335000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732362637401.png"], +}, +{ + title: 'خوراک میکس ساده', + desc: '', + price: 270000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732094523215.png"], +}, +{ + title: 'خوراک میکس مخصوص', + desc: '', + price: 310000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732094560339.png"], +}, +{ + title: 'خوراک شیشلیک', + desc: '', + price: 825000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732094603053.png"], +}, +{ + title: 'خوراک جوجه', + desc: '', + price: 205000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732726476100.png"], +}, +{ + title: 'خوراک جوجه ترش', + desc: '', + price: 225000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732726584156.png"], +}, +{ + title: 'خوراک جوجه حلزونی', + desc: '', + price: 235000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732094690877.png"], +}, +{ + title: 'خوراک جوجه نارسیس', + desc: '', + price: 245000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732727015511.png"], +}, +{ + title: 'خوراک جوجه نگینی', + desc: '', + price: 275000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732727091606.png"], +}, +{ + title: 'خوراک ماهی کباب', + desc: '', + price: 285000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732094792449.png"], +}, +{ + title: 'خوراک کباب شالتو', + desc: '', + price: 325000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732973739516.png"], +}, +{ + title: 'خوراک کباب مصری', + desc: '', + price: 555000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732973812554.png"], +}, +{ + title: 'کتف و بال زعفرانی', + desc: '', + price: 200000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732973881136.png"], +}, +{ + title: 'خوراک جوجه با استخوان', + desc: '', + price: 310000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732726005132.png"], +}, +{ + title: 'خوراک ماهیچه', + desc: '', + price: 730000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732363269121.png"], +}, +{ + title: 'خوراک گردن', + desc: '', + price: 770000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732099406737.png"], +}, +{ + title: 'خوراک گوشت', + desc: '', + price: 600000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732099369819.png"], +}, +{ + title: 'خوراک مرغ', + desc: '', + price: 175000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732363192936.png"], +}, +{ + title: 'جوجه چینی ۲۰۰گرم فیله', + desc: '', + price: 255000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732362915343.png"], +}, +{ + title: 'شیک موز‌ نوتلا', + desc: 'بستنی وانیل ، شیر پرچرب ، موز ، نوتلا ', + price: 180000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماهی سوخاری', + desc: '', + price: 258000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: false, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732099328269.png"], +}, +{ + title: 'خوراک اکبرجوجه', + desc: '', + price: 295000, + restaurantSlug: 'narsis', + categoryTitle: 'خوراک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732362466605.png"], +}, +{ + title: 'زرشک پلو', + desc: '', + price: 110000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732099137172.png"], +}, +{ + title: 'برنج ساده ایرانی', + desc: '', + price: 100000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732099192345.png"], +}, +{ + title: 'باقالی پلو', + desc: '', + price: 120000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732099243481.png"], +}, +{ + title: 'سوپ', + desc: '', + price: 80000, + restaurantSlug: 'narsis', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732362358247.png"], +}, +{ + title: 'شوید پلو با ماهی', + desc: '', + price: 395000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100319064.png"], +}, +{ + title: 'باقالی پلو با مرغ', + desc: '', + price: 295000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100297076.png"], +}, +{ + title: 'زرشک پلو با مرغ', + desc: '', + price: 285000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100371100.png"], +}, +{ + title: 'باقالی پلو با ماهیچه', + desc: '', + price: 850000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100418501.png"], +}, +{ + title: 'چلو ماهیچه', + desc: '', + price: 830000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100453301.png"], +}, +{ + title: 'چلو گوشت', + desc: '', + price: 700000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100504110.png"], +}, +{ + title: 'چلو جوجه', + desc: '', + price: 305000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100561534.png"], +}, +{ + title: 'چلو میکس ساده', + desc: '', + price: 370000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100596151.png"], +}, +{ + title: 'چلو کباب', + desc: '', + price: 325000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100637568.png"], +}, +{ + title: 'چلو سلطانی', + desc: '', + price: 650000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100674202.png"], +}, +{ + title: 'چلو برگ', + desc: '', + price: 545000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100709573.png"], +}, +{ + title: 'چلو چنجه', + desc: '', + price: 565000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100746067.png"], +}, +{ + title: 'باقالی پلو با گردن', + desc: '', + price: 890000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732100816942.png"], +}, +{ + title: 'چلو گردن', + desc: '', + price: 870000, + restaurantSlug: 'narsis', + categoryTitle: 'غذاهای چلویی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1732361682177.png"], +}, +{ + title: 'سیب تنوری', + desc: 'سیب تنوری، قارچ، ژامبون اسلایس، پنیر پیتزا، سس مخصوص', + price: 190000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222900831.png"], +}, +{ + title: 'فانتوم', + desc: 'گوشت رست بیف، مرغ طعم دار شده، پنیر گودا، پنیر پیتزا، قارچ، زیتون اسلایس', + price: 490000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیتزا ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733221708079.png"], +}, +{ + title: 'رد موهیتو طبیعی', + desc: '', + price: 100000, + restaurantSlug: 'yummyburger', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733222939222.png"], +}, +{ + title: 'برلینر موز نوتلا', + desc: 'دونات برش خورده ، نوتلا ، موز ، خامه ', + price: 130000, + restaurantSlug: 'donat-factory', + categoryTitle: 'برلینر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733143644676.png"], +}, +{ + title: 'برلینر خامه توت فرنگی', + desc: 'دونات برش خورده ، توت فرنگی تازه ، خامه ، شکلات توت فرنگی', + price: 150000, + restaurantSlug: 'donat-factory', + categoryTitle: 'برلینر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733143785931.png"], +}, +{ + title: 'چیز کیک روز ', + desc: 'یک اسلایس چیز کیک شکلاتی روز ', + price: 80000, + restaurantSlug: 'monikh', + categoryTitle: 'کیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733344545667.png"], +}, +{ + title: 'کیک اسنیکرز روز ', + desc: 'یک اسلایس کیک اسنیکرز روز', + price: 80000, + restaurantSlug: 'monikh', + categoryTitle: 'کیک', + isActive: true, + stock: 0, + stockDefault: 0, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733411402579.png"], +}, +{ + title: 'ساندویج کالباس سرد ', + desc: ' نان ساندویچ، ورق کالباس، برگ کاهو، خیارشور و...', + price: 70000, + restaurantSlug: 'monikh', + categoryTitle: 'ساندویچ سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733423443280.png"], +}, +{ + title: 'آفوگاتو', + desc: 'اسپرسو، یک اسکوپ بستنی ', + price: 50000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733431869244.png"], +}, +{ + title: 'مارتینی', + desc: 'اسپرسو، وانیل، دارچین، یخ', + price: 55000, + restaurantSlug: 'monikh', + categoryTitle: 'بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733433123133.png"], +}, +{ + title: 'پینک چاکلت ', + desc: 'توت فرنگی، شکلات سفید و شیر', + price: 60000, + restaurantSlug: 'monikh', + categoryTitle: 'بدون اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733433539453.png"], +}, +{ + title: 'وایت چاکلت ', + desc: 'شیر، تکه‌های شکلات سفید، وانیل', + price: 60000, + restaurantSlug: 'monikh', + categoryTitle: 'بدون اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733434215353.png"], +}, +{ + title: 'دارک چاکلت ', + desc: 'شیر، شکلات تلخ', + price: 60000, + restaurantSlug: 'monikh', + categoryTitle: 'بدون اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1733434710098.png"], +}, +{ + title: 'وگن پلیت', + desc: 'سبزیجات فصل ساته شده با سس صدف مش پوتیتو ', + price: 188000, + restaurantSlug: 'lanka', + categoryTitle: 'پیش غذاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای زعفران', + desc: '', + price: 90000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیروپ نارگیل', + desc: 'نارگیل فندوق ایریش ', + price: 15000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای کرک', + desc: '', + price: 95000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته با شیر گیاهی', + desc: 'قهوه-شیر گیاهی فندوق یا بادام', + price: 95000, + restaurantSlug: 'LIAN', + categoryTitle: 'اسپرسو با شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای هل', + desc: '', + price: 90000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماچالاته', + desc: 'ماچا دم شده-شیر', + price: 70000, + restaurantSlug: 'LIAN', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای کرک', + desc: 'هل- زعفران-گل محمدی-دارچین-شیر', + price: 50000, + restaurantSlug: 'LIAN', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لمون گرس', + desc: 'امیزه ای از علف لیمو نعنا زنجبیل', + price: 75000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش سرماخوردگی ', + desc: '', + price: 75000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ارام بخش', + desc: '', + price: 75000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دیاموند', + desc: 'به خشک شده , برگ گل محمدی , زعفران', + price: 80000, + restaurantSlug: 'lanka', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بری سودا', + desc: '', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بلو سودا', + desc: '', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سان فروت', + desc: '', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک شکلاتی ', + desc: '', + price: 105000, + restaurantSlug: 'lanka', + categoryTitle: 'کیک و دسر ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک روز', + desc: '', + price: 0, + restaurantSlug: 'lanka', + categoryTitle: 'کیک و دسر ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد والدروف', + desc: 'کاهو رسمی , سینه مرغ پخته شدهبه همراه سیب و کرفس, گوجه گیلاسی , گردو کاراملایز , انگور , پارمزان سس ماست و ترخون', + price: 280000, + restaurantSlug: 'lanka', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اکسترا فیلت', + desc: '120 گرم فیله گوساله', + price: 150000, + restaurantSlug: 'lanka', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اکسترا فیله', + desc: 'یک عدد فیله مرغ سوخاری شده', + price: 70000, + restaurantSlug: 'lanka', + categoryTitle: 'سوخاری ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سس اووکادو هات', + desc: '', + price: 30000, + restaurantSlug: 'lanka', + categoryTitle: 'شات سس ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سس انتراکوت', + desc: '', + price: 35000, + restaurantSlug: 'lanka', + categoryTitle: 'شات سس ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سس سزار', + desc: '', + price: 35000, + restaurantSlug: 'lanka', + categoryTitle: 'شات سس ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پن چاکلت', + desc: '', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کروسان', + desc: '', + price: 75000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیوب کروسان', + desc: '', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی نوتلا', + desc: '', + price: 70000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1736521695625.png"], +}, +{ + title: 'کوکی شکلات فندق', + desc: '', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تیرامیسو لیدی فینگر', + desc: '', + price: 75000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز کیک نیویورکی', + desc: '', + price: 55000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز کیک نوتلا', + desc: '', + price: 75000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز کیک شکلاتی', + desc: '', + price: 65000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک شکلات', + desc: '', + price: 80000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رول دارچین', + desc: '', + price: 55000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب دارچین گردو', + desc: '', + price: 70000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی کره گردو', + desc: '', + price: 17000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی شکلات', + desc: '', + price: 17000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی رد ولوت', + desc: '', + price: 19000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لوف شکلات فندق', + desc: '', + price: 70000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لوف اسنیکرز', + desc: '', + price: 65000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی جاینت پسته', + desc: '', + price: 60000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موچی', + desc: '', + price: 110000, + restaurantSlug: 'LIAN', + categoryTitle: 'کیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکاچیلو', + desc: '', + price: 75000, + restaurantSlug: 'monikh', + categoryTitle: 'شیک و اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیلوشکلات', + desc: '', + price: 75000, + restaurantSlug: 'monikh', + categoryTitle: 'شیک و اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیلوماسالا', + desc: '', + price: 70000, + restaurantSlug: 'monikh', + categoryTitle: 'شیک و اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک بادام زمینی', + desc: '', + price: 80000, + restaurantSlug: 'monikh', + categoryTitle: 'شیک و اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس استوایی', + desc: '', + price: 80000, + restaurantSlug: 'monikh', + categoryTitle: 'شیک و اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس اوشن', + desc: '', + price: 70000, + restaurantSlug: 'monikh', + categoryTitle: 'شیک و اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس بری', + desc: '', + price: 70000, + restaurantSlug: 'monikh', + categoryTitle: 'شیک و اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد کرن بری بامرغ', + desc: 'کرن بری /کاهو تازه فصل/میوه های تازه فصل /گردو /پنیر فتا /سس کره بادام زمینی /مرغ گریل شده', + price: 380000, + restaurantSlug: 'zhivan', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1737030471416.png"], +}, +{ + title: 'چای زعفران', + desc: 'چای ایرانی دمی ، زعفران دم شده ', + price: 70000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1737291548706.png"], +}, +{ + title: 'ساندویچ گود بیف new', + desc: 'نان چیاباتا،فیله گوساله،فلفل دلمه ای،گوجه،کاهو،خیارشور،پیاز،پنیردیپ چدار،قارچ،سیب زمینی،سس مخصوص', + price: 515000, + restaurantSlug: 'boote', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1739469717534.png"], +}, +{ + title: 'لازانیا new', + desc: 'خمیر،گوشت چرخ کرده،قارچ،فلفل دلمه ای،پنیر میکس', + price: 399000, + restaurantSlug: 'boote', + categoryTitle: 'غذای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1739469613044.png"], +}, +{ + title: 'ماچا', + desc: 'چایی سبز ژاپنی که یکی از غنی‌ترین منابع آنتی‌اکسیدان به‌شمار می‌آید. ', + price: 75000, + restaurantSlug: 'monikh', + categoryTitle: 'ماچا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماچالاته ', + desc: 'چای ماچا و شیر', + price: 80000, + restaurantSlug: 'monikh', + categoryTitle: 'ماچا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماچالاته سرد', + desc: 'چای ماچا، شیر، یخ', + price: 85000, + restaurantSlug: 'monikh', + categoryTitle: 'ماچا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماچا کاتو', + desc: 'چای ماچا،یه اسکوپ بستنی', + price: 85000, + restaurantSlug: 'monikh', + categoryTitle: 'ماچا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک ماچا', + desc: 'چای ماچا، بستنی شیک شده', + price: 95000, + restaurantSlug: 'monikh', + categoryTitle: 'ماچا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای ماچا', + desc: '', + price: 194000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس آمریکانو ۷۰/۳۰', + desc: '', + price: 160000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741624882952.png"], +}, +{ + title: 'آیس لاته ۷۰/۳۰', + desc: '', + price: 214000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741624761374.png"], +}, +{ + title: 'آیس ماچا لاته', + desc: '', + price: 223000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741624724783.png"], +}, +{ + title: 'فراپاچینو', + desc: '', + price: 280000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741624675083.png"], +}, +{ + title: 'آیس ماچا بری', + desc: '', + price: 243000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکو آیس لاته', + desc: '', + price: 256000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741718046900.png"], +}, +{ + title: 'کوکو آیس ماچا', + desc: '', + price: 255000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741718020809.png"], +}, +{ + title: 'V60 کلمبیا هانی گیشا', + desc: '', + price: 278000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکا دست ساز', + desc: 'سیروپ کوکا، لیمو، سودا', + price: 128000, + restaurantSlug: 'Theory', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیموناد', + desc: 'لیمو، سوئیت اند ساور، سودا', + price: 145000, + restaurantSlug: 'Theory', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: 'لیمو، نعنا، سوئیت اند ساور، سودا', + price: 149000, + restaurantSlug: 'Theory', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سینرجی', + desc: 'پرتقال، زنجبیل، زردچوبه، عسل', + price: 188000, + restaurantSlug: 'Theory', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741624348642.png"], +}, +{ + title: 'یونیتی', + desc: 'اسپرولینا، توت‌فرنگی، نارگیل، هلو', + price: 270000, + restaurantSlug: 'Theory', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741623784133.png"], +}, +{ + title: 'سیید فلو', + desc: 'شیر بادام، تخم کدو، انبه، موز', + price: 240000, + restaurantSlug: 'Theory', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741623681207.png"], +}, +{ + title: 'میدنایت', + desc: 'انجیر، گاناش، شاتوت، شیر', + price: 276000, + restaurantSlug: 'Theory', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741623638099.png"], +}, +{ + title: 'ناتی بری', + desc: 'توت‌فرنگی، شاتوت، میکس بری، شیر بادام', + price: 274000, + restaurantSlug: 'Theory', + categoryTitle: 'اسموتی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741623561027.png"], +}, +{ + title: 'هات چاکلت', + desc: '', + price: 161000, + restaurantSlug: 'Theory', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 167000, + restaurantSlug: 'Theory', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بری چاکلت', + desc: '', + price: 177000, + restaurantSlug: 'Theory', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا اسپایسی', + desc: '', + price: 161000, + restaurantSlug: 'Theory', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفوگاتو', + desc: '', + price: 171000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ بیکن و پیاز کاراملی', + desc: 'بیکن، پیاز کاراملی، پنیر چدار', + price: 493000, + restaurantSlug: 'Theory', + categoryTitle: 'ساندویچ گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741622808905.png"], +}, +{ + title: 'ساندویچ سوسیس و خردل', + desc: 'سوسیس، سس خردل، پیکل پیاز', + price: 483000, + restaurantSlug: 'Theory', + categoryTitle: 'ساندویچ گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741622646582.png"], +}, +{ + title: 'ساندویچ چیکن پارمسان', + desc: 'مرغ، سس پارمسان، چیپس، گوجه مزه‌دار شده', + price: 377000, + restaurantSlug: 'Theory', + categoryTitle: 'ساندویچ گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741622576851.png"], +}, +{ + title: 'ساندویچ سبزیجات', + desc: 'بادمجان گریل، پاپریکا کبابی، اسفناج، کدو گریل، قارچ مزه‌دار شده، سس پنیر، گلیز بالزامیک', + price: 293000, + restaurantSlug: 'Theory', + categoryTitle: 'ساندویچ گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741622410069.png"], +}, +{ + title: 'ساندویچ چیکن ملانزانا', + desc: 'مرغ، بادمجان گریل، روکولا، گلیز بالزامیک، پستو روسو', + price: 357000, + restaurantSlug: 'Theory', + categoryTitle: 'ساندویچ گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741622230110.png"], +}, +{ + title: 'ساندویچ چیکن پستو', + desc: 'مرغ، سس پستو ریحان، گوجه مزه‌دار شده، سس پنیر', + price: 355000, + restaurantSlug: 'Theory', + categoryTitle: 'ساندویچ سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741622155566.png"], +}, +{ + title: 'ساندویچ چیکن هالوپینو', + desc: 'مرغ، سس هالوپینو، گوجه مزه‌دار، پیازچه', + price: 263000, + restaurantSlug: 'Theory', + categoryTitle: 'ساندویچ سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741621934158.png"], +}, +{ + title: 'چای سیاه', + desc: '', + price: 90000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سبز', + desc: '', + price: 105000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس تی کوکو گرین', + desc: 'چای سبز سرددم، سیروپ نارگیل', + price: 132000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741621829898.png"], +}, +{ + title: 'کرم بروله', + desc: '', + price: 193000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741621763441.png"], +}, +{ + title: 'موس شکلات و پرتقال', + desc: '', + price: 221000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741621732851.png"], +}, +{ + title: 'لاته سیروپ', + desc: 'سیروپ انتخابی (کارامل/شکلات/نارگیل/فندوق/وانیل/لوتوس)', + price: 202000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741717242990.png"], +}, +{ + title: 'دونات دوبی', + desc: 'یک عدد دونات شکلات ، یک عدد (تکه ای) شکلات دوبی', + price: 120000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات دوبی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743526505742.png"], +}, +{ + title: 'دونات پسته دوبی ', + desc: 'یک عدد دونات شکلات ، یک عدد ( تکه ای ) شکلات دوبی ، پودر پسته', + price: 140000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات دوبی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1738534628614.png"], +}, +{ + title: 'اسپرسو ۷۰/۳۰', + desc: '', + price: 160000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741717154499.png"], +}, +{ + title: 'اسپرسو ماکیاتو ۷۰/۳۰', + desc: '', + price: 174000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741716889953.png"], +}, +{ + title: 'اسپرسو پیکولو ۷۰/۳۰', + desc: '', + price: 186000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741716997525.png"], +}, +{ + title: 'اسپرسو کورتادو ۷۰/۳۰', + desc: '', + price: 196000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741716966384.png"], +}, +{ + title: 'آمریکانو ۷۰/۳۰', + desc: '', + price: 160000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741632315585.png"], +}, +{ + title: 'لاته ۷۰/۳۰', + desc: '', + price: 214000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741716779814.png"], +}, +{ + title: 'کاپوچینو ۷۰/۳۰', + desc: '', + price: 208000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741716756922.png"], +}, +{ + title: 'فلت وایت ۷۰/۳۰', + desc: '', + price: 208000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741716693388.png"], +}, +{ + title: 'ماچا لاته', + desc: '', + price: 223000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741716616701.png"], +}, +{ + title: 'کوکو لاته', + desc: '', + price: 256000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741716569208.png"], +}, +{ + title: 'کوکو ماچا لاته', + desc: '', + price: 255000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741716528276.png"], +}, +{ + title: 'آیس لاته سیروپ', + desc: 'سیروپ انتخابی (کارامل/شکلات/نارگیل/فندوق/وانیل/لوتوس)', + price: 264000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741717568965.png"], +}, +{ + title: 'کیک روز', + desc: '', + price: 150000, + restaurantSlug: 'zhivan', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لاته بابل تی', + desc: '', + price: 301000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741717726294.png"], +}, +{ + title: 'آیس ماچا بابل تی', + desc: '', + price: 240000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741717765520.png"], +}, +{ + title: 'فراپاچینو سیروپ', + desc: '', + price: 330000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فراپاچینو بابل تی', + desc: '', + price: 304000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو عربیکا', + desc: 'عصاره دان قهوه عربیکا + شکلات + اب', + price: 64000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو کامرشیال', + desc: 'عصاره دان قهوه ربوستا + شکلات + اب', + price: 49000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو ماکیاتو عربیکا', + desc: 'عصاره دان قهوه عربیکا +فوم شیر+ شکلات + اب', + price: 65000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو ماکیاتو کامرشیال', + desc: 'عصاره دان قهوه ربوستا +فوم شیر+ شکلات + اب', + price: 49000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کن پانا عربیکا', + desc: 'عصاره دان قهوه عربیکا +خامه+ شکلات + اب', + price: 83000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کن پانا کامرشیال', + desc: 'عصاره دان قهوه ربوستا +خامه+ شکلات + اب', + price: 73000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو عربیکا', + desc: 'عصاره دان قهوه عربیکا +اب جوش+ شکلات', + price: 67000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو کامرشیال', + desc: 'عصاره دان قهوه ربوستا +اب جوش + شکلات ', + price: 51000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته عربیکا', + desc: 'عصاره دان قهوه عربیکا +شیر', + price: 89000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته کامرشیال', + desc: 'عصاره دان قهوه ربوستا+شیر', + price: 79000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فلت وایت عربیکا', + desc: 'عصاره قهوه عربیکا +شیر فوم', + price: 89000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فلت وایت کامرشیال', + desc: 'عصاره قهوه ربوستا+ شیر فوم', + price: 79000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو عربیکا', + desc: 'عصاره قهوه عربیکا +شیر فوم', + price: 89000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو کامرشیال', + desc: 'عصاره قهوه ربوستا+شیر فوم', + price: 79000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل ماکیاتو عربیکا', + desc: 'عصاره قهوه عربیکا +شیر فوم + سس کارامل + سیروپ کارامل', + price: 109000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل ماکیاتو کامرشیال', + desc: 'عصاره قهوه ربوستا +شیر فوم + سس کارامل + سیروپ کارامل', + price: 101000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا عربیکا', + desc: 'عصاره قهوه عربیکا +شیر فوم + سس شکلات', + price: 109000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا کامرشیال', + desc: 'عصاره قهوه ربوستا +شیر فوم + سس شکلات', + price: 101000, + restaurantSlug: 'ahr_cofe', + categoryTitle: 'نوشیدنی گرم بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمی دستگاهی', + desc: '', + price: 170000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کلدبرو کلاسیک', + desc: '', + price: 168000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741615796962.png"], +}, +{ + title: 'کلدبرو پرشین', + desc: '', + price: 168000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741615745223.png"], +}, +{ + title: 'کلدبرو کوکو آچری', + desc: '', + price: 178000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741615718530.png"], +}, +{ + title: 'کلدبرو آیریش', + desc: '', + price: 168000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741615672755.png"], +}, +{ + title: 'تست اسفناج و قارچ', + desc: 'نان خمیر ترش، اسفناج، قارچ کره‌ای، تخم مرغ(همراه با قهوه دمي/چای)', + price: 258000, + restaurantSlug: 'Theory', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741615541780.png"], +}, +{ + title: 'بیکن و نیمرو', + desc: 'نان بریوش، قارچ، بیکن، نیمرو(همراه با قهوه دمي/چای)', + price: 335000, + restaurantSlug: 'Theory', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741615479089.png"], +}, +{ + title: 'سوسیس و اسکرامبل', + desc: 'نان بریوش، سوسیس، سس خردل، اسکرامبل(همراه با قهوه دمي/چای)', + price: 351000, + restaurantSlug: 'Theory', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741615422472.png"], +}, +{ + title: 'ساندویچ مرغ و زیتون', + desc: 'مرغ، زیتون، روکولا، ریحان ایتالیایی', + price: 323000, + restaurantSlug: 'Theory', + categoryTitle: 'ساندویچ سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741615365988.png"], +}, +{ + title: 'اسپرسو', + desc: '۷۰/۳۰', + price: 80000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاناکوتا انجیر', + desc: '', + price: 225000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1741608384524.png"], +}, +{ + title: 'زینگر new', + desc: 'نان برگر ،2عدد فیله سوخاری ،سس مخصوص،کاهو لوتوس،گوجه فرنگی،رلیش خیار، ساید سالاد و سیب زمینی(سرو سالن)', + price: 385000, + restaurantSlug: 'boote', + categoryTitle: 'ساندویچ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1739469537281.png"], +}, +{ + title: 'معجون نوتلا', + desc: 'بستنی معجون ، موز ، گردو ، پسته ، فندوق ، بادام هندی ، پودر نارگیل و پسته ، نوتلا (از هر مغز ۳ تا ۴ عدد)', + price: 190000, + restaurantSlug: 'donat-factory', + categoryTitle: 'ویتامینه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1738534156977.png"], +}, +{ + title: 'اسنک ژامبون مرغ', + desc: 'یک جفت، ژامبون مرغ 90 درصد، فلفل دلمه ای، قارچ، پنیر پیتزا (مخلوط کاله و مطهر)، سس و ادویه مخصوص، همراه با سالاد کاهو', + price: 140000, + restaurantSlug: 'donat-factory', + categoryTitle: 'اسنک و‌ میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1738534544438.png"], +}, +{ + title: 'اسنک پپرونی', + desc: '‎یک جفت، کالباس پپیرونی ، فلفل دلمه ای، قارچ، پنیر پیتزا (مخلوط کاله و مطهر)، سس و ادویه مخصوص، همراه با سالاد کاهو', + price: 140000, + restaurantSlug: 'donat-factory', + categoryTitle: 'اسنک و‌ میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1738534733565.png"], +}, +{ + title: 'اسنک ژامبون گوشت ', + desc: '‎یک جفت، ژامبون گوشت ۹۰ درصد ، فلفل دلمه ای، قارچ، پنیر پیتزا (مخلوط کاله و مطهر)، سس و ادویه مخصوص، همراه با سالاد کاهو', + price: 140000, + restaurantSlug: 'donat-factory', + categoryTitle: 'اسنک و‌ میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1738534806343.png"], +}, +{ + title: 'کوکی شکلات پرتقال', + desc: '', + price: 112000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی چاکلت چیپسی', + desc: '', + price: 112000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو', + desc: 'آب + اسپرسو', + price: 80000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کورتادو', + desc: 'نسبت مساوی شیر و قهوه', + price: 85000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته', + desc: 'قهوه و شیر', + price: 95000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیسکولاته', + desc: 'کرم لوتوس شیر و اسپرسو', + price: 120000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا', + desc: 'شکلات اسپرسو شیر', + price: 105000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل ماکیاتو', + desc: 'سیروپ کارامل شیر اسپرسو ', + price: 110000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نسکافه', + desc: 'پودر نسکافه شیر', + price: 90000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کاپوچینو', + desc: 'شیر اسپرسو', + price: 95000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کن هیلو ', + desc: 'اسپرسو یخ', + price: 75000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس امریکانو', + desc: '', + price: 85000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس موکا', + desc: 'شکلات اسپرسو شیر یخ', + price: 115000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس لاته', + desc: 'شیر اسپرسو یخ', + price: 100000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس کارامل ماکیاتو', + desc: 'سیروپ کارامل اسپرسو شیر یخ', + price: 115000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آفوگاتو', + desc: 'بستنی وانیل اسپرسو', + price: 105000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس کوکولاته', + desc: 'سیروپ نارگیل اسپرسو شیر یخ', + price: 115000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس لاته فندوق', + desc: 'سیروپ فندوق اسپرسو شیر یخ', + price: 115000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد بر پایه اسپرسو', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نیمرو', + desc: '', + price: 65000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'املت', + desc: '', + price: 80000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سوسیس تخم مرغ مخصوص', + desc: 'سوسیس، تخم مرغ، رب، ادویه مخصوص', + price: 95000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'املت ژامبون ', + desc: '', + price: 95000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'صبحانه', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'املت با قارچ و پنیر', + desc: 'قارچ و پنیر رب و تخم مرغ', + price: 120000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کلاسیک فرایز', + desc: '', + price: 110000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت فرایز', + desc: 'سیب زمینی سس قارچ', + price: 195000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سیاه ساده', + desc: 'فرنچ چای نبات ', + price: 55000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای ویژه', + desc: 'هل دارچین نبات ', + price: 70000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای نعنا', + desc: '', + price: 60000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گل گاو زبان', + desc: '', + price: 90000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش آرامش', + desc: '', + price: 90000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سبز', + desc: '', + price: 80000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیموناد', + desc: '', + price: 90000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موهیتو', + desc: '', + price: 95000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بلو لایم', + desc: 'آب اناناس سیب سبز پرتقال سیروپ بلو کاراسائو', + price: 110000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رد پلام ', + desc: 'اب الو قرمز ابلیمو جز هندی سیروپ کرن بری', + price: 125000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک وانیل ', + desc: '', + price: 145000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک شکلات ', + desc: '', + price: 170000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک لوتوس ', + desc: ' بستنی وانیل کرم لوتوس ', + price: 180000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک بادام زمینی ', + desc: 'بستنی کره بادام زمینی ', + price: 170000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک استرانوتلا', + desc: 'بستنی توت فرنگی نوتلا ', + price: 187000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک کوکو بنانا', + desc: 'بستنی وانیل و شکلات نوتلا موز نارگیل ', + price: 190000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاستا چیکن آلفردو', + desc: 'قارچ خامه پنه 150گرم فیله مرغ', + price: 300000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'غذا اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاستا بیف آلفردو ', + desc: 'قارچ خامه پنه 150گرم گوشت قرمز ', + price: 310000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'غذا اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن استراگانوف', + desc: 'قارچ خامه خلال سیب زمینی 150 گرم فیله مرغ', + price: 240000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'غذا اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیف استراگانوف ', + desc: 'قارچ خامه خلال سیب زمینی 150 گرم گوشت قرمز ', + price: 250000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'غذا اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کلاسیک برگر ', + desc: 'نان برگر مخصوص 150گرم برگر 90 درصد ', + price: 190000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'غذا اصلی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماشروم برگر ', + desc: 'سس قارچ نان مخصوص 150 گرم برگر 90 درصد گوشت ', + price: 220000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'غذا اصلی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز برگر ', + desc: 'نان مخصوص پنیر گودا پنیر کاراملی 150 گرم برگر 90 درصد گوشت ', + price: 200000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'غذا اصلی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات چاکلت ', + desc: '', + price: 95000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بار گرم بدون کافئین ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات کوکونات', + desc: '', + price: 105000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بار گرم بدون کافئین ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات فندق', + desc: '', + price: 105000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بار گرم بدون کافئین ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دارک چاکلت ', + desc: '', + price: 100000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بار گرم بدون کافئین ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پینک چاکلت', + desc: '', + price: 105000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بار گرم بدون کافئین ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا', + desc: '', + price: 110000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بار گرم بدون کافئین ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بیسکو ماسالا', + desc: '', + price: 150000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بار گرم بدون کافئین ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ناتی ماسالا', + desc: 'کره بادام زمینی ماسالا', + price: 130000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بار گرم بدون کافئین ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 95000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بار گرم بدون کافئین ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیروپ ', + desc: '', + price: 15000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نبات اضافه', + desc: '', + price: 10000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ ویژه', + desc: 'هات‌داگ مجاری، سس قارچ، ژامبون تنوری، نان چارکی', + price: 195000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'غذا اصلی', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت لاگون', + desc: 'آرمای دارچین در کنار طراوت میوه های استوایی', + price: 169000, + restaurantSlug: 'boote', + categoryTitle: 'ماکتل بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1740650953725.png"], +}, +{ + title: 'کوکی رژیمی آجیلی', + desc: '', + price: 158000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماءالشعیرمخصوص', + desc: '', + price: 75000, + restaurantSlug: 'zhivan', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1742224608597.png"], +}, +{ + title: 'بشقاب وافل بستنی', + desc: '', + price: 255000, + restaurantSlug: 'zhivan', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743355847058.png"], +}, +{ + title: 'اسپرسو70/30عربیکا', + desc: '', + price: 110000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743364293564.png"], +}, +{ + title: 'امریکانو', + desc: '', + price: 125000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743364344906.png"], +}, +{ + title: 'لاته', + desc: '', + price: 145000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743364403723.png"], +}, +{ + title: 'کورتادو', + desc: '', + price: 125000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743364465048.png"], +}, +{ + title: 'موکا', + desc: '', + price: 165000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743364504072.png"], +}, +{ + title: 'کارامل ماکیاتو', + desc: '', + price: 165000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743364535455.png"], +}, +{ + title: 'کاپوچینو', + desc: 'شیر . قهوه 50/50', + price: 136000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743364584676.png"], +}, +{ + title: 'تیرامیسو', + desc: '', + price: 158000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743364671908.png"], +}, +{ + title: 'سه شیر شکلاتی', + desc: '', + price: 145000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743364718345.png"], +}, +{ + title: 'تارت وانیل توت فرنگی', + desc: '', + price: 140000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1745075465530.png"], +}, +{ + title: 'تارت شکلات توت فرنگی', + desc: '', + price: 145000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1745075559489.png"], +}, +{ + title: 'تارت شکلات', + desc: '', + price: 140000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1745075535367.png"], +}, +{ + title: 'اسنیکرز', + desc: '', + price: 145000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1745075435287.png"], +}, +{ + title: 'چیزکیک نیویورکی', + desc: '', + price: 107000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1745075502061.png"], +}, +{ + title: 'چیزکیک لوتوس', + desc: '', + price: 140000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743365073647.png"], +}, +{ + title: 'چیزکیک سن سباستین', + desc: '', + price: 145000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1745075798711.png"], +}, +{ + title: 'کیک شکلاتی', + desc: '', + price: 103000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1745075898953.png"], +}, +{ + title: 'کوکی شکلاتی', + desc: '', + price: 63000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1766415189898.png"], +}, +{ + title: 'رول دارچین', + desc: '', + price: 68000, + restaurantSlug: 'Moon', + categoryTitle: 'بیکری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فلت کروسان', + desc: '', + price: 79000, + restaurantSlug: 'Moon', + categoryTitle: 'بیکری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سوییس برد', + desc: '', + price: 42000, + restaurantSlug: 'Moon', + categoryTitle: 'بیکری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نیویورک رول', + desc: '', + price: 89000, + restaurantSlug: 'Moon', + categoryTitle: 'بیکری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سیاه لاهیجان', + desc: '', + price: 70000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424279408.png"], +}, +{ + title: 'شیرچای', + desc: '', + price: 110000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424314094.png"], +}, +{ + title: 'دمنوش کاسکارا', + desc: '', + price: 102000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424350103.png"], +}, +{ + title: 'دمنوش نعنای مراکشی', + desc: '', + price: 80000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424384817.png"], +}, +{ + title: 'دمنوش جزمین ', + desc: '', + price: 80000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424415786.png"], +}, +{ + title: 'نوش لمون گرس', + desc: '', + price: 70000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424447389.png"], +}, +{ + title: 'دمنوش گل گاوزبان', + desc: '', + price: 70000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424474750.png"], +}, +{ + title: 'دمنوش سیب دارچین', + desc: '', + price: 95000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424513858.png"], +}, +{ + title: 'دمنوش اویشن عسل ', + desc: '', + price: 83000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424543729.png"], +}, +{ + title: 'دمنوش میکس', + desc: 'گل گاو زبان رز چینی اویشن چای سبز عسل', + price: 76000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424600044.png"], +}, +{ + title: 'چای زعفران ', + desc: '', + price: 75000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424623958.png"], +}, +{ + title: 'ماسالا کوچک', + desc: '', + price: 74000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424653130.png"], +}, +{ + title: 'ماسالا بزرگ', + desc: '', + price: 165000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424679613.png"], +}, +{ + title: 'ایس امریکانو', + desc: '', + price: 134000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424722177.png"], +}, +{ + title: 'ایس لاته', + desc: '', + price: 160000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424758258.png"], +}, +{ + title: 'ایس موکا', + desc: '', + price: 177000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424789295.png"], +}, +{ + title: 'ایس کارامل ماکیاتو', + desc: '', + price: 177000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424816575.png"], +}, +{ + title: 'ایس پشن اسپرسو', + desc: '', + price: 150000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424845982.png"], +}, +{ + title: 'ایس چاکلت ', + desc: '', + price: 116000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424882858.png"], +}, +{ + title: 'فراپاچینو', + desc: '', + price: 177000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743424956422.png"], +}, +{ + title: 'فراپاچینو بیسکوییت ', + desc: '', + price: 203000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425026117.png"], +}, +{ + title: 'فراپاچینو فندق', + desc: '', + price: 188000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425066064.png"], +}, +{ + title: 'فراپاچینو بادام زمینی', + desc: '', + price: 186000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425105083.png"], +}, +{ + title: 'وان پیس ', + desc: '', + price: 168000, + restaurantSlug: 'Moon', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425142826.png"], +}, +{ + title: 'منگوپل', + desc: 'اناناس انبه سودا', + price: 106000, + restaurantSlug: 'Moon', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425184464.png"], +}, +{ + title: 'مانتیی', + desc: 'کرن بری لیمو تریپل سک سودا', + price: 71000, + restaurantSlug: 'Moon', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425233026.png"], +}, +{ + title: 'مجیک مومنت', + desc: 'پرتقال قرمز لیمو کرن بری تریپل سک سودا', + price: 109000, + restaurantSlug: 'Moon', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425278366.png"], +}, +{ + title: 'لیمو', + desc: '', + price: 84000, + restaurantSlug: 'Moon', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425304489.png"], +}, +{ + title: 'افوگاتو', + desc: '', + price: 140000, + restaurantSlug: 'Moon', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425339605.png"], +}, +{ + title: 'شیک شکلات', + desc: '', + price: 166000, + restaurantSlug: 'Moon', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425371152.png"], +}, +{ + title: 'شیک وانیل ', + desc: '', + price: 145000, + restaurantSlug: 'Moon', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425394027.png"], +}, +{ + title: 'شیک بادام زمینی', + desc: '', + price: 182000, + restaurantSlug: 'Moon', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425422246.png"], +}, +{ + title: 'هات چاکلت کوچک', + desc: '', + price: 95000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425461105.png"], +}, +{ + title: 'هات چاکلت بزرگ', + desc: '', + price: 165000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425485315.png"], +}, +{ + title: 'شیر', + desc: '', + price: 65000, + restaurantSlug: 'Moon', + categoryTitle: 'ایتم های بر پایه شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425516799.png"], +}, +{ + title: 'شیرعسل', + desc: '', + price: 75000, + restaurantSlug: 'Moon', + categoryTitle: 'ایتم های بر پایه شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425550396.png"], +}, +{ + title: 'شیر عسل دارچین', + desc: '', + price: 80000, + restaurantSlug: 'Moon', + categoryTitle: 'ایتم های بر پایه شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425607248.png"], +}, +{ + title: 'کلاب گوشت', + desc: '', + price: 121000, + restaurantSlug: 'Moon', + categoryTitle: 'سانویچ سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425767434.png"], +}, +{ + title: 'کلاب مرغ ', + desc: '', + price: 110000, + restaurantSlug: 'Moon', + categoryTitle: 'سانویچ سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425794235.png"], +}, +{ + title: 'کلاب بوقلمون', + desc: '', + price: 143000, + restaurantSlug: 'Moon', + categoryTitle: 'سانویچ سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1743425833967.png"], +}, +{ + title: 'سالاد سیب زمینی', + desc: '', + price: 105000, + restaurantSlug: 'Moon', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد ماکارانی', + desc: '', + price: 105000, + restaurantSlug: 'Moon', + categoryTitle: 'سالاد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک هویج گردو', + desc: '', + price: 98000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1745075310765.png"], +}, +{ + title: 'کیک سیب دارچین', + desc: '', + price: 79000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1745075289490.png"], +}, +{ + title: 'آویشن عسل', + desc: '', + price: 75000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'دمنوش ها', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسنک مخصوص', + desc: 'یک جفت، ترکیب ژامبون مرغ و گوشت ۹۰%، پنیر پیتزا ترکیبی (مخلوط کاله و مطهر) قارچ، فلفل دلمه ای، سس مخصوص، ادویه اویشن فلفل، پنیر گودا، چیپس خلال، سالاد کاهو', + price: 155000, + restaurantSlug: 'donat-factory', + categoryTitle: 'اسنک و‌ میان وعده', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'یونانی', + desc: '', + price: 150000, + restaurantSlug: 'lanka', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1744480103541.png"], +}, +{ + title: 'ماسالا شنی', + desc: '', + price: 100000, + restaurantSlug: 'lanka', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پشن لایف', + desc: '', + price: 189000, + restaurantSlug: 'lanka', + categoryTitle: 'اسموتی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1744480310105.png"], +}, +{ + title: 'کارابیچ', + desc: '', + price: 155000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1744480386774.png"], +}, +{ + title: 'کرن دریم', + desc: '', + price: 145000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1744480458800.png"], +}, +{ + title: 'گرین گاردن', + desc: '', + price: 145000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1744480557853.png"], +}, +{ + title: 'بری موهیتو', + desc: '', + price: 140000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1744480625767.png"], +}, +{ + title: 'سیروپ کارامل', + desc: '', + price: 15000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیروپ کوکی', + desc: '', + price: 15000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیروپ پاپکورن', + desc: '', + price: 15000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیروپ فندوق', + desc: '', + price: 15000, + restaurantSlug: 'lanka', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لیدی کیس', + desc: '', + price: 165000, + restaurantSlug: 'lanka', + categoryTitle: 'vip drink', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1744482053233.png"], +}, +{ + title: 'هوراکان', + desc: '', + price: 299000, + restaurantSlug: 'lanka', + categoryTitle: 'vip drink', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1744482088578.png"], +}, +{ + title: 'واینکا', + desc: '', + price: 289000, + restaurantSlug: 'lanka', + categoryTitle: 'vip drink', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1744482131071.png"], +}, +{ + title: 'ارسیسا', + desc: '', + price: 245000, + restaurantSlug: 'lanka', + categoryTitle: 'vip drink', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک استرابری', + desc: '', + price: 165000, + restaurantSlug: 'lanka', + categoryTitle: 'میلک شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک شکلات', + desc: '', + price: 90000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'کیک', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سن سباستین', + desc: '', + price: 100000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'کیک', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ترافل', + desc: '', + price: 15000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'کیک', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک کوکی', + desc: '', + price: 188000, + restaurantSlug: 'Moon', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1744813029366.png"], +}, +{ + title: 'ویرجین کولادا', + desc: '', + price: 100000, + restaurantSlug: 'lanka', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سه شیر وانیلی', + desc: '', + price: 135000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1745075397924.png"], +}, +{ + title: 'کروسان', + desc: '', + price: 110000, + restaurantSlug: 'zhivan', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس چاکلت ', + desc: '', + price: 90000, + restaurantSlug: 'zhivan', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پای سیب', + desc: '', + price: 95000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1746350274914.png"], +}, +{ + title: 'پای توت فرنگی', + desc: '', + price: 99000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1746350309090.png"], +}, +{ + title: 'گارلیک چیکن/ Garlick chicken', + desc: 'دیپ قارچ و پنیر/ترکیب پنیر معطر/تکه های مرغ مزه دار شده بر پایه سیر/فلفل دلمه ای/ریحان ایتالیایی/اورگانو', + price: 545000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 3, + stockDefault: 3, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1761750232870.png"], +}, +{ + title: 'پاریس برست', + desc: '', + price: 160000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1746445205213.png"], +}, +{ + title: 'اسپرسو ۱۰۰ برزیل', + desc: '', + price: 182000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو ۱۰۰ ال سالوادور', + desc: '', + price: 198000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کلدبرو کولا', + desc: '', + price: 178000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جینجر شات انار', + desc: 'آب انار، زنجبیل', + price: 115000, + restaurantSlug: 'Theory', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی شکلات گردو', + desc: '', + price: 112000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی دبل چاکلت', + desc: '', + price: 112000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی رژیمی', + desc: '', + price: 112000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی بادام‌زمینی', + desc: '', + price: 112000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک بری - berry milkshake', + desc: 'توت فرنگی / شاتوت / وانیل', + price: 160000, + restaurantSlug: 'zhivan', + categoryTitle: 'اسموتی و شیک ها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'موکا توت فرنگی - Strawberry mocha', + desc: 'توت فرنگی / شکلات / قهوه / شیر', + price: 145000, + restaurantSlug: 'zhivan', + categoryTitle: 'آیس کافی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'یارا...yara', + desc: 'بیدمشک /خاکشیر/سرددم چای ترش', + price: 105000, + restaurantSlug: 'zhivan', + categoryTitle: 'شربت و عرقیجات', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نوشابه لیوانی ', + desc: 'کوکا/فانتا/ اسپرایت/ آب سودا', + price: 45000, + restaurantSlug: 'zhivan', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاستا آلفردو', + desc: 'پاستا تازه،سس آلفردو، قارچ بلانچ شده،پنیر پارمسان', + price: 300000, + restaurantSlug: 'passata', + categoryTitle: 'پاستاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760984472872.png"], +}, +{ + title: 'چای سیاه لاهیجان 3کاپ', + desc: 'برگ دستچین شده مزارع لاهیجان،همراه با تاپینگ دارچین، زعفران یا هل', + price: 185000, + restaurantSlug: 'boote', + categoryTitle: 'هاوس آف تی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1749574230701.png"], +}, +{ + title: 'شیک استرابلا', + desc: 'بستنی، شیر، نوتلا، توت‌فرنگی، پوره‌ی توت‌فرنگی', + price: 260000, + restaurantSlug: 'Theory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک پیناتی', + desc: 'بستنی، شیر، موز، بادام‌زمینی، سس کارامل‌نمکی', + price: 211000, + restaurantSlug: 'Theory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1753793881494.png"], +}, +{ + title: 'شیک فروتی', + desc: 'بستنی، شیر، شاتوت، توت‌فرنگی', + price: 206000, + restaurantSlug: 'Theory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1753793899891.png"], +}, +{ + title: 'شیک ماچانگو', + desc: 'بستنی، شیر نارگیل، سیروپ نارگیل، انبه، ماچا', + price: 251000, + restaurantSlug: 'Theory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1753793935719.png"], +}, +{ + title: 'پاستا ریحان و پسته ', + desc: 'پاستا تازه ،سس کرم ریحان، مغز پسته،پنیر پارمسان،سیر', + price: 329000, + restaurantSlug: 'passata', + categoryTitle: 'پاستاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760981977562.png"], +}, +{ + title: 'پاستا گود کرما‌‌', + desc: 'پاستا تازه ، سس گود کرما(ترکیب خامه و پنیر گودا)،مغز گردو ، پنیر پارمسان', + price: 348000, + restaurantSlug: 'passata', + categoryTitle: 'پاستاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760981814392.png"], +}, +{ + title: 'پاستا چدارلا', + desc: 'پاستا تازه،سس چدار ،پنیر موزارلا،مغز بادام هندی', + price: 349000, + restaurantSlug: 'passata', + categoryTitle: 'پاستاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760981750380.png"], +}, +{ + title: 'پاساتا پلاس', + desc: 'پاستا تازه،سس تمیتو فرش، گوجه گیلاسی،سبزیجات معطر،پنیر ،بادام هندی و گردو،پارمسان', + price: 260000, + restaurantSlug: 'passata', + categoryTitle: 'پاستاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760981465649.png"], +}, +{ + title: 'هاتینو پاستا(تند)', + desc: 'پاستا تازه، سس چیلی ،فلفل،گوجه گیلاسی، سبزیجات معطر، پنیر پارمسان', + price: 255000, + restaurantSlug: 'passata', + categoryTitle: 'پاستاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760981392033.png"], +}, +{ + title: 'راویولی‌ پنیر و مرغ ( روزهای دوشنبه و سه شنبه )', + desc: 'پاستای تازه ،مرغ طعم دار شده ،پنیر ،بلوچیز‌،سیر، سس ماشروم کرم', + price: 380000, + restaurantSlug: 'passata', + categoryTitle: 'Menu star (Only for special days)', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760893100067.png"], +}, +{ + title: 'راگو', + desc: 'گوشت گردن گوساله آرام پز شده،سس باربیکی', + price: 210000, + restaurantSlug: 'passata', + categoryTitle: 'تاپینگ بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760892964603.png"], +}, +{ + title: 'چیکن', + desc: '۱۵۰ گرم فیله مرغ طعم دار شده', + price: 99000, + restaurantSlug: 'passata', + categoryTitle: 'تاپینگ بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760892860513.png"], +}, +{ + title: 'میگو', + desc: 'میگو طعم دار شده،سس سس‌ گامباس،سبزیجات معطر', + price: 210000, + restaurantSlug: 'passata', + categoryTitle: 'تاپینگ بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760892744593.png"], +}, +{ + title: 'چیکن استیک', + desc: '۱۵۰ گرم فیله مرغ طعم دار شده با سس ماشروم کرم', + price: 170000, + restaurantSlug: 'passata', + categoryTitle: 'تاپینگ بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760892668573.png"], +}, +{ + title: 'بیکن گوشت و مرغ', + desc: '', + price: 135000, + restaurantSlug: 'passata', + categoryTitle: 'تاپینگ بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760892529571.png"], +}, +{ + title: 'بادمجان', + desc: ' بادمجان سرخ شده', + price: 60000, + restaurantSlug: 'passata', + categoryTitle: 'تاپینگ بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760892427936.png"], +}, +{ + title: 'پیاز کاراملی', + desc: 'پیاز سفید ، کره ', + price: 60000, + restaurantSlug: 'passata', + categoryTitle: 'تاپینگ بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760892187306.png"], +}, +{ + title: 'وگن استار', + desc: 'بادمجان ، گوجه گیلاسی، ذرت، قارچ', + price: 89000, + restaurantSlug: 'passata', + categoryTitle: 'تاپینگ بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760892091585.png"], +}, +{ + title: 'راگوسفردو', + desc: 'نان چیاباتا،گوشت گردن آرام پز شده ، سس ماشروم کرم ،پیاز کاراملی،وجه', + price: 419000, + restaurantSlug: 'passata', + categoryTitle: 'چیاباتا(سندویچ‌)', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760983316509.png"], +}, +{ + title: 'چیکناتا', + desc: 'فیله مرغ طعم داره ، سس ماشروم کرم ، پنیر گودا ، وجه', + price: 350000, + restaurantSlug: 'passata', + categoryTitle: 'چیاباتا(سندویچ‌)', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760984684653.png"], +}, +{ + title: 'بیکندویچ', + desc: 'بیکن گوشت ،سس پستو،پنیر پستو و موزرلا، قارچ بلانچ، وجه', + price: 355000, + restaurantSlug: 'passata', + categoryTitle: 'چیاباتا(سندویچ‌)', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760984608997.png"], +}, +{ + title: 'کوکا', + desc: '', + price: 45000, + restaurantSlug: 'passata', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760890300457.png"], +}, +{ + title: 'فانتا', + desc: '', + price: 45000, + restaurantSlug: 'passata', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760890421825.png"], +}, +{ + title: 'اسپرایت', + desc: '', + price: 45000, + restaurantSlug: 'passata', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760890505141.png"], +}, +{ + title: 'کاکتوس', + desc: '', + price: 55000, + restaurantSlug: 'passata', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760890822242.png"], +}, +{ + title: 'کوکا زیرو', + desc: '', + price: 45000, + restaurantSlug: 'passata', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760890772796.png"], +}, +{ + title: 'آب معدنی', + desc: '', + price: 11000, + restaurantSlug: 'passata', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760890584189.png"], +}, +{ + title: 'آب سودا ', + desc: '', + price: 30000, + restaurantSlug: 'zhivan', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آش رشته کشک', + desc: '', + price: 140000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'آش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751458394662.png"], +}, +{ + title: 'آش رشته ترشی', + desc: '', + price: 140000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'آش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751458332627.png"], +}, +{ + title: 'آش جو بدون سیرابی', + desc: '', + price: 150000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'آش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751458284386.png"], +}, +{ + title: 'آش جو با سیرابی', + desc: '', + price: 180000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'آش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751458241590.png"], +}, +{ + title: 'آش ترخینه', + desc: 'ترخینه دست ساز خودم پز،سبزی آش و حبوبات، نعناداغ و پیازداغ', + price: 160000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'آش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751458054499.png"], +}, +{ + title: 'کاله جوش', + desc: 'کشک،گردو،سیر داغ،و نعنا داغ+دورچین پیاز', + price: 170000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'آش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751457990529.png"], +}, +{ + title: 'جغور بغور', + desc: '۲۵۰ گرم ترکیب جگر گوسفندی و جگر سفید+پیازداغ و چاشنی و دورچین سیب سرخ کرده', + price: 400000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751457914487.png"], +}, +{ + title: 'پلو خورشت فسنجان ', + desc: 'یک پرس برنج ایرانی،گردو،رب انار،گوشت گرم چرخکرده،', + price: 350000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751457659186.png"], +}, +{ + title: 'پلو خورشت قورمه سبزی', + desc: 'برنج ایرانی،گوشت گرم', + price: 300000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751457555463.png"], +}, +{ + title: 'پلو خورشت قیمه', + desc: 'برنج ایرانی،گوشت گرم', + price: 300000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751457401903.png"], +}, +{ + title: 'چلو کره', + desc: '', + price: 120000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751457361220.png"], +}, +{ + title: 'دلمه ', + desc: 'برنج ایرانی،لپه،گوشت گرم،،،،،با چاشنی سرکه شکر', + price: 240000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای ویژه در طول هفته', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751457305461.png"], +}, +{ + title: 'کوفته', + desc: 'برنج ایرانی،لپه،گوشت گرم+سس مخصوص', + price: 280000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای ویژه در طول هفته', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751457265694.png"], +}, +{ + title: 'لوبیا پلو ', + desc: 'برنج ایرانی،گوشت گرم،لوبیاسبز،زعفران', + price: 220000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای ویژه در طول هفته', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751457204685.png"], +}, +{ + title: 'ماکارونی ', + desc: 'گوشت گرم چرخکرده،دورچین خیارشور', + price: 200000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای ویژه در طول هفته', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751457166583.png"], +}, +{ + title: 'کوکو یا کتلت', + desc: 'موجود نیست', + price: 0, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای ویژه در طول هفته', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751457113713.png"], +}, +{ + title: 'عدسی', + desc: '', + price: 100000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'صبحانه ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456994471.png"], +}, +{ + title: 'لوبیا', + desc: '', + price: 150000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'صبحانه ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456924636.png"], +}, +{ + title: 'املت', + desc: '', + price: 100000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'صبحانه ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456890468.png"], +}, +{ + title: 'املت شاپوری', + desc: 'املت+لوبیا چیتی', + price: 150000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'صبحانه ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456837633.png"], +}, +{ + title: 'سوسیس تخم مرغ ', + desc: '', + price: 130000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'صبحانه ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456795641.png"], +}, +{ + title: 'خاگینه', + desc: '', + price: 100000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'صبحانه ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456757455.png"], +}, +{ + title: 'نیمرو', + desc: '', + price: 80000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'صبحانه ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456712560.png"], +}, +{ + title: 'صبحانه ایرانی', + desc: '', + price: 120000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'صبحانه ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456668824.png"], +}, +{ + title: 'چای', + desc: '', + price: 35000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456591727.png"], +}, +{ + title: 'چای مخصوص', + desc: '', + price: 50000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456482433.png"], +}, +{ + title: 'دمنوش آویشن', + desc: '', + price: 75000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456436613.png"], +}, +{ + title: 'دمنوش چای ترش', + desc: '', + price: 75000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456360232.png"], +}, +{ + title: 'دمنوش آرام بخش', + desc: '', + price: 75000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456209480.png"], +}, +{ + title: 'دمنوش،گل گاو زبان', + desc: '', + price: 75000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456113962.png"], +}, +{ + title: 'دوغ سنتی', + desc: '', + price: 50000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751456034461.png"], +}, +{ + title: 'شربت سنتی', + desc: '', + price: 50000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751455922149.png"], +}, +{ + title: 'کباب تابه ای', + desc: '۱۳۵ گرم گوشت گرم و تازه،یک عدد گوجه،سیب زمینی سرخ شده', + price: 270000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1753715784744.png"], +}, +{ + title: 'پلو مرغ ویژه', + desc: 'یک عدد ران،مخلفات،برنج ایرانی', + price: 380000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای ویژه در طول هفته', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751455810504.png"], +}, +{ + title: 'شله زرد', + desc: 'برنج ایرانی،زعفران،هل و گلاب،شکر،خلال بادام', + price: 90000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'دسرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751455743435.png"], +}, +{ + title: 'حلوا', + desc: 'آرد،شکر،روغن،هل و گلاب و زعفران', + price: 60000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'دسرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751455702434.png"], +}, +{ + title: 'زیره جوش', + desc: 'آرد،روغن حیوانی،پودر نبات،زیره و زردچوبه', + price: 120000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'دسرها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751455541519.png"], +}, +{ + title: 'سیب زمینی پنیری', + desc: 'سیب زمینی سزخکرده،پنیر،پودر آویشن', + price: 175000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751455318661.png"], +}, +{ + title: 'سیب زمینی سرخ کرده', + desc: '', + price: 130000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751455184309.png"], +}, +{ + title: 'کشک و بادمجان', + desc: 'بادمجان سرخ‌شده، کشک،نعنا و پیازداغ', + price: 165000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751455143526.png"], +}, +{ + title: 'میرزا قاسمی', + desc: 'بادمجان کبابی،سیر،پوره گوجه،تخم مرغ', + price: 165000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751455054797.png"], +}, +{ + title: 'خوراک بندری', + desc: 'سوسیس،پیاز،رب،و سیب‌زمینی سرخ شده با دورچین ', + price: 165000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751454996470.png"], +}, +{ + title: 'آبدوغ خیار', + desc: 'خیار،سبزی،کشمش،گردو،ماست ودوغ', + price: 180000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751454938256.png"], +}, +{ + title: 'سالاد ماکارونی', + desc: '', + price: 130000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751454495145.png"], +}, +{ + title: 'بورانی اسفناج', + desc: 'ماست،اسفناج،ادویه', + price: 60000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1751454418603.png"], +}, +{ + title: 'جوسی لوسی برگر', + desc: '', + price: 295000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دوبل برگر', + desc: '', + price: 335000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'برگرها ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس امریکانو 70/30', + desc: '', + price: 61000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوشیدنی سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس امریکانو عربیکا', + desc: '', + price: 76000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوشیدنی سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس امریکانو پرتقالی', + desc: '', + price: 80000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوشیدنی سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو 70/30', + desc: '', + price: 60000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس امریکانو 50/50', + desc: '', + price: 66000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوشیدنی سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس لاته', + desc: '', + price: 85000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوشیدنی سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس موکا', + desc: '', + price: 90000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوشیدنی سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس کارامل ماکیاتو', + desc: '', + price: 90000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوشیدنی سرد بر پایه قهوه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس چاکلت ', + desc: '', + price: 75000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک بری', + desc: '', + price: 120000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک لمون بری', + desc: '', + price: 110000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک افتر ایت', + desc: '', + price: 105000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'شیک ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیتروس بلو', + desc: '', + price: 100000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکو منگو', + desc: '', + price: 100000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دارک چاکلت', + desc: '', + price: 75000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پینک چاکلت', + desc: '', + price: 75000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'وایت چاکلت', + desc: '', + price: 80000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'فندوق چاکلت', + desc: '', + price: 75000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نارگیل چاکلت', + desc: '', + price: 75000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا چاکلت', + desc: '', + price: 70000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر نارگیل', + desc: '', + price: 55000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای کرک', + desc: '', + price: 65000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای لاته ', + desc: '', + price: 80000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'بار گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پنه چیکن پستو', + desc: '', + price: 210000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاستا ارابیاتا', + desc: '', + price: 185000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاستا دیپ چیز', + desc: '', + price: 175000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'پاستا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سوسیس المانی', + desc: '', + price: 95000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سوسیس المانی با قارچ و پنیر', + desc: '', + price: 135000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بندری', + desc: '', + price: 90000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بندری با قارچ و پنیر', + desc: '', + price: 150000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'نوستالژی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ فیله گریل ( بزرگ )', + desc: '', + price: 145000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'ساندویچ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ فیله گریل ( کوچک)', + desc: '', + price: 110000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'ساندویچ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات داگ الفردو', + desc: '', + price: 175000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'هات داگ ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات داگ دیپ چیز', + desc: '', + price: 180000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'هات داگ ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد سزار گریل', + desc: '', + price: 225000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سالاد ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ دنر گوشت', + desc: '', + price: 225000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'ساندویچ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ دنر مرغ', + desc: '', + price: 200000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'ساندویچ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ دنر میکس', + desc: '', + price: 210000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'ساندویچ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پرس فیله گریل ۵ تیکه + سیب زمینی', + desc: '', + price: 275000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پرس فیله گریل ۷ تیکه + سیب زمینی', + desc: '', + price: 310000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سوخاری', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ مرغ پستو', + desc: '', + price: 235000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'ساندویچ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پوره سیب زمینی', + desc: '', + price: 90000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ ژامبون سرد (بزرگ)', + desc: '', + price: 180000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'ساندویچ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ ژامبون سرد ( کوچیک)', + desc: '', + price: 120000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'ساندویچ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ رست بیف', + desc: '', + price: 180000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'ساندویچ ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هالو فرایز ( بزرگ) ', + desc: '', + price: 195000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هالو فرایز ( متوسط )', + desc: '', + price: 175000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن فرایز ( بزرگ )', + desc: '', + price: 235000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیکن فرایز ( متوسط )', + desc: '', + price: 185000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی قارچ و پنیر ( بزرگ )', + desc: '', + price: 225000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب زمینی قارچ و پنیر ( متوسط )', + desc: '', + price: 195000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'سیب زمینی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو 50/50 ', + desc: '', + price: 66000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو 70/30 ', + desc: '', + price: 61000, + restaurantSlug: 'milco-pilco', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لمون بری', + desc: 'پرتقال، پوره توت‌فرنگی، لیمو', + price: 180000, + restaurantSlug: 'Theory', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ملو', + desc: 'هندوانه، شاتوت، سوئیت اند ساور', + price: 177000, + restaurantSlug: 'Theory', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس تی رد وانیل', + desc: 'چای ترش سرددم، زعفران، سیروپ وانیل', + price: 142000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ساندویچ بوقلمون', + desc: 'سینه بوقلمون، کاهو فرانسه، زیتون، ریحان ایتالیایی، سس پستو، گوجه خشک، پنیر خامه‌ای، پنیر موزارلا', + price: 476000, + restaurantSlug: 'Theory', + categoryTitle: 'ساندویچ سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1753185176937.png"], +}, +{ + title: 'اسموکی چیکن ', + desc: '150 گرم فیله مرغ دودی ', + price: 120000, + restaurantSlug: 'passata', + categoryTitle: 'تاپینگ بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760893752111.png"], +}, +{ + title: 'هات پرو ', + desc: 'پپرونی ، هالوپینو ، سس هالوپی ', + price: 140000, + restaurantSlug: 'passata', + categoryTitle: 'تاپینگ بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760893651025.png"], +}, +{ + title: 'استاف چیکن ', + desc: 'فیله مرغ با پنیر و سوِيیت چیلی', + price: 210000, + restaurantSlug: 'passata', + categoryTitle: 'تاپینگ بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760893974847.png"], +}, +{ + title: 'هات پرونی ', + desc: 'نان چیاباتا، پپرونی، بیکن بوقلمون، سس هالوپی، هالوپینو، وجه، پنیرسفید', + price: 370000, + restaurantSlug: 'passata', + categoryTitle: 'چیاباتا(سندویچ‌)', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760982156044.png"], +}, +{ + title: 'چیکن اسموکی ', + desc: 'نان چیاباتا، فیله مرغ دودی، پنیر و اسفناج، سويیت چیلی، پنیر گودا، وجه، سس باربیکی', + price: 390000, + restaurantSlug: 'passata', + categoryTitle: 'چیاباتا(سندویچ‌)', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760982559459.png"], +}, +{ + title: 'خامه و خردل ', + desc: 'پاستا تازه، سس خامه و خردل، سیر، قارچ بلانچ، پنیر پارمسان، مغز گردو ', + price: 355000, + restaurantSlug: 'passata', + categoryTitle: 'پاستاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760981298852.png"], +}, +{ + title: 'کرم ماشرومه ', + desc: 'پاستا تازه، سس ماشرومه، قارچ کلاسیک استایل، پنیر پارمسان، جز هندی', + price: 355000, + restaurantSlug: 'passata', + categoryTitle: 'پاستاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760981202234.png"], +}, +{ + title: 'چیز فتوچینی ', + desc: 'پاستا تازه، سس پنیر، قارچ بلانچ، پارمسان، پچد', + price: 375000, + restaurantSlug: 'passata', + categoryTitle: 'پاستاها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760981163990.png"], +}, +{ + title: 'اسپیرولینا پاستا ( روزهای شنبه و یکشنبه )', + desc: 'پاستای تازه، سس کرم اسپیرولینا، بلوبری، کاکتوس، مغز گردو کارامالایز', + price: 390000, + restaurantSlug: 'passata', + categoryTitle: 'Menu star (Only for special days)', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760982358410.png"], +}, +{ + title: 'پشن لایت ', + desc: 'بلو کارسایو اب سیب اب لیمو سودا', + price: 92000, + restaurantSlug: 'Moon', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد مدیترانه‌ای', + desc: '', + price: 257000, + restaurantSlug: 'Theory', + categoryTitle: 'سالاد و پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1753792542995.png"], +}, +{ + title: 'پنیر برشته', + desc: 'تخم مرغ، پنیر فتا، سبزی شوید', + price: 211000, + restaurantSlug: 'Theory', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1753793163992.png"], +}, +{ + title: 'ساندویچ استیک', + desc: 'گوشت راسته گوساله، سیب‌زمینی سرخ شده، پیاز کاراملی، روکولا، پنیر چدار، سس خردل عسل، نان چاباتا', + price: 524000, + restaurantSlug: 'Theory', + categoryTitle: 'ساندویچ گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'حمص', + desc: '', + price: 318000, + restaurantSlug: 'Theory', + categoryTitle: 'سالاد و پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1753795504991.png"], +}, +{ + title: 'چیکن رپ', + desc: '', + price: 256000, + restaurantSlug: 'Theory', + categoryTitle: 'ساندویچ گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1753793299396.png"], +}, +{ + title: 'نیمرو', + desc: '', + price: 175000, + restaurantSlug: 'Theory', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1753793605530.png"], +}, +{ + title: 'املت', + desc: '', + price: 185000, + restaurantSlug: 'Theory', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1753793659160.png"], +}, +{ + title: 'رست سیب‌زمینی و قارچ', + desc: 'رست سیب‌زمینی، سس قارچ', + price: 184000, + restaurantSlug: 'Theory', + categoryTitle: 'سالاد و پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رست سیب‌زمینی و بیکن', + desc: 'رست سیب‌زمینی، بیکن، پنیر چدار', + price: 271000, + restaurantSlug: 'Theory', + categoryTitle: 'سالاد و پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای سبز', + desc: '', + price: 68000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1754752902259.png"], +}, +{ + title: 'چای سبز گل سرخ', + desc: '', + price: 72000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1754752948593.png"], +}, +{ + title: 'چای سبز و گل یاسمن', + desc: '', + price: 72000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1754752987903.png"], +}, +{ + title: 'چای سبز لیمو', + desc: '', + price: 72000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1754753062762.png"], +}, +{ + title: 'چای سفید نخدی', + desc: '', + price: 72000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1754753229195.png"], +}, +{ + title: 'چای سفید مخملی', + desc: 'شیرین و ملایم', + price: 72000, + restaurantSlug: 'Moon', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1754753270649.png"], +}, +{ + title: 'میت درینک', + desc: 'سیروپ بلو کاراسائو، سیروپ نارگیل، آب انبه، آب پرتقال، آلوئه ورا، آبلیمو', + price: 147000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'بلک پشن', + desc: 'سیروپ کرن بری، سیروپ پشن فروت، آبلیمو، آب پرتقال، کربن فعال', + price: 125000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اوشن بلو', + desc: 'سیروپ بلو کاراسائو، سیروپ کرن بری، سیروپ نعنا، آبلیمو، نمک، سودا', + price: 120000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بارسرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'استمر', + desc: 'سیروپ وانیل، بادام درختی، شیر', + price: 100000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بار گرم بدون کافئین ', + isActive: false, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس ماچا توت فرنگی', + desc: 'ماچا شیر یخ پوره توت فرنگی سیروپ توت فرنگی', + price: 168000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1755436714685.png"], +}, +{ + title: 'ایس ماچا انبه', + desc: 'ماچا شیر یخ سیروپ انبه', + price: 136000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1755436648303.png"], +}, +{ + title: 'ایس ماچا', + desc: '', + price: 100000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ایس تی توت فرنگی', + desc: '', + price: 131000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1755436593841.png"], +}, +{ + title: 'ایس تی لیمو', + desc: '', + price: 88000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1755436507683.png"], +}, +{ + title: 'چیز فرایز مدیوم', + desc: '', + price: 190000, + restaurantSlug: 'foodcourt', + categoryTitle: 'پیش غذا.', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لونا', + desc: 'آب آلبالو +آب انبه+لیموتازه+سیروپ', + price: 145000, + restaurantSlug: 'foodcourt', + categoryTitle: 'نوشیدی های سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سالاد کلم', + desc: 'کلم،ذرت،ژامبون،ادویه مخصوص،سس مخصوص', + price: 60000, + restaurantSlug: 'yummyburger', + categoryTitle: 'پیش غذا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آیس پسته', + desc: '3 اسکوپ بستنی وانیل پسته ، موز خورد شده ', + price: 185000, + restaurantSlug: 'donat-factory', + categoryTitle: 'آیس بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سبله توت فرنگی', + desc: '', + price: 130000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1756992490158.png"], +}, +{ + title: 'اسپرسو 50/50', + desc: '', + price: 100000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1757173293195.png"], +}, +{ + title: 'مارشمالو چاکلت', + desc: '', + price: 105000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'بار گرم بدون کافئین ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای لته', + desc: 'شیر چای', + price: 67000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'دمنوش ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو ماکیاتو', + desc: 'لکه شیر اسپرسو', + price: 95000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رومانو ', + desc: 'اسپرسو لیمو ', + price: 95000, + restaurantSlug: 'cafe_meat', + categoryTitle: 'اسپرسو بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کوکی نیویورکی', + desc: '', + price: 73000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1766415350354.png"], +}, +{ + title: 'پامکین لاته', + desc: 'سیروپ کدو حلوایی / پیشنهاد میشه ', + price: 156000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1757439519150.png"], +}, +{ + title: 'ایس پامکین لاته', + desc: '', + price: 204000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی سرد', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1757439652703.png"], +}, +{ + title: 'نان سنگک سنتی', + desc: '', + price: 20000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'سرویس اضافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کشک اضافه', + desc: 'یک پیاله کوچک کشک غلیظ اعلا', + price: 20000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'سرویس اضافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نعنا داغ یا پیاز داغ ', + desc: 'یک پیاله کوچک نعنا داغ یا پیاز داغ اضافه', + price: 20000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'سرویس اضافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سبزی خوردن تازه', + desc: 'یک سبد سبزی خوردن تازه ', + price: 20000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'سرویس اضافه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیرانبه', + desc: 'شیرتازه روز ، 150 گرم میوه انبه ', + price: 90000, + restaurantSlug: 'donat-factory', + categoryTitle: 'ویتامینه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر نارگیل', + desc: 'شیر تازه پرچرب ، نارگیل 3 پیمانه ، بستنی نارگیل 1 اسکوپ ، بدون هیچگونه افزودنی', + price: 95000, + restaurantSlug: 'donat-factory', + categoryTitle: 'ویتامینه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اکلر قهوه کارامل', + desc: '', + price: 54000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: false, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1759326002631.png"], +}, +{ + title: 'استرابری کیس - Strawberry kiss', + desc: '', + price: 130000, + restaurantSlug: 'zhivan', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'افسون afsoon', + desc: '', + price: 130000, + restaurantSlug: 'zhivan', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'یناکولادا pina colada', + desc: '', + price: 135000, + restaurantSlug: 'zhivan', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: ' آب میوه طبیعی natural fruit juice', + desc: '', + price: 130000, + restaurantSlug: 'zhivan', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: ' پتر piter', + desc: '', + price: 110000, + restaurantSlug: 'zhivan', + categoryTitle: 'ماکتیل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چیز کیک شکلاتی', + desc: '', + price: 165000, + restaurantSlug: 'boote', + categoryTitle: 'کیک و دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1759837170128.png"], +}, +{ + title: 'تیرامیسو', + desc: '', + price: 274000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش به', + desc: 'چای به, چوب دارچین, زنجبیل تازه', + price: 152000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش گل گاو زبان', + desc: 'گل گاو زبان, به لیمو, بهارنارنج', + price: 158000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیب کیوی', + desc: '', + price: 55000, + restaurantSlug: 'passata', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760984798612.png"], +}, +{ + title: 'موهیتو', + desc: '', + price: 55000, + restaurantSlug: 'passata', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760985010771.png"], +}, +{ + title: 'استوایی', + desc: '', + price: 55000, + restaurantSlug: 'passata', + categoryTitle: 'نوشیدنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1760985092729.png"], +}, +{ + title: 'کوکو هات چاکلت', + desc: '', + price: 192000, + restaurantSlug: 'Theory', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای کرک', + desc: '', + price: 194000, + restaurantSlug: 'Theory', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسنس', + desc: 'آب انار، آب لبو, سماق', + price: 183000, + restaurantSlug: 'Theory', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش بری', + desc: 'ترکیب کرن بری, توت فرنگی و زرشک', + price: 166000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش انبه', + desc: 'لوندر, بابونه, انبه', + price: 168000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش سیب', + desc: 'سیب, هل و استویا', + price: 162000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک هویج گردو', + desc: '', + price: 135000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک سیب دارچین', + desc: '', + price: 135000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک کدو حلوایی', + desc: '', + price: 135000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کیک کشمش گردو', + desc: '', + price: 135000, + restaurantSlug: 'Theory', + categoryTitle: 'دسر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کلدبرو ۷۰/۳۰', + desc: '', + price: 160000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیروپ کارامل نمکی دست ساز', + desc: '', + price: 50000, + restaurantSlug: 'Theory', + categoryTitle: 'اضافه بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیروپ گاناش شکلات دست ساز', + desc: '', + price: 50000, + restaurantSlug: 'Theory', + categoryTitle: 'اضافه بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'سیروپ', + desc: 'نارگیل/ فندوق/ لوتوس/ وانیل', + price: 45000, + restaurantSlug: 'Theory', + categoryTitle: 'اضافه بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر بادام گیاهی', + desc: '', + price: 59000, + restaurantSlug: 'Theory', + categoryTitle: 'اضافه بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیر نارگیل', + desc: '', + price: 38000, + restaurantSlug: 'Theory', + categoryTitle: 'اضافه بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'تاپینگ خامه', + desc: '', + price: 48000, + restaurantSlug: 'Theory', + categoryTitle: 'اضافه بار', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پامکین لاته', + desc: 'پوره کدو حلوایی, اسپرسو 7030, شیر', + price: 218000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جینجر شات لبو', + desc: 'آب لبو, لیمو, زنجبیل', + price: 115000, + restaurantSlug: 'Theory', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جینجر شات پرتقال', + desc: 'آب پرتقال, لیمو, زنجبیل', + price: 115000, + restaurantSlug: 'Theory', + categoryTitle: 'ماکتل', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نیمرو بیکن (تند)', + desc: 'تخم مرغ، بیکن گوشت، هالوپین، دورچین به همراه نان', + price: 195000, + restaurantSlug: 'boote', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1765281700365.png"], +}, +{ + title: 'نیمرو بیف', + desc: 'تخم مرغ، گوشت رست بیف، پنیر پیتزا، دورچین به همراه نان', + price: 225000, + restaurantSlug: 'boote', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1765281612636.png"], +}, +{ + title: 'پرشین برک', + desc: 'انتخابی (املت ساده، نیمرو، سوسیس تخم مرغ) دورچین به همراه نان', + price: 175000, + restaurantSlug: 'boote', + categoryTitle: 'صبحانه', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'شیک موز پسته ', + desc: '4 اسکوپ بستنی وانیل ، موز تازه ، پودر پسته', + price: 180000, + restaurantSlug: 'donat-factory', + categoryTitle: 'شیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش آرامش', + desc: 'گل گاو زبان, سنبل الطیب, لیموعمانی', + price: 158000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'جوجه کباب سیخ چوبی', + desc: '۳۶۰ گرم فیله مرغ+برنج ایرانی ودورچین', + price: 350000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پای کدو حلوایی', + desc: '', + price: 95000, + restaurantSlug: 'Moon', + categoryTitle: 'پیستری', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1762604734494.png"], +}, +{ + title: 'خوراک جوجه ', + desc: '۳۶۰ گرم فیله مرغ +دورچین', + price: 250000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'غذاهای اصلی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دارک چاکلت', + desc: '', + price: 164000, + restaurantSlug: 'Theory', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای چاکلت', + desc: '', + price: 172000, + restaurantSlug: 'Theory', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ناتی چاکلت', + desc: '', + price: 164000, + restaurantSlug: 'Theory', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای کرک', + desc: 'چای کرک زعفرانی', + price: 80000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو', + desc: '', + price: 60000, + restaurantSlug: 'kolbe-setareh', + categoryTitle: 'نوشیدنی ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا سیر استیک', + desc: '', + price: 426000, + restaurantSlug: 'Moon', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا رست بیف', + desc: 'راسته گوساله 100گرم . پنیرمزرلا . سس خامه . و.... ', + price: 437000, + restaurantSlug: 'Moon', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا پولو', + desc: 'فیله مرغ 120 گرم . پنیر مزرلا . قارچ . سس مارینارا و...', + price: 270000, + restaurantSlug: 'Moon', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا میکس', + desc: 'فیله گوساله 40 گرم . فیله مرغ 60 گرم . قارچ . پنیرمزرلا . و....', + price: 391000, + restaurantSlug: 'Moon', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نان سیر ', + desc: '', + price: 195000, + restaurantSlug: 'Moon', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'اسپرسو دی کف', + desc: '', + price: 176000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'آمریکانو دی کف', + desc: '', + price: 176000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'V60 کلمبیا بیبی گیشا', + desc: '', + price: 258000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دمنوش آویشن', + desc: 'آویشن, زنجبیل, لیموعمانی, بهلیمو', + price: 155000, + restaurantSlug: 'Theory', + categoryTitle: 'چای و دمنوش', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'چای کرک', + desc: '', + price: 100000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماسالا', + desc: '', + price: 95000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پاور شات', + desc: 'اسپرسو و کره', + price: 135000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته لوتوس', + desc: '', + price: 210000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'لاته پسته', + desc: '', + price: 225000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'گلدن میلک', + desc: 'زرد چوبه و شیر انتی اکسیدان بالا ضد التهاب درمان درد و خشکی مفاصل', + price: 80000, + restaurantSlug: 'Moon', + categoryTitle: 'ایتم های بر پایه شیر', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پرشین لاته', + desc: 'قهوه . شیر .هل .کره پسته .گلاب . زعفران ', + price: 200000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'ماچا لاته', + desc: '', + price: 145000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'افوگاتو پسته', + desc: '', + price: 220000, + restaurantSlug: 'Moon', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'افوگاتو شکلات ', + desc: '', + price: 175000, + restaurantSlug: 'Moon', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'افوگاتو لوتوس', + desc: '', + price: 220000, + restaurantSlug: 'Moon', + categoryTitle: 'بستنی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا سزار', + desc: '', + price: 370000, + restaurantSlug: 'Moon', + categoryTitle: 'پیتزا', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'v60 اتیوپی وامنا', + desc: '', + price: 198000, + restaurantSlug: 'Theory', + categoryTitle: 'قهوه دمی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'رست نات چوبی نوتلا', + desc: 'یک عدد دونات رست شده همراه با شکلات نوتلا ', + price: 105000, + restaurantSlug: 'donat-factory', + categoryTitle: 'رست نات', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پک 4 عددی شکلات', + desc: '4 عدد دونات شکلات ', + price: 300000, + restaurantSlug: 'donat-factory', + categoryTitle: 'منوی اقتصادی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پک 4 عددی دارک', + desc: '4 عدد دونات دارک ', + price: 300000, + restaurantSlug: 'donat-factory', + categoryTitle: 'منوی اقتصادی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پک 4 عددی نوتلا ', + desc: '4 عدد دونات نوتلا ', + price: 350000, + restaurantSlug: 'donat-factory', + categoryTitle: 'منوی اقتصادی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پک خانواده ', + desc: '1 عدد دونات شکلات ، 1 عدد دونات نوتلا ، 1 عدد دونات لاولی ، 1 عدد دونات توت فرنگی', + price: 300000, + restaurantSlug: 'donat-factory', + categoryTitle: 'منوی اقتصادی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پک نوستالژی', + desc: '1 عدد دونات شکری ، 1 عدد دونات دارچین ، 1 عدد دونات هل ، 1 عدد دونات کنجد', + price: 245000, + restaurantSlug: 'donat-factory', + categoryTitle: 'منوی اقتصادی ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'دونات تخم مرغ شانسی کیندر', + desc: '1 عدد دونات شکلاتی همراه با ترافل ، 1 عدد دونات تخم مرغ شانسی کیندر', + price: 230000, + restaurantSlug: 'donat-factory', + categoryTitle: 'دونات اسپشیال ', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1765530634407.png"], +}, +{ + title: 'استیک میلانو ', + desc: '150گرم شنسل مرغ/150 گرم فیله گوساله/سس قارچ/دورچین سبزیجات وصیفی جات بخار پز/', + price: 1050000, + restaurantSlug: 'zhivan', + categoryTitle: 'استیک', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'امریکانو شیر عسلی', + desc: 'اسپرسو شیرعسلی اب جوش', + price: 170000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1765900043529.png"], +}, +{ + title: 'لاته عسل دارچین', + desc: 'اسپرسو عسل طبیعی دارچین شیر فوم شبر', + price: 189000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1765900091502.png"], +}, +{ + title: 'اسپنیش لته', + desc: 'اسپرسو شیر فوم شیر.شیرعسلی', + price: 189000, + restaurantSlug: 'Moon', + categoryTitle: 'قهوه ها', + isActive: true, + stock: 1, + stockDefault: 1, + images: ["https://dmenu.danakcorp.com/uploads/images/food/food_1765900157490.png"], +}, +{ + title: 'هات پسته', + desc: 'شیر کره پسته تکه های پسته', + price: 260000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'هات لوتوس ', + desc: 'کرم لوتوس شیر فوم شیر ', + price: 220000, + restaurantSlug: 'Moon', + categoryTitle: 'نوشیدنی گرم', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'پیتزا نیویورکی HOT', + desc: 'سس مخصوص مکزیکی , مرغ طعم دار شده, فلفل دلمه ای , فلفل هالوپینو ', + price: 580000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا ایتالیایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نیویورکی آمریکایی تک نفره HOT ', + desc: 'سس مخصوص مکزیکی , مرغ مزه دار شده , فلفل دلمه ای , فلفل هالوپینو ', + price: 505000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'نیویورکی آمریکایی دو نفره HOT', + desc: 'سس مخصوص مکزیکی , مرغ مزه دار شده , فلفل دلمه ای , فلفل هالوپینو ', + price: 705000, + restaurantSlug: 'zhivan', + categoryTitle: 'پیتزا امریکایی', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +{ + title: 'کارامل ماکیاتو ', + desc: 'شیر/ کارامل / قهوه ', + price: 175000, + restaurantSlug: 'zhivan', + categoryTitle: 'قهوه ', + isActive: true, + stock: 1, + stockDefault: 1, + images: [], +}, +]; \ No newline at end of file diff --git a/src/seeders/data/notification-preferences.data.ts b/src/seeders/data/notification-preferences.data.ts new file mode 100644 index 0000000..eb63bbf --- /dev/null +++ b/src/seeders/data/notification-preferences.data.ts @@ -0,0 +1,29 @@ +import { NotifChannelEnum, NotifTitleEnum } from '../../modules/notifications/interfaces/notification.interface'; + +export interface NotificationPreferenceData { + title: NotifTitleEnum; + channels: NotifChannelEnum[]; +} + +export const notificationPreferencesData: NotificationPreferenceData[] = [ + { + title: NotifTitleEnum.PAGER_CREATED, + channels: [NotifChannelEnum.SMS, NotifChannelEnum.PUSH, NotifChannelEnum.IN_APP], + }, + { + title: NotifTitleEnum.ORDER_CREATED, + channels: [NotifChannelEnum.SMS, NotifChannelEnum.PUSH, NotifChannelEnum.IN_APP], + }, + { + title: NotifTitleEnum.PAYMENT_SUCCESS, + channels: [NotifChannelEnum.SMS, NotifChannelEnum.PUSH, NotifChannelEnum.IN_APP], + }, + { + title: NotifTitleEnum.REVIEW_CREATED, + channels: [NotifChannelEnum.SMS, NotifChannelEnum.PUSH, NotifChannelEnum.IN_APP], + }, + { + title: NotifTitleEnum.ORDER_STATUS_CHANGED, + channels: [NotifChannelEnum.SMS, NotifChannelEnum.PUSH, NotifChannelEnum.IN_APP], + }, +]; diff --git a/src/seeders/data/payment-methods.data.ts b/src/seeders/data/payment-methods.data.ts new file mode 100644 index 0000000..673a1fc --- /dev/null +++ b/src/seeders/data/payment-methods.data.ts @@ -0,0 +1,35 @@ +import { PaymentMethodEnum, PaymentGatewayEnum } from '../../modules/payments/interface/payment'; + +export interface PaymentMethodData { + method: PaymentMethodEnum; + description: string; + enabled: boolean; + order: number; + gateway: PaymentGatewayEnum | null; + merchantId?: string; +} + +export const paymentMethodsData: PaymentMethodData[] = [ + { + method: PaymentMethodEnum.Online, + description: 'درگاه پرداخت زرین‌پال', + enabled: true, + order: 1, + gateway: PaymentGatewayEnum.ZarinPal, + merchantId: 'b6f55bd0-6eae-4045-aeb8-07d084fa8f73', + }, + { + method: PaymentMethodEnum.Cash, + description: 'پرداخت نقدی', + enabled: true, + order: 2, + gateway: null, + }, + { + method: PaymentMethodEnum.Wallet, + description: 'پرداخت از کیف پول', + enabled: true, + order: 3, + gateway: null, + }, +]; diff --git a/src/seeders/data/permissions.data.ts b/src/seeders/data/permissions.data.ts new file mode 100644 index 0000000..286f078 --- /dev/null +++ b/src/seeders/data/permissions.data.ts @@ -0,0 +1,10 @@ +import { Permission, PermissionTitles } from '../../common/enums/permission.enum'; + + + +export const getPermissionsData = () => { + return Object.values(Permission).map(name => ({ + name, + title: PermissionTitles[name], + })); +}; diff --git a/src/seeders/data/restaurants.data.ts b/src/seeders/data/restaurants.data.ts new file mode 100644 index 0000000..3fa3f42 --- /dev/null +++ b/src/seeders/data/restaurants.data.ts @@ -0,0 +1,919 @@ +import { PlanEnum } from 'src/modules/restaurants/interface/plan.interface'; + +export interface RestaurantData { + name: string; + slug: string; + domain: string; + isActive: boolean; + phone: string; + logo?: string; + score: { + purchaseAmount: string; + purchaseScore: string; + scoreAmount: string; + scoreCredit: string; + birthdayScore: string; + registerScore: string; + marriageDateScore: string; + referrerScore: string; + }; + plan: PlanEnum; + subscriptionId: string; +} + +export const restaurantsData: RestaurantData[] = [ + { + name: 'ژیوان', + slug: 'zhivan', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/zhivan', + isActive: true, + phone: '', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1638870352717_61a3661f37a0d33354a6d210.png', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_zhivan_001', + }, + { + name: 'سپنتا', + slug: 'sepanta', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/sepanta', + isActive: true, + phone: '', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1641199914860_61d2b72b2e8bd97126a70b5f.png', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_sepanta_001', + }, + { + name: 'اکافه', + slug: 'ocafe', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/ocafe', + isActive: true, + phone: '', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1643274757715_61e509141601c7c7d9141989.png', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_ocafe_001', + }, + { + name: 'رستوران ایزی دیزی', + slug: 'easydizy', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/easydizy', + isActive: true, + phone: '', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1644324825827_6202562b1ee4b0270db4ae58.png', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_easydizy_001', + }, + { + name: 'کافه رستوران بوته', + slug: 'boote', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/boote', + isActive: true, + phone: '', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1644655737806_62076fa71ee4b0270db4c32d.png', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Premium, + subscriptionId: 'sub_seed_boote_001', + }, + { + name: 'کافه لایف', + slug: 'life', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/life', + isActive: true, + phone: '', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1644838482386_6207b1211ee4b0270db4c4ae.png', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_life_001', + }, + { + name: 'ninja park', + slug: 'foodcourt', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/foodcourt', + isActive: true, + phone: '', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1725286063770_6210b063adf126141b26173d.png', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_foodcourt_001', + }, + { + name: 'هیزم', + slug: 'banicho', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/banicho', + isActive: true, + phone: '', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1699722686770_622dccbda03b80e0a44f1d3a.png', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_banicho_001', + }, + { + name: 'بلک شوگر', + slug: 'blacksugar', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/blacksugar', + isActive: true, + phone: '', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1647809564910_62378f6bc1bb048b321cd949.png', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_blacksugar_001', + }, + { + name: 'پیانو', + slug: 'Piano', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/Piano', + isActive: true, + phone: '', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1652476386948_627e3d972353df2fe6512c8f.png', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_Piano_001', + }, + { + name: 'سعادت', + slug: 'saadat', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/saadat', + isActive: true, + phone: '', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1655296406771_62a9cff7128ed6fd013332dc.png', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_saadat_001', + }, + { + name: 'هفت خوان', + slug: 'Haftkhan', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/Haftkhan', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_Haftkhan_001', + }, + { + name: 'سفره خانه و باغ رستوران هفت خوان', + slug: 'Haaft khaan', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1657711159036_62cea8d47400250986c70a07.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/Haaft khaan', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_Haaft khaan_001', + }, + { + name: '1972', + slug: '1972Cafe', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1658666648415_62dd3bf3faacb066e1206279.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/1972Cafe', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_1972Cafe_001', + }, + { + name: 'لانژ', + slug: 'lounge1', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1659109491707_62e3ff5e96be484852cba3c3.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/lounge1', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_lounge1_001', + }, + { + name: 'کافه رستوران هنر', + slug: 'Honar', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1662296508840_63131c3d96be484852d0a9ed.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/Honar', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_Honar_001', + }, + { + name: 'خانه وانیلی', + slug: 'Vanilla', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1662977478952_631f0484e410c5322752c409.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/Vanilla', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_Vanilla_001', + }, + { + name: '1972', + slug: '1972', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1672070842973_63a9c15f82d7fc8d726b8b2f.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/1972', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_1972_001', + }, + { + name: 'نارسیس', + slug: 'Narcis', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/Narcis', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_Narcis_001', + }, + { + name: 'کافه سپنج', + slug: 'cafe_sepanj', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1683113201780_6450aa9a98ff3c7414414230.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/cafe_sepanj', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_cafe_sepanj_001', + }, + { + name: 'مونیخ', + slug: 'monikh', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1737820250944_6450d97a98ff3c7414414999.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/monikh', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_monikh_001', + }, + { + name: 'اُ کافه', + slug: 'o-cafe', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1684406222541_6465ff4d98ff3c741442d56a.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/o-cafe', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_o-cafe_001', + }, + { + name: 'یامی برگر', + slug: 'yummyburger', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1689594902563_64b3d17d98ff3c741448cccd.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/yummyburger', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_yummyburger_001', + }, + { + name: 'کافه رستوران مهتاب', + slug: 'mahtabgarden', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1689965802684_64bad3b698ff3c741449521e.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/mahtabgarden', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_mahtabgarden_001', + }, + { + name: 'dream', + slug: 'dream', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1692001432499_64d9e2b979f54f6403d7e0be.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/dream', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_dream_001', + }, + { + name: 'لانکا', + slug: 'lanka', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1695032652234_650823be59383e8d7550ccb5.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/lanka', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_lanka_001', + }, + { + name: '123', + slug: '123', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1696240982921_651a7ffe59383e8d7551eebf.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/123', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_123_001', + }, + { + name: 'لیان', + slug: 'LIAN', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1701608905866_651ad03159383e8d7551f3be.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/LIAN', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_LIAN_001', + }, + { + name: 'کافه رستوران لانکا', + slug: 'Lanka', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/Lanka', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_Lanka_001', + }, + { + name: 'میلکو پلاس', + slug: 'milco-pilco', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1710166978715_65ef0b1d3ad722005756bb0f.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/milco-pilco', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_milco-pilco_001', + }, + { + name: 'لاما', + slug: 'lama', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1710333176537_65ef1a093ad722005756bc8e.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/lama', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_lama_001', + }, + { + name: 'کاج', + slug: 'kaj.foodhall', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1720963586174_6693d0cc136cc10070469510.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/kaj.foodhall', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_kaj.foodhall_001', + }, + { + name: 'حمید', + slug: 'hamid', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1729929522774_671c9c58c3c0100063e4d1a9.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/hamid', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_hamid_001', + }, + { + name: 'دونات فکتوری', + slug: 'donat-factory', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1731152090639_672f3c9bc3c0100063e6a526.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/donat-factory', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_donat-factory_001', + }, + { + name: 'نارسیس', + slug: 'narsis', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1731314427492_6731c2b9c3c0100063e6e2ae.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/narsis', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_narsis_001', + }, + { + name: 'تئوری', + slug: 'Theory', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1736665730887_677ab9f9a4463c0057e3ac5d.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/Theory', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_Theory_001', + }, + { + name: 'testmenu', + slug: 'testmenu', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/testmenu', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_testmenu_001', + }, + { + name: 'ahr_cafe', + slug: 'ahr_cofe', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1738074249830_6798e6aabd2ce20057144cfb.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/ahr_cofe', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_ahr_cofe_001', + }, + { + name: 'cafe_meat', + slug: 'cafe_meat', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1739868881926_679b7fe7bd2ce200571498a8.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/cafe_meat', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_cafe_meat_001', + }, + { + name: 'پیتزا خانواده', + slug: 'KFP', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1740470240551_67bd773f536282006220de43.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/KFP', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_KFP_001', + }, + { + name: 'پیتزا خانواده ', + slug: 'KFP ', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/KFP ', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_KFP _001', + }, + { + name: 'Themoon', + slug: 'Moon', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1743347876393_67e93f9e536282006224c40d.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/Moon', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_Moon_001', + }, + { + name: 'زپارتی', + slug: 'zparty', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/zparty', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_zparty_001', + }, + { + name: 'پاساتا پلاس', + slug: 'passata', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1749534426675_6847c5f3f114460057d617bf.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/passata', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_passata_001', + }, + { + name: 'کلبه ستاره', + slug: 'kolbe-setareh', + logo: 'https://dmenu.danakcorp.com/uploads/images/store/store_1751196871890_686100dd9086300011bdf7d0.png', + domain: 'https://dmenu-plus-front.dev.danakcorp.com/kolbe-setareh', + isActive: true, + phone: '', + score: { + purchaseAmount: '100000', + purchaseScore: '0', + scoreAmount: '0', + scoreCredit: '0', + birthdayScore: '0', + registerScore: '0', + marriageDateScore: '0', + referrerScore: '0', + }, + plan: PlanEnum.Base, + subscriptionId: 'sub_seed_kolbe-setareh_001', + }, +]; diff --git a/src/seeders/data/roles.data.ts b/src/seeders/data/roles.data.ts new file mode 100644 index 0000000..312cae4 --- /dev/null +++ b/src/seeders/data/roles.data.ts @@ -0,0 +1,37 @@ +import { Permission } from '../../common/enums/permission.enum'; + +export interface RoleConfig { + name: string; + isSystem: boolean; + permissionFilter: (permissionName: Permission) => boolean; +} + +export const rolesData: RoleConfig[] = [ + { + name: 'مدیر (پلن پایه)', + isSystem: false, + permissionFilter: (name: Permission) => + name === Permission.MANAGE_FOODS || + name === Permission.MANAGE_CATEGORIES || + name === Permission.MANAGE_SCHEDULES || + name === Permission.MANAGE_PAGER || + name === Permission.MANAGE_CONTACTS || + name === Permission.MANAGE_ROLES || + + name === Permission.MANAGE_SETTINGS || + name === Permission.MANAGE_ADMINS || + name == Permission.VIEW_REPORTS || + name == Permission.UPDATE_RESTAURANT + }, + { + name: 'مدیر ( پلن ویژه)', + isSystem: false, + permissionFilter: () => true, // All permissions for restaurant role + }, + { + name: 'حسابدار ', + isSystem: false, + permissionFilter: (name: Permission) => + name === Permission.VIEW_REPORTS || name === Permission.MANAGE_PAYMENTS || name === Permission.MANAGE_ORDERS, + }, +]; diff --git a/src/seeders/data/schedules.data.ts b/src/seeders/data/schedules.data.ts new file mode 100644 index 0000000..2473c35 --- /dev/null +++ b/src/seeders/data/schedules.data.ts @@ -0,0 +1,10 @@ +export interface TimeSlot { + openTime: string; + closeTime: string; +} + +export const timeSlots: TimeSlot[] = [ + { openTime: '08:00', closeTime: '11:00' }, // Breakfast + { openTime: '12:00', closeTime: '15:00' }, // Lunch + { openTime: '18:00', closeTime: '23:00' }, // Dinner +]; diff --git a/src/seeders/data/user-addresses.data.ts b/src/seeders/data/user-addresses.data.ts new file mode 100644 index 0000000..c5404da --- /dev/null +++ b/src/seeders/data/user-addresses.data.ts @@ -0,0 +1,63 @@ +export interface UserAddressData { + userPhone: string; + title: string; + address: string; + city: string; + province?: string; + postalCode?: string; + latitude: number; + longitude: number; + phone?: string; + isDefault: boolean; +} + +export const userAddressesData: UserAddressData[] = [ + { + userPhone: '09362532122', + title: 'خانه', + address: 'خیابان ولیعصر، پلاک 123', + city: 'تهران', + province: 'تهران', + postalCode: '1234567890', + latitude: 35.6892, + longitude: 51.389, + phone: '09362532122', + isDefault: true, + }, + { + userPhone: '09185290775', + title: 'خانه', + address: 'خیابان انقلاب، پلاک 456', + city: 'تهران', + province: 'تهران', + postalCode: '1234567891', + latitude: 35.69, + longitude: 51.39, + phone: '09185290775', + isDefault: true, + }, + { + userPhone: '09129283395', + title: 'خانه', + address: 'خیابان آزادی، پلاک 789', + city: 'تهران', + province: 'تهران', + postalCode: '1234567892', + latitude: 35.691, + longitude: 51.391, + phone: '09129283395', + isDefault: true, + }, + { + userPhone: '09184317567', + title: 'خانه', + address: 'خیابان جمهوری، پلاک 321', + city: 'تهران', + province: 'تهران', + postalCode: '1234567893', + latitude: 35.692, + longitude: 51.392, + phone: '09184317567', + isDefault: true, + }, +]; diff --git a/src/seeders/data/users.data.ts b/src/seeders/data/users.data.ts new file mode 100644 index 0000000..a135438 --- /dev/null +++ b/src/seeders/data/users.data.ts @@ -0,0 +1,63 @@ +export interface UserData { + phone: string; + firstName: string; + lastName: string; + restaurantSlug: string; + birthDate: string; + marriageDate: string; + isActive: boolean; + gender: boolean; + wallet: number; + points: number; +} + +export const usersData: UserData[] = [ + { + phone: '09362532122', + firstName: 'مرتضی', + lastName: 'مرتضایی', + restaurantSlug: 'zhivan', + birthDate: '1990-01-01', + marriageDate: '2015-01-01', + isActive: true, + gender: true, + wallet: 250000, + points: 100, + }, + { + phone: '09185290775', + firstName: 'حمید', + lastName: 'ضرغامی', + restaurantSlug: 'boote', + birthDate: '1992-01-01', + marriageDate: '2017-01-01', + isActive: true, + gender: true, + wallet: 250000, + points: 100, + }, + { + phone: '09129283395', + firstName: 'مهرداد', + lastName: 'مظفری', + restaurantSlug: 'zhivan', + birthDate: '1988-01-01', + marriageDate: '2014-01-01', + isActive: true, + gender: true, + wallet: 250000, + points: 100, + }, + { + phone: '09184317567', + firstName: 'مارال', + lastName: 'صادقی', + restaurantSlug: 'boote', + birthDate: '1995-01-01', + marriageDate: '2020-01-01', + isActive: true, + gender: false, + wallet: 250000, + points: 100, + }, +]; diff --git a/src/seeders/delivery-methods.seeder.ts b/src/seeders/delivery-methods.seeder.ts new file mode 100644 index 0000000..8970e9c --- /dev/null +++ b/src/seeders/delivery-methods.seeder.ts @@ -0,0 +1,52 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Delivery } from '../modules/delivery/entities/delivery.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import { deliveryMethodsData } from './data/delivery-methods.data'; +import { DeliveryFeeTypeEnum } from 'src/modules/delivery/interface/delivery'; + +export class DeliveryMethodsSeeder { + async run(em: EntityManager, restaurants: Restaurant[]): Promise { + for (const restaurant of restaurants) { + if (!restaurant) continue; + + for (const methodData of deliveryMethodsData) { + const existing = await em.findOne(Delivery, { + restaurant: { id: restaurant.id }, + method: methodData.method, + }); + + if (!existing) { + const delivery = em.create(Delivery, { + restaurant, + method: methodData.method, + description: methodData.description, + deliveryFee: methodData.deliveryFee, + minOrderPrice: methodData.minOrderPrice, + enabled: methodData.enabled, + order: methodData.order, + deliveryFeeType: DeliveryFeeTypeEnum.FIXED, + perKilometerFee: null, + distanceBasedMinCost: null, + }); + em.persist(delivery); + } else { + // Update existing delivery method if needed + if ( + existing.description !== methodData.description || + existing.deliveryFee !== methodData.deliveryFee || + existing.minOrderPrice !== methodData.minOrderPrice || + existing.order !== methodData.order + ) { + existing.description = methodData.description; + existing.deliveryFee = methodData.deliveryFee; + existing.minOrderPrice = methodData.minOrderPrice; + existing.order = methodData.order; + em.persist(existing); + } + } + } + } + + await em.flush(); + } +} diff --git a/src/seeders/foods.seeder.ts b/src/seeders/foods.seeder.ts new file mode 100644 index 0000000..c2a652a --- /dev/null +++ b/src/seeders/foods.seeder.ts @@ -0,0 +1,73 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Food } from '../modules/foods/entities/food.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import type { Category } from '../modules/foods/entities/category.entity'; +import { MealType } from '../modules/foods/interface/food.interface'; +import { foodsData } from './data/foods.data'; + +export class FoodsSeeder { + async run( + em: EntityManager, + restaurantsMap: Map, + categoriesMap: Map, + ): Promise { + for (const foodData of foodsData) { + const restaurant = restaurantsMap.get(foodData.restaurantSlug); + const key = `${foodData.restaurantSlug}-${foodData.categoryTitle}`; + + const normalize = (s: string) => (s || '').replace(/\s+/g, ' ').trim(); + + let category = categoriesMap.get(key); + + // Fallback: try to find category by normalized title if exact key not found + if (!category) { + for (const [k, v] of categoriesMap.entries()) { + const parts = k.split('-'); + const kSlug = parts[0]; + const kTitle = parts.slice(1).join('-'); + if (kSlug === foodData.restaurantSlug && normalize(kTitle) === normalize(foodData.categoryTitle)) { + category = v; + break; + } + } + } + + if (!restaurant || !category) { + console.warn( + `Skipping food \"${foodData.title}\" — missing ${!restaurant ? 'restaurant' : 'category'} for key ${key}`, + ); + continue; + } + + const existing = await em.findOne(Food, { + title: foodData.title, + restaurant, + }); + + if (!existing) { + const food = em.create(Food, { + title: foodData.title, + desc: foodData.desc, + content: foodData.content, + price: foodData.price, + restaurant, + category, + isActive: foodData.isActive, + // new fields on Food entity + weekDays: foodData.weekDays ?? [0, 1, 2, 3, 4, 5, 6], + mealTypes: foodData.mealTypes ?? [MealType.BREAKFAST, MealType.LUNCH, MealType.DINNER, MealType.SNACK], + discount: foodData.discount ?? 0, + score: foodData.score ?? 0, + inPlaceServe: true, + pickupServe: true, + images: foodData.images, + isSpecialOffer: foodData.isSpecialOffer ?? false, + }); + + em.persist(food); + } + } + + await em.flush(); + } +} diff --git a/src/seeders/index.ts b/src/seeders/index.ts new file mode 100644 index 0000000..974d557 --- /dev/null +++ b/src/seeders/index.ts @@ -0,0 +1,4 @@ +import { DatabaseSeeder } from './DatabaseSeeder'; + +export { DatabaseSeeder }; +export default DatabaseSeeder; diff --git a/src/seeders/inventory.seeder.ts b/src/seeders/inventory.seeder.ts new file mode 100644 index 0000000..716715e --- /dev/null +++ b/src/seeders/inventory.seeder.ts @@ -0,0 +1,29 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Food } from '../modules/foods/entities/food.entity'; +import { Inventory } from '../modules/inventory/entities/inventory.entity'; + +export class InventorySeeder { + async run(em: EntityManager): Promise { + const foods = await em.find(Food, {}); + + for (const food of foods) { + // Check if inventory already exists for this food + const existingInventory = await em.findOne(Inventory, { + food: { id: food.id }, + }); + + if (!existingInventory) { + const inventory = em.create(Inventory, { + food, + totalStock: 50, + availableStock: 50, + }); + + em.persist(inventory); + } + } + + await em.flush(); + } +} + diff --git a/src/seeders/notification-preferences.seeder.ts b/src/seeders/notification-preferences.seeder.ts new file mode 100644 index 0000000..0791d7e --- /dev/null +++ b/src/seeders/notification-preferences.seeder.ts @@ -0,0 +1,36 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { NotificationPreference } from '../modules/notifications/entities/notification-preference.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import { notificationPreferencesData } from './data/notification-preferences.data'; + +export class NotificationPreferencesSeeder { + async run(em: EntityManager, restaurants: Restaurant[]): Promise { + for (const restaurant of restaurants) { + if (!restaurant) continue; + + for (const preferenceData of notificationPreferencesData) { + const existing = await em.findOne(NotificationPreference, { + restaurant: { id: restaurant.id }, + title: preferenceData.title, + }); + + if (!existing) { + const preference = em.create(NotificationPreference, { + restaurant, + title: preferenceData.title, + channels: preferenceData.channels, + }); + em.persist(preference); + } else { + // Update existing preference if notification type changed + if (existing.channels.length !== preferenceData.channels.length) { + existing.channels = preferenceData.channels; + em.persist(existing); + } + } + } + } + + await em.flush(); + } +} diff --git a/src/seeders/notifications.seeder.ts b/src/seeders/notifications.seeder.ts new file mode 100644 index 0000000..33b97e0 --- /dev/null +++ b/src/seeders/notifications.seeder.ts @@ -0,0 +1,68 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Notification } from '../modules/notifications/entities/notification.entity'; +import { Admin } from '../modules/admin/entities/admin.entity'; +import { User } from '../modules/users/entities/user.entity'; +import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import { NotifTitleEnum } from '../modules/notifications/interfaces/notification.interface'; + +export class NotificationsSeeder { + /** + * Seeds notifications for all admins and users for every restaurant. + * Ensures up to 33 notifications exist per (restaurant, admin) and (restaurant, user). + */ + async run(em: EntityManager): Promise { + const restaurants = await em.find(Restaurant, {}); + const admins = await em.find(Admin, {}); + const users = await em.find(User, {}); + + const titles = Object.values(NotifTitleEnum); + + for (const restaurant of restaurants) { + if (!restaurant) continue; + + // Admin notifications + for (const admin of admins) { + if (!admin) continue; + + const existingCount = await em.count(Notification, { + restaurant: { id: restaurant.id }, + admin: { id: admin.id }, + }); + + const toCreate = Math.max(0, 33 - (existingCount || 0)); + for (let i = 0; i < toCreate; i++) { + const notif = em.create(Notification, { + restaurant, + admin, + title: titles[i % titles.length] as NotifTitleEnum, + content: `Seeded notification ${i + 1} for admin ${admin.id} at ${restaurant.slug}`, + }); + em.persist(notif); + } + } + + // User notifications + for (const user of users) { + if (!user) continue; + + const existingCount = await em.count(Notification, { + restaurant: { id: restaurant.id }, + user: { id: user.id }, + }); + + const toCreate = Math.max(0, 33 - (existingCount || 0)); + for (let i = 0; i < toCreate; i++) { + const notif = em.create(Notification, { + restaurant, + user, + title: titles[i % titles.length] as NotifTitleEnum, + content: `Seeded notification ${i + 1} for user ${user.id} at ${restaurant.slug}`, + }); + em.persist(notif); + } + } + } + + await em.flush(); + } +} diff --git a/src/seeders/payment-methods.seeder.ts b/src/seeders/payment-methods.seeder.ts new file mode 100644 index 0000000..1765ce0 --- /dev/null +++ b/src/seeders/payment-methods.seeder.ts @@ -0,0 +1,52 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { PaymentMethod } from '../modules/payments/entities/payment-method.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import { paymentMethodsData } from './data/payment-methods.data'; + +export class PaymentMethodsSeeder { + async run(em: EntityManager, restaurants: Restaurant[]): Promise { + for (const restaurant of restaurants) { + if (!restaurant) continue; + + for (const methodData of paymentMethodsData) { + const existing = await em.findOne(PaymentMethod, { + restaurant: { id: restaurant.id }, + method: methodData.method, + }); + + if (!existing) { + const paymentMethod = em.create(PaymentMethod, { + restaurant, + method: methodData.method, + description: methodData.description, + enabled: methodData.enabled, + order: methodData.order, + gateway: methodData.gateway, + merchantId: methodData.merchantId, + }); + em.persist(paymentMethod); + } else { + // Update existing payment method if needed + if ( + existing.description !== methodData.description || + existing.enabled !== methodData.enabled || + existing.order !== methodData.order + ) { + existing.description = methodData.description; + existing.enabled = methodData.enabled; + existing.order = methodData.order; + if (methodData.gateway !== undefined) { + existing.gateway = methodData.gateway; + } + if (methodData.merchantId !== undefined) { + existing.merchantId = methodData.merchantId; + } + em.persist(existing); + } + } + } + } + + await em.flush(); + } +} diff --git a/src/seeders/permissions.seeder.ts b/src/seeders/permissions.seeder.ts new file mode 100644 index 0000000..5db378d --- /dev/null +++ b/src/seeders/permissions.seeder.ts @@ -0,0 +1,28 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Permission as PermissionEntity } from '../modules/roles/entities/permission.entity'; +import { getPermissionsData } from './data/permissions.data'; + +export class PermissionsSeeder { + async run(em: EntityManager): Promise { + const permissions = getPermissionsData(); + const createdPermissions: PermissionEntity[] = []; + + for (const permData of permissions) { + let permission = await em.findOne(PermissionEntity, { name: permData.name }); + if (!permission) { + permission = em.create(PermissionEntity, permData); + em.persist(permission); + } else { + // Update existing permission's title if it changed + if (permission.title !== permData.title) { + permission.title = permData.title; + em.persist(permission); + } + } + createdPermissions.push(permission); + } + + await em.flush(); + return createdPermissions; + } +} diff --git a/src/seeders/restaurants.seeder.ts b/src/seeders/restaurants.seeder.ts new file mode 100644 index 0000000..cadd9bb --- /dev/null +++ b/src/seeders/restaurants.seeder.ts @@ -0,0 +1,26 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import { restaurantsData } from './data/restaurants.data'; + +export class RestaurantsSeeder { + async run(em: EntityManager): Promise> { + const restaurantsMap = new Map(); + + for (const restaurantData of restaurantsData) { + let restaurant = await em.findOne(Restaurant, { slug: restaurantData.slug }); + if (!restaurant) { + restaurant = em.create(Restaurant, { + ...restaurantData, + subscriptionStartDate: new Date('2026-01-01'), + subscriptionEndDate: new Date('2026-01-07'), + isActive: true, + }); + em.persist(restaurant); + } + restaurantsMap.set(restaurantData.slug, restaurant); + } + + await em.flush(); + return restaurantsMap; + } +} diff --git a/src/seeders/roles.seeder.ts b/src/seeders/roles.seeder.ts new file mode 100644 index 0000000..3f07cb5 --- /dev/null +++ b/src/seeders/roles.seeder.ts @@ -0,0 +1,35 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Role } from '../modules/roles/entities/role.entity'; +import type { Permission } from '../common/enums/permission.enum'; +import type { Permission as PermissionEntity } from '../modules/roles/entities/permission.entity'; +import { rolesData } from './data/roles.data'; + +export class RolesSeeder { + async run(em: EntityManager, permissions: PermissionEntity[]): Promise> { + const rolesMap = new Map(); + + for (const roleConfig of rolesData) { + let role = await em.findOne(Role, { name: roleConfig.name }); + if (!role) { + role = em.create(Role, { + name: roleConfig.name, + isSystem: true, + }); + + // Add permissions based on role configuration + // TypeScript knows role is not null here because we just created it + const newRole = role; + // Use the permission filter for all roles + const filteredPermissions = permissions.filter(p => roleConfig.permissionFilter(p.name as Permission)); + filteredPermissions.forEach(p => newRole.permissions.add(p)); + + em.persist(newRole); + } + // Always add to map, whether existing or newly created + rolesMap.set(roleConfig.name, role); + } + + await em.flush(); + return rolesMap; + } +} diff --git a/src/seeders/schedules.seeder.ts b/src/seeders/schedules.seeder.ts new file mode 100644 index 0000000..dd72389 --- /dev/null +++ b/src/seeders/schedules.seeder.ts @@ -0,0 +1,38 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Schedule } from '../modules/restaurants/entities/schedule.entity'; +import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import { timeSlots } from './data/schedules.data'; + +export class SchedulesSeeder { + async run(em: EntityManager, restaurants: Restaurant[]): Promise { + for (const restaurant of restaurants) { + if (!restaurant) continue; + + // Create schedules for each day (0 = Sunday, 6 = Saturday) + for (let weekDay = 0; weekDay <= 6; weekDay++) { + // Create 3 schedules per day + for (const timeSlot of timeSlots) { + const existing = await em.findOne(Schedule, { + restId: restaurant.id, + weekDay, + openTime: timeSlot.openTime, + closeTime: timeSlot.closeTime, + }); + + if (!existing) { + const schedule = em.create(Schedule, { + restId: restaurant.id, + weekDay, + openTime: timeSlot.openTime, + closeTime: timeSlot.closeTime, + isActive: true, + }); + em.persist(schedule); + } + } + } + } + + await em.flush(); + } +} diff --git a/src/seeders/user-wallets.seeder.ts b/src/seeders/user-wallets.seeder.ts new file mode 100644 index 0000000..068afd1 --- /dev/null +++ b/src/seeders/user-wallets.seeder.ts @@ -0,0 +1,36 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { User } from '../modules/users/entities/user.entity'; +import { Restaurant } from '../modules/restaurants/entities/restaurant.entity'; +import { WalletTransaction } from '../modules/users/entities/wallet-transaction.entity'; +import { WalletTransactionReason, WalletTransactionType } from 'src/modules/users/interface/wallet'; + +export class UserWalletsSeeder { + async run(em: EntityManager): Promise { + const users = await em.find(User, {}); + const restaurants = await em.find(Restaurant, {}); + + for (const user of users) { + for (const restaurant of restaurants) { + // Check if wallet already exists for this user-restaurant combination + const existingWallet = await em.findOne(WalletTransaction, { + user: { id: user.id }, + restaurant: { id: restaurant.id }, + }); + + if (!existingWallet) { + const wallet = em.create(WalletTransaction, { + user, + restaurant, + balance: 150000000, + amount: 150000000, + type: WalletTransactionType.CREDIT, + reason: WalletTransactionReason.DEPOSIT, + }); + em.persist(wallet); + } + } + } + + await em.flush(); + } +} diff --git a/src/seeders/users.seeder.ts b/src/seeders/users.seeder.ts new file mode 100644 index 0000000..0cb66b2 --- /dev/null +++ b/src/seeders/users.seeder.ts @@ -0,0 +1,78 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { User } from '../modules/users/entities/user.entity'; +import { UserAddress } from '../modules/users/entities/user-address.entity'; +import { usersData } from './data/users.data'; +import { userAddressesData } from './data/user-addresses.data'; +import { normalizePhone } from '../modules/utils/phone.util'; + +export class UsersSeeder { + async run(em: EntityManager): Promise> { + const usersMap = new Map(); + + // Create users + for (const userData of usersData) { + const normalizedPhone = normalizePhone(userData.phone); + let user = await em.findOne(User, { phone: normalizedPhone }); + if (!user) { + user = em.create(User, { + phone: normalizedPhone, // Use normalized phone + firstName: userData.firstName, + lastName: userData.lastName, + birthDate: new Date(userData.birthDate), + marriageDate: new Date(userData.marriageDate), + isActive: userData.isActive, + gender: userData.gender, + }); + em.persist(user); + } + usersMap.set(normalizedPhone, user); // Use normalized phone as key + } + + await em.flush(); + + // Create addresses for users + for (const addressData of userAddressesData) { + const normalizedPhone = normalizePhone(addressData.userPhone); + const user = usersMap.get(normalizedPhone); + if (!user) continue; + + // Check if address already exists for this user + const existingAddress = await em.findOne(UserAddress, { + user: { id: user.id }, + title: addressData.title, + address: addressData.address, + }); + + if (!existingAddress) { + // If setting as default, unset other default addresses for this user + if (addressData.isDefault) { + const existingDefaultAddresses = await em.find(UserAddress, { + user: { id: user.id }, + isDefault: true, + }); + for (const defaultAddress of existingDefaultAddresses) { + defaultAddress.isDefault = false; + em.persist(defaultAddress); + } + } + + const address = em.create(UserAddress, { + user, + title: addressData.title, + address: addressData.address, + city: addressData.city, + province: addressData.province, + postalCode: addressData.postalCode, + latitude: addressData.latitude, + longitude: addressData.longitude, + phone: addressData.phone, + isDefault: addressData.isDefault, + }); + em.persist(address); + } + } + + await em.flush(); + return usersMap; + } +} diff --git a/test-notifications-socket.html b/test-notifications-socket.html new file mode 100644 index 0000000..6e7defa --- /dev/null +++ b/test-notifications-socket.html @@ -0,0 +1,561 @@ + + + + + + Notifications Socket.IO Test + + + + +
+
+

🔔 Notifications Socket.IO Test Client

+

Test real-time admin notifications

+
+ +
+ +
+

Connection

+
+ + +
+
+ + + Enter JWT token for admin authentication. Restaurant ID will be extracted from token. +
+
+ + +
+
Status: Disconnected
+
+ + +
+

Get Notifications

+
+ + + Number of notifications to retrieve (default: 50) +
+
+ +
+
+ + +
+

Notifications List

+
+
+ No notifications loaded yet. Click "Get Notifications" to fetch. +
+
+
+ + +
+

Events Log

+
+
+
Ready to connect...
+
INFO
+
Enter server URL and admin token, then click Connect to start
+
+
+
+
+
+ + + + diff --git a/test-pager-socket.html b/test-pager-socket.html new file mode 100644 index 0000000..4602af1 --- /dev/null +++ b/test-pager-socket.html @@ -0,0 +1,494 @@ + + + + + + Pager Socket.IO Test + + + + +
+
+

🔔 Pager Socket.IO Test Client

+

Test real-time pager notifications

+
+ +
+ +
+

Connection

+
+ + +
+
+ + + Enter JWT token for admin authentication. Required when joining restaurant rooms. +
+
+ + +
+
+ Status: Disconnected +
+
+ + +
+

Room Management

+
+ + +
+
+ + + Restaurant ID is automatically extracted from your admin token. No need to enter manually. +
+ +
+ + +
+
+ Current Room: None +
+
+ + +
+

Events Log

+
+
+
Ready to connect...
+
INFO
+
Enter server URL and click Connect to start
+
+
+
+
+
+ + + + + diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 0000000..64f86c6 --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..d26a8e3 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "module": "nodenext", + "moduleResolution": "nodenext", + "resolvePackageJsonExports": true, + "esModuleInterop": true, + "isolatedModules": true, + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "ES2023", + "sourceMap": true, + "outDir": "./dist", + "incremental": true, + "skipLibCheck": true, + "strictNullChecks": true, + "forceConsistentCasingInFileNames": true, + "noImplicitAny": true, + "strictBindCallApply": false, + "noFallthroughCasesInSwitch": false, + "baseUrl": "./", + "paths": { + "src/*": ["./src/*"] + } + } +}