From 5276742b2360718f8267777b14736195eac42653 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 10:11:39 +1200 Subject: [PATCH 01/48] delete all --- CHANGELOG.md | 4 - LICENSE | 21 - README.md | 45 - assets/countries.json | 1 - badge-coverage.svg | 16 - build/framework-build | 1 - build/logs/clover.xml | 4142 ---- composer.json | 82 - config/avored.php | 145 - database/factories/AddressFactory.php | 47 - database/factories/AdminUserFactory.php | 36 - database/factories/AttributeFactory.php | 32 - database/factories/CategoryFactory.php | 35 - database/factories/CustomerFactory.php | 31 - database/factories/DocumentFactory.php | 33 - database/factories/OrderFactory.php | 41 - database/factories/OrderStatusFactory.php | 31 - database/factories/PageFactory.php | 35 - database/factories/ProductFactory.php | 49 - database/factories/PropertyFactory.php | 35 - database/factories/RoleFactory.php | 28 - ...1_000001_create_oauth_auth_codes_table.php | 62 - ...00002_create_oauth_access_tokens_table.php | 64 - ...0003_create_oauth_refresh_tokens_table.php | 60 - ...6_01_000004_create_oauth_clients_table.php | 66 - ...te_oauth_personal_access_clients_table.php | 59 - ...7_03_29_000000_avored_framework_schema.php | 332 - ..._03_29_0000_avored_framework_schema501.php | 37 - dist/mix-manifest.json | 6 - dist/vendor/avored/css/app.css | 4 - dist/vendor/avored/images/avored_logo.ico | Bin 112436 -> 0 bytes dist/vendor/avored/images/logo_only.svg | 16 - dist/vendor/avored/js/app.js | 2 - dist/vendor/avored/js/app.js.LICENSE.txt | 506 - logo.svg | 1 - mix-manifest.json | 4 - package-lock.json | 16927 ------------- package.json | 25 - phpunit.xml | 47 - postcss.config.js | 6 - psalm.xml | 11 - public/avored/css/app.css | 1 - public/avored/js/app.js | 19694 ---------------- resources/css/app.css | 11 - resources/images/avored_logo.ico | Bin 112436 -> 0 bytes resources/images/logo_only.svg | 16 - resources/js/app.js | 1 - resources/js/bootstrap.js | 155 - resources/lang/en/system.php | 107 - resources/views/admin.blade.php | 26 - resources/views/breadcrumb/index.blade.php | 14 - .../views/catalog/attribute/_fields.blade.php | 127 - .../views/catalog/attribute/create.blade.php | 53 - .../views/catalog/attribute/edit.blade.php | 50 - .../views/catalog/attribute/index.blade.php | 143 - .../views/catalog/category/_fields.blade.php | 68 - .../views/catalog/category/create.blade.php | 53 - .../views/catalog/category/edit.blade.php | 50 - .../views/catalog/category/index.blade.php | 152 - .../views/catalog/product/_fields.blade.php | 188 - .../views/catalog/product/create.blade.php | 83 - .../views/catalog/product/edit.blade.php | 50 - .../views/catalog/product/index.blade.php | 146 - .../views/catalog/property/_fields.blade.php | 186 - .../views/catalog/property/create.blade.php | 53 - .../views/catalog/property/edit.blade.php | 50 - .../views/catalog/property/index.blade.php | 143 - resources/views/cms/page/_fields.blade.php | 51 - resources/views/cms/page/create.blade.php | 53 - resources/views/cms/page/edit.blade.php | 50 - resources/views/cms/page/index.blade.php | 132 - .../order/order-status/_fields.blade.php | 17 - .../views/order/order-status/create.blade.php | 53 - .../views/order/order-status/edit.blade.php | 50 - .../views/order/order-status/index.blade.php | 136 - resources/views/order/order/index.blade.php | 62 - resources/views/partials/header.blade.php | 44 - resources/views/partials/sidebar.blade.php | 42 - .../system/components/form/alert.blade.php | 5 - .../system/components/form/checkbox.blade.php | 10 - .../system/components/form/easymde.blade.php | 21 - .../system/components/form/form.blade.php | 11 - .../system/components/form/input.blade.php | 19 - .../system/components/form/link.blade.php | 24 - .../system/components/form/select.blade.php | 22 - .../system/components/form/select2.blade.php | 92 - .../system/components/form/toggle.blade.php | 18 - .../system/components/form/upload.blade.php | 138 - .../system/components/layouts/app.blade.php | 36 - .../views/system/components/table.blade.php | 20 - .../system/components/table/cell.blade.php | 3 - .../system/components/table/header.blade.php | 3 - .../system/components/table/row.blade.php | 3 - .../configuration/cards/basic.blade.php | 23 - .../system/configuration/cards/tax.blade.php | 0 .../system/configuration/index.blade.php | 53 - resources/views/system/role/_fields.blade.php | 33 - resources/views/system/role/create.blade.php | 53 - resources/views/system/role/edit.blade.php | 50 - resources/views/system/role/index.blade.php | 114 - .../views/user/auth/login-form.blade.php | 91 - .../views/user/auth/password/new.blade.php | 84 - resources/views/user/auth/reset.blade.php | 69 - resources/views/user/staff/_fields.blade.php | 88 - resources/views/user/staff/create.blade.php | 53 - resources/views/user/staff/edit.blade.php | 50 - resources/views/user/staff/index.blade.php | 122 - .../views/user/subscriber/_fields.blade.php | 24 - .../views/user/subscriber/create.blade.php | 53 - .../views/user/subscriber/edit.blade.php | 50 - .../views/user/subscriber/index.blade.php | 132 - routes/web.php | 100 - src/AvoRedServiceProvider.php | 238 - src/Breadcrumb/Breadcrumb.php | 18 - src/Breadcrumb/BreadcrumbInterface.php | 18 - src/Breadcrumb/BreadcrumbItem.php | 83 - src/Breadcrumb/BreadcrumbProvider.php | 641 - src/Breadcrumb/Builder.php | 71 - src/Cart/Cart.php | 17 - src/Cart/CartManager.php | 236 - src/Cart/CartProduct.php | 196 - src/Cart/CartProvider.php | 50 - .../Controllers/AttributeController.php | 121 - .../Controllers/CategoryController.php | 118 - src/Catalog/Controllers/ProductController.php | 131 - .../Controllers/PropertyController.php | 125 - src/Catalog/Requests/AttributeRequest.php | 32 - src/Catalog/Requests/CategoryRequest.php | 30 - src/Catalog/Requests/ProductRequest.php | 32 - src/Catalog/Requests/PropertyRequest.php | 31 - src/Cms/Controllers/PageController.php | 113 - src/Cms/Requests/PageRequest.php | 31 - .../Contracts/AddressModelInterface.php | 17 - .../Contracts/AdminUserModelInterface.php | 16 - .../AttributeDropdownOptionModelInterface.php | 8 - .../Contracts/AttributeModelInterface.php | 18 - src/Database/Contracts/BaseInterface.php | 51 - .../Contracts/CartProductModelInterface.php | 6 - .../Contracts/CategoryModelInterface.php | 40 - .../Contracts/ConfigurationModelInterface.php | 20 - .../Contracts/CustomerModelInterface.php | 26 - .../Contracts/DocumentModelInterface.php | 6 - .../Contracts/OrderModelInterface.php | 28 - .../Contracts/OrderProductModelInterface.php | 7 - .../Contracts/OrderStatusModelInterface.php | 22 - src/Database/Contracts/PageModelInterface.php | 13 - .../Contracts/PermissionModelInterface.php | 11 - .../Contracts/ProductModelInterface.php | 41 - .../Contracts/PropertyModelInterface.php | 7 - src/Database/Contracts/RoleModelInterface.php | 22 - .../Contracts/SubscriberModelInterface.php | 7 - src/Database/Models/Address.php | 44 - src/Database/Models/AdminUser.php | 129 - src/Database/Models/Attribute.php | 56 - .../Models/AttributeDropdownOption.php | 21 - src/Database/Models/BaseModel.php | 20 - src/Database/Models/CartProduct.php | 48 - src/Database/Models/Category.php | 49 - src/Database/Models/Configuration.php | 11 - src/Database/Models/Country.php | 21 - src/Database/Models/Customer.php | 153 - src/Database/Models/Document.php | 39 - src/Database/Models/OauthClient.php | 47 - src/Database/Models/Order.php | 76 - src/Database/Models/OrderProduct.php | 35 - src/Database/Models/OrderStatus.php | 15 - src/Database/Models/Page.php | 44 - src/Database/Models/Permission.php | 22 - src/Database/Models/Product.php | 88 - src/Database/Models/Property.php | 110 - .../Models/PropertyDropdownOption.php | 12 - src/Database/Models/Role.php | 45 - src/Database/Models/Subscriber.php | 27 - src/Database/Repository/AddressRepository.php | 44 - .../Repository/AdminUserRepository.php | 51 - .../AttributeDropdownOptionRepository.php | 41 - .../Repository/AttributeRepository.php | 79 - src/Database/Repository/BaseRepository.php | 75 - .../Repository/CartProductRepository.php | 30 - .../Repository/CategoryRepository.php | 183 - .../Repository/ConfigurationRepository.php | 76 - .../Repository/CustomerRepository.php | 74 - .../Repository/DocumentRepository.php | 31 - .../Repository/OrderProductRepository.php | 45 - src/Database/Repository/OrderRepository.php | 95 - .../Repository/OrderStatusRepository.php | 65 - src/Database/Repository/PageRepository.php | 57 - .../Repository/PermissionRepository.php | 44 - src/Database/Repository/ProductRepository.php | 91 - .../Repository/PropertyRepository.php | 70 - src/Database/Repository/RoleRepository.php | 92 - .../Repository/SubscriberRepository.php | 31 - src/Database/Traits/FilterTrait.php | 27 - src/Database/Traits/UuidTrait.php | 26 - src/Document/Document.php | 16 - src/Document/DocumentProvider.php | 66 - src/Document/Manager.php | 56 - .../Mutations/Auth/ForgotPasswordMutation.php | 75 - src/Graphql/Mutations/Auth/LoginMutation.php | 117 - .../Mutations/Auth/RegisterMutation.php | 129 - .../Mutations/Auth/ResetPasswordMutation.php | 119 - .../Mutations/Cart/AddToCartMutation.php | 64 - .../Mutations/Cart/DeleteCartMutation.php | 45 - .../Mutations/Cart/UpdateCartMutation.php | 63 - .../Customer/CreateAddressMutation.php | 122 - .../Customer/CreateSubscriberMutation.php | 60 - .../Customer/CustomerUpdateMutation.php | 67 - .../Customer/DeleteAddressMutation.php | 62 - .../Customer/UpdateAddressMutation.php | 128 - src/Graphql/Mutations/PlaceOrderMutation.php | 130 - src/Graphql/Queries/AddressQuery.php | 74 - src/Graphql/Queries/AllAddressQuery.php | 72 - src/Graphql/Queries/AllCategoryQuery.php | 69 - src/Graphql/Queries/AllOrdersQuery.php | 72 - src/Graphql/Queries/CartItemsQuery.php | 59 - src/Graphql/Queries/CategoryQuery.php | 79 - src/Graphql/Queries/CountryOptionsQuery.php | 53 - src/Graphql/Queries/CustomerQuery.php | 79 - src/Graphql/Queries/LatestProductQuery.php | 69 - src/Graphql/Queries/OrderQuery.php | 77 - src/Graphql/Queries/PaymentQuery.php | 71 - src/Graphql/Queries/ProductQuery.php | 71 - src/Graphql/Queries/ShippingQuery.php | 71 - src/Graphql/Traits/AuthorizedTrait.php | 24 - src/Graphql/Types/AddressType.php | 108 - src/Graphql/Types/CartProductType.php | 56 - src/Graphql/Types/CategoryType.php | 124 - src/Graphql/Types/CustomerType.php | 82 - src/Graphql/Types/NotificationType.php | 35 - src/Graphql/Types/OptionType.php | 56 - src/Graphql/Types/OrderType.php | 122 - src/Graphql/Types/PaymentType.php | 69 - src/Graphql/Types/ProductType.php | 143 - src/Graphql/Types/ShippingType.php | 69 - src/Graphql/Types/SubscriberType.php | 52 - src/Menu/Menu.php | 19 - src/Menu/MenuBuilder.php | 148 - src/Menu/MenuInterface.php | 41 - src/Menu/MenuItem.php | 208 - src/Menu/MenuProvider.php | 234 - src/Module/Console/ControllerMakeCommand.php | 189 - src/Module/Console/ModuleInstallCommand.php | 92 - src/Module/Console/ModuleMakeCommand.php | 191 - src/Module/Console/Provider.php | 94 - src/Module/Console/stubs/controller.stub | 11 - src/Module/Console/stubs/module.stub | 41 - src/Module/Console/stubs/register.stub | 5 - src/Module/Manager.php | 239 - src/Module/Module.php | 21 - src/Module/ModuleItem.php | 180 - src/Module/ModuleProvider.php | 70 - src/Order/Controllers/OrderController.php | 37 - .../Controllers/OrderStatusController.php | 118 - src/Order/Events/OrderProductCreated.php | 26 - .../Listeners/OrderProductCreatedListener.php | 28 - src/Order/Requests/OrderStatusRequest.php | 31 - src/Payment/Payment.php | 14 - src/Payment/PaymentManager.php | 48 - src/Payment/PaymentProvider.php | 36 - src/Permission/Manager.php | 77 - src/Permission/Permission.php | 18 - src/Permission/PermissionGroup.php | 97 - src/Permission/PermissionInterface.php | 27 - src/Permission/PermissionItem.php | 88 - src/Permission/PermissionProvider.php | 689 - src/Shipping/Manager.php | 40 - src/Shipping/Shipping.php | 16 - src/Shipping/ShippingProvider.php | 38 - src/Support/Middleware/AdminAuth.php | 21 - src/Support/Middleware/Permission.php | 29 - .../Middleware/RedirectIfAdminAuth.php | 26 - src/Support/Providers/ComponentsProvider.php | 43 - src/Support/Providers/EventsProvider.php | 31 - src/Support/Providers/GraphqlProvider.php | 50 - src/Support/Providers/ModelsProvider.php | 94 - src/System/Components/Alert.php | 47 - src/System/Components/Form/Checkbox.php | 66 - src/System/Components/Form/Easymde.php | 59 - src/System/Components/Form/Form.php | 55 - src/System/Components/Form/Input.php | 67 - src/System/Components/Form/Select.php | 59 - src/System/Components/Form/Select2.php | 59 - src/System/Components/Form/Toggle.php | 73 - src/System/Components/Form/Upload.php | 74 - src/System/Components/Layout.php | 44 - src/System/Components/Link.php | 52 - src/System/Components/Table.php | 30 - src/System/Components/Table/Cell.php | 28 - src/System/Components/Table/Header.php | 36 - src/System/Components/Table/Row.php | 35 - src/System/Composers/LayoutComposer.php | 30 - src/System/Console/AdminMakeCommand.php | 64 - src/System/Console/InstallCommand.php | 66 - .../Controllers/ConfigurationController.php | 64 - .../Controllers/DashboardController.php | 18 - src/System/Controllers/RoleController.php | 119 - src/System/Requests/RoleRequest.php | 30 - src/Tab/Manager.php | 62 - src/Tab/Tab.php | 18 - src/Tab/TabItem.php | 75 - src/Tab/TabProvider.php | 226 - src/User/Actions/AuthAdminUserAction.php | 24 - src/User/Actions/CreateAdminUserAction.php | 21 - src/User/Actions/CreateRoleAction.php | 21 - .../Controllers/ForgotPasswordController.php | 106 - src/User/Controllers/LoginController.php | 126 - .../Controllers/ResetPasswordController.php | 178 - src/User/Controllers/StaffController.php | 132 - src/User/Controllers/SubscriberController.php | 113 - .../Notifications/CustomerResetPassword.php | 67 - src/User/Notifications/ResetPassword.php | 52 - src/User/Requests/AdminLoginRequest.php | 29 - src/User/Requests/AdminUserRequest.php | 31 - src/User/Requests/ForgotPasswordRequest.php | 31 - src/User/Requests/ResetAdminUserRequest.php | 32 - src/User/Requests/SubscriberRequest.php | 29 - tailwind.config.js | 14 - tests/Feature/AdminUserControllerTest.php | 90 - tests/Feature/AuthControllerTest.php | 62 - tests/Feature/CategoryControllerTest.php | 80 - tests/Feature/ConfigurationControllerTest.php | 29 - tests/Feature/DashboardControllerTest.php | 17 - tests/Feature/LoginControllerTest.php | 83 - tests/Feature/OrderControllerTest.php | 30 - tests/Feature/OrderStatusControllerTest.php | 73 - tests/Feature/PageControllerTest.php | 78 - tests/Feature/ProductControllerTest.php | 78 - tests/Feature/RoleControllerTest.php | 116 - tests/Functional/BreadcrumbTest.php | 61 - tests/Functional/PermissionTest.php | 32 - tests/Functional/ProductModelTest.php | 33 - tests/TestCase.php | 141 - webpack.mix.js | 31 - 333 files changed, 62515 deletions(-) delete mode 100644 CHANGELOG.md delete mode 100644 LICENSE delete mode 100644 README.md delete mode 100644 assets/countries.json delete mode 100644 badge-coverage.svg delete mode 120000 build/framework-build delete mode 100644 build/logs/clover.xml delete mode 100644 composer.json delete mode 100644 config/avored.php delete mode 100644 database/factories/AddressFactory.php delete mode 100644 database/factories/AdminUserFactory.php delete mode 100644 database/factories/AttributeFactory.php delete mode 100644 database/factories/CategoryFactory.php delete mode 100644 database/factories/CustomerFactory.php delete mode 100644 database/factories/DocumentFactory.php delete mode 100644 database/factories/OrderFactory.php delete mode 100644 database/factories/OrderStatusFactory.php delete mode 100644 database/factories/PageFactory.php delete mode 100644 database/factories/ProductFactory.php delete mode 100644 database/factories/PropertyFactory.php delete mode 100644 database/factories/RoleFactory.php delete mode 100644 database/migrations/2016_06_01_000001_create_oauth_auth_codes_table.php delete mode 100644 database/migrations/2016_06_01_000002_create_oauth_access_tokens_table.php delete mode 100644 database/migrations/2016_06_01_000003_create_oauth_refresh_tokens_table.php delete mode 100644 database/migrations/2016_06_01_000004_create_oauth_clients_table.php delete mode 100644 database/migrations/2016_06_01_000005_create_oauth_personal_access_clients_table.php delete mode 100644 database/migrations/2017_03_29_000000_avored_framework_schema.php delete mode 100644 database/migrations/2017_03_29_0000_avored_framework_schema501.php delete mode 100644 dist/mix-manifest.json delete mode 100644 dist/vendor/avored/css/app.css delete mode 100644 dist/vendor/avored/images/avored_logo.ico delete mode 100644 dist/vendor/avored/images/logo_only.svg delete mode 100644 dist/vendor/avored/js/app.js delete mode 100644 dist/vendor/avored/js/app.js.LICENSE.txt delete mode 100644 logo.svg delete mode 100644 mix-manifest.json delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 phpunit.xml delete mode 100644 postcss.config.js delete mode 100644 psalm.xml delete mode 100644 public/avored/css/app.css delete mode 100644 public/avored/js/app.js delete mode 100644 resources/css/app.css delete mode 100644 resources/images/avored_logo.ico delete mode 100644 resources/images/logo_only.svg delete mode 100644 resources/js/app.js delete mode 100644 resources/js/bootstrap.js delete mode 100644 resources/lang/en/system.php delete mode 100644 resources/views/admin.blade.php delete mode 100644 resources/views/breadcrumb/index.blade.php delete mode 100644 resources/views/catalog/attribute/_fields.blade.php delete mode 100644 resources/views/catalog/attribute/create.blade.php delete mode 100644 resources/views/catalog/attribute/edit.blade.php delete mode 100644 resources/views/catalog/attribute/index.blade.php delete mode 100644 resources/views/catalog/category/_fields.blade.php delete mode 100644 resources/views/catalog/category/create.blade.php delete mode 100644 resources/views/catalog/category/edit.blade.php delete mode 100644 resources/views/catalog/category/index.blade.php delete mode 100644 resources/views/catalog/product/_fields.blade.php delete mode 100644 resources/views/catalog/product/create.blade.php delete mode 100644 resources/views/catalog/product/edit.blade.php delete mode 100644 resources/views/catalog/product/index.blade.php delete mode 100644 resources/views/catalog/property/_fields.blade.php delete mode 100644 resources/views/catalog/property/create.blade.php delete mode 100644 resources/views/catalog/property/edit.blade.php delete mode 100644 resources/views/catalog/property/index.blade.php delete mode 100644 resources/views/cms/page/_fields.blade.php delete mode 100644 resources/views/cms/page/create.blade.php delete mode 100644 resources/views/cms/page/edit.blade.php delete mode 100644 resources/views/cms/page/index.blade.php delete mode 100644 resources/views/order/order-status/_fields.blade.php delete mode 100644 resources/views/order/order-status/create.blade.php delete mode 100644 resources/views/order/order-status/edit.blade.php delete mode 100644 resources/views/order/order-status/index.blade.php delete mode 100644 resources/views/order/order/index.blade.php delete mode 100644 resources/views/partials/header.blade.php delete mode 100644 resources/views/partials/sidebar.blade.php delete mode 100644 resources/views/system/components/form/alert.blade.php delete mode 100644 resources/views/system/components/form/checkbox.blade.php delete mode 100644 resources/views/system/components/form/easymde.blade.php delete mode 100644 resources/views/system/components/form/form.blade.php delete mode 100644 resources/views/system/components/form/input.blade.php delete mode 100644 resources/views/system/components/form/link.blade.php delete mode 100644 resources/views/system/components/form/select.blade.php delete mode 100644 resources/views/system/components/form/select2.blade.php delete mode 100644 resources/views/system/components/form/toggle.blade.php delete mode 100644 resources/views/system/components/form/upload.blade.php delete mode 100644 resources/views/system/components/layouts/app.blade.php delete mode 100644 resources/views/system/components/table.blade.php delete mode 100644 resources/views/system/components/table/cell.blade.php delete mode 100644 resources/views/system/components/table/header.blade.php delete mode 100644 resources/views/system/components/table/row.blade.php delete mode 100644 resources/views/system/configuration/cards/basic.blade.php delete mode 100644 resources/views/system/configuration/cards/tax.blade.php delete mode 100644 resources/views/system/configuration/index.blade.php delete mode 100644 resources/views/system/role/_fields.blade.php delete mode 100644 resources/views/system/role/create.blade.php delete mode 100644 resources/views/system/role/edit.blade.php delete mode 100644 resources/views/system/role/index.blade.php delete mode 100644 resources/views/user/auth/login-form.blade.php delete mode 100644 resources/views/user/auth/password/new.blade.php delete mode 100644 resources/views/user/auth/reset.blade.php delete mode 100644 resources/views/user/staff/_fields.blade.php delete mode 100644 resources/views/user/staff/create.blade.php delete mode 100644 resources/views/user/staff/edit.blade.php delete mode 100644 resources/views/user/staff/index.blade.php delete mode 100644 resources/views/user/subscriber/_fields.blade.php delete mode 100644 resources/views/user/subscriber/create.blade.php delete mode 100644 resources/views/user/subscriber/edit.blade.php delete mode 100644 resources/views/user/subscriber/index.blade.php delete mode 100644 routes/web.php delete mode 100644 src/AvoRedServiceProvider.php delete mode 100644 src/Breadcrumb/Breadcrumb.php delete mode 100644 src/Breadcrumb/BreadcrumbInterface.php delete mode 100644 src/Breadcrumb/BreadcrumbItem.php delete mode 100644 src/Breadcrumb/BreadcrumbProvider.php delete mode 100644 src/Breadcrumb/Builder.php delete mode 100644 src/Cart/Cart.php delete mode 100644 src/Cart/CartManager.php delete mode 100644 src/Cart/CartProduct.php delete mode 100644 src/Cart/CartProvider.php delete mode 100644 src/Catalog/Controllers/AttributeController.php delete mode 100644 src/Catalog/Controllers/CategoryController.php delete mode 100644 src/Catalog/Controllers/ProductController.php delete mode 100644 src/Catalog/Controllers/PropertyController.php delete mode 100644 src/Catalog/Requests/AttributeRequest.php delete mode 100644 src/Catalog/Requests/CategoryRequest.php delete mode 100644 src/Catalog/Requests/ProductRequest.php delete mode 100644 src/Catalog/Requests/PropertyRequest.php delete mode 100644 src/Cms/Controllers/PageController.php delete mode 100644 src/Cms/Requests/PageRequest.php delete mode 100644 src/Database/Contracts/AddressModelInterface.php delete mode 100644 src/Database/Contracts/AdminUserModelInterface.php delete mode 100644 src/Database/Contracts/AttributeDropdownOptionModelInterface.php delete mode 100644 src/Database/Contracts/AttributeModelInterface.php delete mode 100644 src/Database/Contracts/BaseInterface.php delete mode 100644 src/Database/Contracts/CartProductModelInterface.php delete mode 100644 src/Database/Contracts/CategoryModelInterface.php delete mode 100644 src/Database/Contracts/ConfigurationModelInterface.php delete mode 100644 src/Database/Contracts/CustomerModelInterface.php delete mode 100644 src/Database/Contracts/DocumentModelInterface.php delete mode 100644 src/Database/Contracts/OrderModelInterface.php delete mode 100644 src/Database/Contracts/OrderProductModelInterface.php delete mode 100644 src/Database/Contracts/OrderStatusModelInterface.php delete mode 100644 src/Database/Contracts/PageModelInterface.php delete mode 100644 src/Database/Contracts/PermissionModelInterface.php delete mode 100644 src/Database/Contracts/ProductModelInterface.php delete mode 100644 src/Database/Contracts/PropertyModelInterface.php delete mode 100644 src/Database/Contracts/RoleModelInterface.php delete mode 100644 src/Database/Contracts/SubscriberModelInterface.php delete mode 100644 src/Database/Models/Address.php delete mode 100644 src/Database/Models/AdminUser.php delete mode 100644 src/Database/Models/Attribute.php delete mode 100644 src/Database/Models/AttributeDropdownOption.php delete mode 100644 src/Database/Models/BaseModel.php delete mode 100644 src/Database/Models/CartProduct.php delete mode 100644 src/Database/Models/Category.php delete mode 100644 src/Database/Models/Configuration.php delete mode 100644 src/Database/Models/Country.php delete mode 100644 src/Database/Models/Customer.php delete mode 100644 src/Database/Models/Document.php delete mode 100644 src/Database/Models/OauthClient.php delete mode 100644 src/Database/Models/Order.php delete mode 100644 src/Database/Models/OrderProduct.php delete mode 100644 src/Database/Models/OrderStatus.php delete mode 100644 src/Database/Models/Page.php delete mode 100644 src/Database/Models/Permission.php delete mode 100644 src/Database/Models/Product.php delete mode 100644 src/Database/Models/Property.php delete mode 100644 src/Database/Models/PropertyDropdownOption.php delete mode 100644 src/Database/Models/Role.php delete mode 100644 src/Database/Models/Subscriber.php delete mode 100644 src/Database/Repository/AddressRepository.php delete mode 100644 src/Database/Repository/AdminUserRepository.php delete mode 100644 src/Database/Repository/AttributeDropdownOptionRepository.php delete mode 100644 src/Database/Repository/AttributeRepository.php delete mode 100644 src/Database/Repository/BaseRepository.php delete mode 100644 src/Database/Repository/CartProductRepository.php delete mode 100644 src/Database/Repository/CategoryRepository.php delete mode 100644 src/Database/Repository/ConfigurationRepository.php delete mode 100644 src/Database/Repository/CustomerRepository.php delete mode 100644 src/Database/Repository/DocumentRepository.php delete mode 100644 src/Database/Repository/OrderProductRepository.php delete mode 100644 src/Database/Repository/OrderRepository.php delete mode 100644 src/Database/Repository/OrderStatusRepository.php delete mode 100644 src/Database/Repository/PageRepository.php delete mode 100644 src/Database/Repository/PermissionRepository.php delete mode 100644 src/Database/Repository/ProductRepository.php delete mode 100644 src/Database/Repository/PropertyRepository.php delete mode 100644 src/Database/Repository/RoleRepository.php delete mode 100644 src/Database/Repository/SubscriberRepository.php delete mode 100644 src/Database/Traits/FilterTrait.php delete mode 100644 src/Database/Traits/UuidTrait.php delete mode 100644 src/Document/Document.php delete mode 100644 src/Document/DocumentProvider.php delete mode 100644 src/Document/Manager.php delete mode 100644 src/Graphql/Mutations/Auth/ForgotPasswordMutation.php delete mode 100644 src/Graphql/Mutations/Auth/LoginMutation.php delete mode 100644 src/Graphql/Mutations/Auth/RegisterMutation.php delete mode 100644 src/Graphql/Mutations/Auth/ResetPasswordMutation.php delete mode 100644 src/Graphql/Mutations/Cart/AddToCartMutation.php delete mode 100644 src/Graphql/Mutations/Cart/DeleteCartMutation.php delete mode 100644 src/Graphql/Mutations/Cart/UpdateCartMutation.php delete mode 100644 src/Graphql/Mutations/Customer/CreateAddressMutation.php delete mode 100644 src/Graphql/Mutations/Customer/CreateSubscriberMutation.php delete mode 100644 src/Graphql/Mutations/Customer/CustomerUpdateMutation.php delete mode 100644 src/Graphql/Mutations/Customer/DeleteAddressMutation.php delete mode 100644 src/Graphql/Mutations/Customer/UpdateAddressMutation.php delete mode 100644 src/Graphql/Mutations/PlaceOrderMutation.php delete mode 100644 src/Graphql/Queries/AddressQuery.php delete mode 100644 src/Graphql/Queries/AllAddressQuery.php delete mode 100644 src/Graphql/Queries/AllCategoryQuery.php delete mode 100644 src/Graphql/Queries/AllOrdersQuery.php delete mode 100644 src/Graphql/Queries/CartItemsQuery.php delete mode 100644 src/Graphql/Queries/CategoryQuery.php delete mode 100644 src/Graphql/Queries/CountryOptionsQuery.php delete mode 100644 src/Graphql/Queries/CustomerQuery.php delete mode 100644 src/Graphql/Queries/LatestProductQuery.php delete mode 100644 src/Graphql/Queries/OrderQuery.php delete mode 100644 src/Graphql/Queries/PaymentQuery.php delete mode 100644 src/Graphql/Queries/ProductQuery.php delete mode 100644 src/Graphql/Queries/ShippingQuery.php delete mode 100644 src/Graphql/Traits/AuthorizedTrait.php delete mode 100644 src/Graphql/Types/AddressType.php delete mode 100644 src/Graphql/Types/CartProductType.php delete mode 100644 src/Graphql/Types/CategoryType.php delete mode 100644 src/Graphql/Types/CustomerType.php delete mode 100644 src/Graphql/Types/NotificationType.php delete mode 100644 src/Graphql/Types/OptionType.php delete mode 100644 src/Graphql/Types/OrderType.php delete mode 100644 src/Graphql/Types/PaymentType.php delete mode 100644 src/Graphql/Types/ProductType.php delete mode 100644 src/Graphql/Types/ShippingType.php delete mode 100644 src/Graphql/Types/SubscriberType.php delete mode 100644 src/Menu/Menu.php delete mode 100644 src/Menu/MenuBuilder.php delete mode 100644 src/Menu/MenuInterface.php delete mode 100644 src/Menu/MenuItem.php delete mode 100644 src/Menu/MenuProvider.php delete mode 100644 src/Module/Console/ControllerMakeCommand.php delete mode 100644 src/Module/Console/ModuleInstallCommand.php delete mode 100644 src/Module/Console/ModuleMakeCommand.php delete mode 100644 src/Module/Console/Provider.php delete mode 100644 src/Module/Console/stubs/controller.stub delete mode 100644 src/Module/Console/stubs/module.stub delete mode 100644 src/Module/Console/stubs/register.stub delete mode 100644 src/Module/Manager.php delete mode 100644 src/Module/Module.php delete mode 100644 src/Module/ModuleItem.php delete mode 100644 src/Module/ModuleProvider.php delete mode 100644 src/Order/Controllers/OrderController.php delete mode 100644 src/Order/Controllers/OrderStatusController.php delete mode 100644 src/Order/Events/OrderProductCreated.php delete mode 100644 src/Order/Listeners/OrderProductCreatedListener.php delete mode 100644 src/Order/Requests/OrderStatusRequest.php delete mode 100644 src/Payment/Payment.php delete mode 100644 src/Payment/PaymentManager.php delete mode 100644 src/Payment/PaymentProvider.php delete mode 100644 src/Permission/Manager.php delete mode 100644 src/Permission/Permission.php delete mode 100644 src/Permission/PermissionGroup.php delete mode 100644 src/Permission/PermissionInterface.php delete mode 100644 src/Permission/PermissionItem.php delete mode 100644 src/Permission/PermissionProvider.php delete mode 100644 src/Shipping/Manager.php delete mode 100644 src/Shipping/Shipping.php delete mode 100644 src/Shipping/ShippingProvider.php delete mode 100644 src/Support/Middleware/AdminAuth.php delete mode 100644 src/Support/Middleware/Permission.php delete mode 100644 src/Support/Middleware/RedirectIfAdminAuth.php delete mode 100644 src/Support/Providers/ComponentsProvider.php delete mode 100644 src/Support/Providers/EventsProvider.php delete mode 100644 src/Support/Providers/GraphqlProvider.php delete mode 100644 src/Support/Providers/ModelsProvider.php delete mode 100644 src/System/Components/Alert.php delete mode 100644 src/System/Components/Form/Checkbox.php delete mode 100644 src/System/Components/Form/Easymde.php delete mode 100644 src/System/Components/Form/Form.php delete mode 100644 src/System/Components/Form/Input.php delete mode 100644 src/System/Components/Form/Select.php delete mode 100644 src/System/Components/Form/Select2.php delete mode 100644 src/System/Components/Form/Toggle.php delete mode 100644 src/System/Components/Form/Upload.php delete mode 100644 src/System/Components/Layout.php delete mode 100644 src/System/Components/Link.php delete mode 100644 src/System/Components/Table.php delete mode 100644 src/System/Components/Table/Cell.php delete mode 100644 src/System/Components/Table/Header.php delete mode 100644 src/System/Components/Table/Row.php delete mode 100644 src/System/Composers/LayoutComposer.php delete mode 100644 src/System/Console/AdminMakeCommand.php delete mode 100644 src/System/Console/InstallCommand.php delete mode 100644 src/System/Controllers/ConfigurationController.php delete mode 100644 src/System/Controllers/DashboardController.php delete mode 100644 src/System/Controllers/RoleController.php delete mode 100644 src/System/Requests/RoleRequest.php delete mode 100644 src/Tab/Manager.php delete mode 100644 src/Tab/Tab.php delete mode 100644 src/Tab/TabItem.php delete mode 100644 src/Tab/TabProvider.php delete mode 100644 src/User/Actions/AuthAdminUserAction.php delete mode 100644 src/User/Actions/CreateAdminUserAction.php delete mode 100644 src/User/Actions/CreateRoleAction.php delete mode 100644 src/User/Controllers/ForgotPasswordController.php delete mode 100644 src/User/Controllers/LoginController.php delete mode 100644 src/User/Controllers/ResetPasswordController.php delete mode 100644 src/User/Controllers/StaffController.php delete mode 100644 src/User/Controllers/SubscriberController.php delete mode 100644 src/User/Notifications/CustomerResetPassword.php delete mode 100644 src/User/Notifications/ResetPassword.php delete mode 100644 src/User/Requests/AdminLoginRequest.php delete mode 100644 src/User/Requests/AdminUserRequest.php delete mode 100644 src/User/Requests/ForgotPasswordRequest.php delete mode 100644 src/User/Requests/ResetAdminUserRequest.php delete mode 100644 src/User/Requests/SubscriberRequest.php delete mode 100644 tailwind.config.js delete mode 100644 tests/Feature/AdminUserControllerTest.php delete mode 100644 tests/Feature/AuthControllerTest.php delete mode 100644 tests/Feature/CategoryControllerTest.php delete mode 100644 tests/Feature/ConfigurationControllerTest.php delete mode 100644 tests/Feature/DashboardControllerTest.php delete mode 100644 tests/Feature/LoginControllerTest.php delete mode 100644 tests/Feature/OrderControllerTest.php delete mode 100644 tests/Feature/OrderStatusControllerTest.php delete mode 100644 tests/Feature/PageControllerTest.php delete mode 100644 tests/Feature/ProductControllerTest.php delete mode 100644 tests/Feature/RoleControllerTest.php delete mode 100644 tests/Functional/BreadcrumbTest.php delete mode 100644 tests/Functional/PermissionTest.php delete mode 100644 tests/Functional/ProductModelTest.php delete mode 100644 tests/TestCase.php delete mode 100644 webpack.mix.js diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 27f7d0f17..000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,4 +0,0 @@ -# Release Notes for 5.x - - -## [v5.1.0](https://github.com/avored/framework) diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 62945c6bc..000000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 Purvesh - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index b50e530c8..000000000 --- a/README.md +++ /dev/null @@ -1,45 +0,0 @@ -

- AvoRed -

- -

- CircleCI - Total Downloads - Latest Stable Version - License - Test Coverage -

- - -# Core package for AvoRed Shopping Cart -AvoRed Framework contains the core features for the AvoRed E-commerce for Laravel. It is the base behind the AvoRed and Laravel Ecommerce. - -## Requirements -At this stage the minimum Lavarel version required is 5.8. If you are using an older version, let us know at our [Discussion Forum](https://avored.com/discussion). We can test if it works and add support for that version too. - -## Installation -The AvoRed E-commerce framework is provided as a composer package, so it makes installation of AvoRed as easy as: - - composer require avored/framework - -Once this is finished, you will need to run a few commands to finish up and then you are ready to roll. - -## Publish the files -Publish the AvoRed E-commerce framework config file and assets (JS/CSS and images): - - php artisan vendor:publish --provider="AvoRed\Framework\AvoRedServiceProvider" - -Once all the files are published, we can run the command to install the required database tables. - - php artisan avored:install - -We are almost there. Now create your Administrator Account by running: - - php artisan avored:admin:make - - -That's It. - -Now visit: - - yoursiteurl.com/admin diff --git a/assets/countries.json b/assets/countries.json deleted file mode 100644 index a50b724d1..000000000 --- a/assets/countries.json +++ /dev/null @@ -1 +0,0 @@ -[{"name":"Afghanistan","topLevelDomain":[".af"],"alpha2Code":"AF","alpha3Code":"AFG","callingCodes":["93"],"capital":"Kabul","altSpellings":["AF","Afġānistān"],"region":"Asia","subregion":"Southern Asia","population":27657145,"latlng":[33.0,65.0],"demonym":"Afghan","area":652230.0,"gini":27.8,"timezones":["UTC+04:30"],"borders":["IRN","PAK","TKM","UZB","TJK","CHN"],"nativeName":"افغانستان","numericCode":"004","currencies":[{"code":"AFN","name":"Afghan afghani","symbol":"؋"}],"languages":[{"iso639_1":"ps","iso639_2":"pus","name":"Pashto","nativeName":"پښتو"},{"iso639_1":"uz","iso639_2":"uzb","name":"Uzbek","nativeName":"Oʻzbek"},{"iso639_1":"tk","iso639_2":"tuk","name":"Turkmen","nativeName":"Türkmen"}],"translations":{"de":"Afghanistan","es":"Afganistán","fr":"Afghanistan","ja":"アフガニスタン","it":"Afghanistan","br":"Afeganistão","pt":"Afeganistão","nl":"Afghanistan","hr":"Afganistan","fa":"افغانستان"},"flag":"https://restcountries.eu/data/afg.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"AFG"},{"name":"Åland Islands","topLevelDomain":[".ax"],"alpha2Code":"AX","alpha3Code":"ALA","callingCodes":["358"],"capital":"Mariehamn","altSpellings":["AX","Aaland","Aland","Ahvenanmaa"],"region":"Europe","subregion":"Northern Europe","population":28875,"latlng":[60.116667,19.9],"demonym":"Ålandish","area":1580.0,"gini":null,"timezones":["UTC+02:00"],"borders":[],"nativeName":"Åland","numericCode":"248","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"sv","iso639_2":"swe","name":"Swedish","nativeName":"svenska"}],"translations":{"de":"Åland","es":"Alandia","fr":"Åland","ja":"オーランド諸島","it":"Isole Aland","br":"Ilhas de Aland","pt":"Ilhas de Aland","nl":"Ålandeilanden","hr":"Ålandski otoci","fa":"جزایر الند"},"flag":"https://restcountries.eu/data/ala.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":""},{"name":"Albania","topLevelDomain":[".al"],"alpha2Code":"AL","alpha3Code":"ALB","callingCodes":["355"],"capital":"Tirana","altSpellings":["AL","Shqipëri","Shqipëria","Shqipnia"],"region":"Europe","subregion":"Southern Europe","population":2886026,"latlng":[41.0,20.0],"demonym":"Albanian","area":28748.0,"gini":34.5,"timezones":["UTC+01:00"],"borders":["MNE","GRC","MKD","KOS"],"nativeName":"Shqipëria","numericCode":"008","currencies":[{"code":"ALL","name":"Albanian lek","symbol":"L"}],"languages":[{"iso639_1":"sq","iso639_2":"sqi","name":"Albanian","nativeName":"Shqip"}],"translations":{"de":"Albanien","es":"Albania","fr":"Albanie","ja":"アルバニア","it":"Albania","br":"Albânia","pt":"Albânia","nl":"Albanië","hr":"Albanija","fa":"آلبانی"},"flag":"https://restcountries.eu/data/alb.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"ALB"},{"name":"Algeria","topLevelDomain":[".dz"],"alpha2Code":"DZ","alpha3Code":"DZA","callingCodes":["213"],"capital":"Algiers","altSpellings":["DZ","Dzayer","Algérie"],"region":"Africa","subregion":"Northern Africa","population":40400000,"latlng":[28.0,3.0],"demonym":"Algerian","area":2381741.0,"gini":35.3,"timezones":["UTC+01:00"],"borders":["TUN","LBY","NER","ESH","MRT","MLI","MAR"],"nativeName":"الجزائر","numericCode":"012","currencies":[{"code":"DZD","name":"Algerian dinar","symbol":"د.ج"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Algerien","es":"Argelia","fr":"Algérie","ja":"アルジェリア","it":"Algeria","br":"Argélia","pt":"Argélia","nl":"Algerije","hr":"Alžir","fa":"الجزایر"},"flag":"https://restcountries.eu/data/dza.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"ALG"},{"name":"American Samoa","topLevelDomain":[".as"],"alpha2Code":"AS","alpha3Code":"ASM","callingCodes":["1684"],"capital":"Pago Pago","altSpellings":["AS","Amerika Sāmoa","Amelika Sāmoa","Sāmoa Amelika"],"region":"Oceania","subregion":"Polynesia","population":57100,"latlng":[-14.33333333,-170.0],"demonym":"American Samoan","area":199.0,"gini":null,"timezones":["UTC-11:00"],"borders":[],"nativeName":"American Samoa","numericCode":"016","currencies":[{"code":"USD","name":"United State Dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"sm","iso639_2":"smo","name":"Samoan","nativeName":"gagana fa'a Samoa"}],"translations":{"de":"Amerikanisch-Samoa","es":"Samoa Americana","fr":"Samoa américaines","ja":"アメリカ領サモア","it":"Samoa Americane","br":"Samoa Americana","pt":"Samoa Americana","nl":"Amerikaans Samoa","hr":"Američka Samoa","fa":"ساموآی آمریکا"},"flag":"https://restcountries.eu/data/asm.svg","regionalBlocs":[],"cioc":"ASA"},{"name":"Andorra","topLevelDomain":[".ad"],"alpha2Code":"AD","alpha3Code":"AND","callingCodes":["376"],"capital":"Andorra la Vella","altSpellings":["AD","Principality of Andorra","Principat d'Andorra"],"region":"Europe","subregion":"Southern Europe","population":78014,"latlng":[42.5,1.5],"demonym":"Andorran","area":468.0,"gini":null,"timezones":["UTC+01:00"],"borders":["FRA","ESP"],"nativeName":"Andorra","numericCode":"020","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"ca","iso639_2":"cat","name":"Catalan","nativeName":"català"}],"translations":{"de":"Andorra","es":"Andorra","fr":"Andorre","ja":"アンドラ","it":"Andorra","br":"Andorra","pt":"Andorra","nl":"Andorra","hr":"Andora","fa":"آندورا"},"flag":"https://restcountries.eu/data/and.svg","regionalBlocs":[],"cioc":"AND"},{"name":"Angola","topLevelDomain":[".ao"],"alpha2Code":"AO","alpha3Code":"AGO","callingCodes":["244"],"capital":"Luanda","altSpellings":["AO","República de Angola","ʁɛpublika de an'ɡɔla"],"region":"Africa","subregion":"Middle Africa","population":25868000,"latlng":[-12.5,18.5],"demonym":"Angolan","area":1246700.0,"gini":58.6,"timezones":["UTC+01:00"],"borders":["COG","COD","ZMB","NAM"],"nativeName":"Angola","numericCode":"024","currencies":[{"code":"AOA","name":"Angolan kwanza","symbol":"Kz"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Angola","es":"Angola","fr":"Angola","ja":"アンゴラ","it":"Angola","br":"Angola","pt":"Angola","nl":"Angola","hr":"Angola","fa":"آنگولا"},"flag":"https://restcountries.eu/data/ago.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"ANG"},{"name":"Anguilla","topLevelDomain":[".ai"],"alpha2Code":"AI","alpha3Code":"AIA","callingCodes":["1264"],"capital":"The Valley","altSpellings":["AI"],"region":"Americas","subregion":"Caribbean","population":13452,"latlng":[18.25,-63.16666666],"demonym":"Anguillian","area":91.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Anguilla","numericCode":"660","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Anguilla","es":"Anguilla","fr":"Anguilla","ja":"アンギラ","it":"Anguilla","br":"Anguila","pt":"Anguila","nl":"Anguilla","hr":"Angvila","fa":"آنگویلا"},"flag":"https://restcountries.eu/data/aia.svg","regionalBlocs":[],"cioc":""},{"name":"Antarctica","topLevelDomain":[".aq"],"alpha2Code":"AQ","alpha3Code":"ATA","callingCodes":["672"],"capital":"","altSpellings":[],"region":"Polar","subregion":"","population":1000,"latlng":[-74.65,4.48],"demonym":"","area":1.4E7,"gini":null,"timezones":["UTC-03:00","UTC+03:00","UTC+05:00","UTC+06:00","UTC+07:00","UTC+08:00","UTC+10:00","UTC+12:00"],"borders":[],"nativeName":"Antarctica","numericCode":"010","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"},{"code":"GBP","name":"British pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Antarktika","es":"Antártida","fr":"Antarctique","ja":"南極大陸","it":"Antartide","br":"Antártida","pt":"Antárctida","nl":"Antarctica","hr":"Antarktika","fa":"جنوبگان"},"flag":"https://restcountries.eu/data/ata.svg","regionalBlocs":[],"cioc":""},{"name":"Antigua and Barbuda","topLevelDomain":[".ag"],"alpha2Code":"AG","alpha3Code":"ATG","callingCodes":["1268"],"capital":"Saint John's","altSpellings":["AG"],"region":"Americas","subregion":"Caribbean","population":86295,"latlng":[17.05,-61.8],"demonym":"Antiguan, Barbudan","area":442.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Antigua and Barbuda","numericCode":"028","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Antigua und Barbuda","es":"Antigua y Barbuda","fr":"Antigua-et-Barbuda","ja":"アンティグア・バーブーダ","it":"Antigua e Barbuda","br":"Antígua e Barbuda","pt":"Antígua e Barbuda","nl":"Antigua en Barbuda","hr":"Antigva i Barbuda","fa":"آنتیگوا و باربودا"},"flag":"https://restcountries.eu/data/atg.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"ANT"},{"name":"Argentina","topLevelDomain":[".ar"],"alpha2Code":"AR","alpha3Code":"ARG","callingCodes":["54"],"capital":"Buenos Aires","altSpellings":["AR","Argentine Republic","República Argentina"],"region":"Americas","subregion":"South America","population":43590400,"latlng":[-34.0,-64.0],"demonym":"Argentinean","area":2780400.0,"gini":44.5,"timezones":["UTC-03:00"],"borders":["BOL","BRA","CHL","PRY","URY"],"nativeName":"Argentina","numericCode":"032","currencies":[{"code":"ARS","name":"Argentine peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"},{"iso639_1":"gn","iso639_2":"grn","name":"Guaraní","nativeName":"Avañe'ẽ"}],"translations":{"de":"Argentinien","es":"Argentina","fr":"Argentine","ja":"アルゼンチン","it":"Argentina","br":"Argentina","pt":"Argentina","nl":"Argentinië","hr":"Argentina","fa":"آرژانتین"},"flag":"https://restcountries.eu/data/arg.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"ARG"},{"name":"Armenia","topLevelDomain":[".am"],"alpha2Code":"AM","alpha3Code":"ARM","callingCodes":["374"],"capital":"Yerevan","altSpellings":["AM","Hayastan","Republic of Armenia","Հայաստանի Հանրապետություն"],"region":"Asia","subregion":"Western Asia","population":2994400,"latlng":[40.0,45.0],"demonym":"Armenian","area":29743.0,"gini":30.9,"timezones":["UTC+04:00"],"borders":["AZE","GEO","IRN","TUR"],"nativeName":"Հայաստան","numericCode":"051","currencies":[{"code":"AMD","name":"Armenian dram","symbol":null}],"languages":[{"iso639_1":"hy","iso639_2":"hye","name":"Armenian","nativeName":"Հայերեն"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Armenien","es":"Armenia","fr":"Arménie","ja":"アルメニア","it":"Armenia","br":"Armênia","pt":"Arménia","nl":"Armenië","hr":"Armenija","fa":"ارمنستان"},"flag":"https://restcountries.eu/data/arm.svg","regionalBlocs":[{"acronym":"EEU","name":"Eurasian Economic Union","otherAcronyms":["EAEU"],"otherNames":[]}],"cioc":"ARM"},{"name":"Aruba","topLevelDomain":[".aw"],"alpha2Code":"AW","alpha3Code":"ABW","callingCodes":["297"],"capital":"Oranjestad","altSpellings":["AW"],"region":"Americas","subregion":"Caribbean","population":107394,"latlng":[12.5,-69.96666666],"demonym":"Aruban","area":180.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Aruba","numericCode":"533","currencies":[{"code":"AWG","name":"Aruban florin","symbol":"ƒ"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"},{"iso639_1":"pa","iso639_2":"pan","name":"(Eastern) Punjabi","nativeName":"ਪੰਜਾਬੀ"}],"translations":{"de":"Aruba","es":"Aruba","fr":"Aruba","ja":"アルバ","it":"Aruba","br":"Aruba","pt":"Aruba","nl":"Aruba","hr":"Aruba","fa":"آروبا"},"flag":"https://restcountries.eu/data/abw.svg","regionalBlocs":[],"cioc":"ARU"},{"name":"Australia","topLevelDomain":[".au"],"alpha2Code":"AU","alpha3Code":"AUS","callingCodes":["61"],"capital":"Canberra","altSpellings":["AU"],"region":"Oceania","subregion":"Australia and New Zealand","population":24117360,"latlng":[-27.0,133.0],"demonym":"Australian","area":7692024.0,"gini":30.5,"timezones":["UTC+05:00","UTC+06:30","UTC+07:00","UTC+08:00","UTC+09:30","UTC+10:00","UTC+10:30","UTC+11:30"],"borders":[],"nativeName":"Australia","numericCode":"036","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Australien","es":"Australia","fr":"Australie","ja":"オーストラリア","it":"Australia","br":"Austrália","pt":"Austrália","nl":"Australië","hr":"Australija","fa":"استرالیا"},"flag":"https://restcountries.eu/data/aus.svg","regionalBlocs":[],"cioc":"AUS"},{"name":"Austria","topLevelDomain":[".at"],"alpha2Code":"AT","alpha3Code":"AUT","callingCodes":["43"],"capital":"Vienna","altSpellings":["AT","Österreich","Osterreich","Oesterreich"],"region":"Europe","subregion":"Western Europe","population":8725931,"latlng":[47.33333333,13.33333333],"demonym":"Austrian","area":83871.0,"gini":26.0,"timezones":["UTC+01:00"],"borders":["CZE","DEU","HUN","ITA","LIE","SVK","SVN","CHE"],"nativeName":"Österreich","numericCode":"040","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"}],"translations":{"de":"Österreich","es":"Austria","fr":"Autriche","ja":"オーストリア","it":"Austria","br":"áustria","pt":"áustria","nl":"Oostenrijk","hr":"Austrija","fa":"اتریش"},"flag":"https://restcountries.eu/data/aut.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"AUT"},{"name":"Azerbaijan","topLevelDomain":[".az"],"alpha2Code":"AZ","alpha3Code":"AZE","callingCodes":["994"],"capital":"Baku","altSpellings":["AZ","Republic of Azerbaijan","Azərbaycan Respublikası"],"region":"Asia","subregion":"Western Asia","population":9730500,"latlng":[40.5,47.5],"demonym":"Azerbaijani","area":86600.0,"gini":33.7,"timezones":["UTC+04:00"],"borders":["ARM","GEO","IRN","RUS","TUR"],"nativeName":"Azərbaycan","numericCode":"031","currencies":[{"code":"AZN","name":"Azerbaijani manat","symbol":null}],"languages":[{"iso639_1":"az","iso639_2":"aze","name":"Azerbaijani","nativeName":"azərbaycan dili"}],"translations":{"de":"Aserbaidschan","es":"Azerbaiyán","fr":"Azerbaïdjan","ja":"アゼルバイジャン","it":"Azerbaijan","br":"Azerbaijão","pt":"Azerbaijão","nl":"Azerbeidzjan","hr":"Azerbajdžan","fa":"آذربایجان"},"flag":"https://restcountries.eu/data/aze.svg","regionalBlocs":[],"cioc":"AZE"},{"name":"Bahamas","topLevelDomain":[".bs"],"alpha2Code":"BS","alpha3Code":"BHS","callingCodes":["1242"],"capital":"Nassau","altSpellings":["BS","Commonwealth of the Bahamas"],"region":"Americas","subregion":"Caribbean","population":378040,"latlng":[24.25,-76.0],"demonym":"Bahamian","area":13943.0,"gini":null,"timezones":["UTC-05:00"],"borders":[],"nativeName":"Bahamas","numericCode":"044","currencies":[{"code":"BSD","name":"Bahamian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Bahamas","es":"Bahamas","fr":"Bahamas","ja":"バハマ","it":"Bahamas","br":"Bahamas","pt":"Baamas","nl":"Bahama’s","hr":"Bahami","fa":"باهاما"},"flag":"https://restcountries.eu/data/bhs.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"BAH"},{"name":"Bahrain","topLevelDomain":[".bh"],"alpha2Code":"BH","alpha3Code":"BHR","callingCodes":["973"],"capital":"Manama","altSpellings":["BH","Kingdom of Bahrain","Mamlakat al-Baḥrayn"],"region":"Asia","subregion":"Western Asia","population":1404900,"latlng":[26.0,50.55],"demonym":"Bahraini","area":765.0,"gini":null,"timezones":["UTC+03:00"],"borders":[],"nativeName":"‏البحرين","numericCode":"048","currencies":[{"code":"BHD","name":"Bahraini dinar","symbol":".د.ب"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Bahrain","es":"Bahrein","fr":"Bahreïn","ja":"バーレーン","it":"Bahrein","br":"Bahrein","pt":"Barém","nl":"Bahrein","hr":"Bahrein","fa":"بحرین"},"flag":"https://restcountries.eu/data/bhr.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"BRN"},{"name":"Bangladesh","topLevelDomain":[".bd"],"alpha2Code":"BD","alpha3Code":"BGD","callingCodes":["880"],"capital":"Dhaka","altSpellings":["BD","People's Republic of Bangladesh","Gônôprôjatôntri Bangladesh"],"region":"Asia","subregion":"Southern Asia","population":161006790,"latlng":[24.0,90.0],"demonym":"Bangladeshi","area":147570.0,"gini":32.1,"timezones":["UTC+06:00"],"borders":["MMR","IND"],"nativeName":"Bangladesh","numericCode":"050","currencies":[{"code":"BDT","name":"Bangladeshi taka","symbol":"৳"}],"languages":[{"iso639_1":"bn","iso639_2":"ben","name":"Bengali","nativeName":"বাংলা"}],"translations":{"de":"Bangladesch","es":"Bangladesh","fr":"Bangladesh","ja":"バングラデシュ","it":"Bangladesh","br":"Bangladesh","pt":"Bangladeche","nl":"Bangladesh","hr":"Bangladeš","fa":"بنگلادش"},"flag":"https://restcountries.eu/data/bgd.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"BAN"},{"name":"Barbados","topLevelDomain":[".bb"],"alpha2Code":"BB","alpha3Code":"BRB","callingCodes":["1246"],"capital":"Bridgetown","altSpellings":["BB"],"region":"Americas","subregion":"Caribbean","population":285000,"latlng":[13.16666666,-59.53333333],"demonym":"Barbadian","area":430.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Barbados","numericCode":"052","currencies":[{"code":"BBD","name":"Barbadian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Barbados","es":"Barbados","fr":"Barbade","ja":"バルバドス","it":"Barbados","br":"Barbados","pt":"Barbados","nl":"Barbados","hr":"Barbados","fa":"باربادوس"},"flag":"https://restcountries.eu/data/brb.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"BAR"},{"name":"Belarus","topLevelDomain":[".by"],"alpha2Code":"BY","alpha3Code":"BLR","callingCodes":["375"],"capital":"Minsk","altSpellings":["BY","Bielaruś","Republic of Belarus","Белоруссия","Республика Беларусь","Belorussiya","Respublika Belarus’"],"region":"Europe","subregion":"Eastern Europe","population":9498700,"latlng":[53.0,28.0],"demonym":"Belarusian","area":207600.0,"gini":26.5,"timezones":["UTC+03:00"],"borders":["LVA","LTU","POL","RUS","UKR"],"nativeName":"Белару́сь","numericCode":"112","currencies":[{"code":"BYN","name":"New Belarusian ruble","symbol":"Br"},{"code":"BYR","name":"Old Belarusian ruble","symbol":"Br"}],"languages":[{"iso639_1":"be","iso639_2":"bel","name":"Belarusian","nativeName":"беларуская мова"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Weißrussland","es":"Bielorrusia","fr":"Biélorussie","ja":"ベラルーシ","it":"Bielorussia","br":"Bielorrússia","pt":"Bielorrússia","nl":"Wit-Rusland","hr":"Bjelorusija","fa":"بلاروس"},"flag":"https://restcountries.eu/data/blr.svg","regionalBlocs":[{"acronym":"EEU","name":"Eurasian Economic Union","otherAcronyms":["EAEU"],"otherNames":[]}],"cioc":"BLR"},{"name":"Belgium","topLevelDomain":[".be"],"alpha2Code":"BE","alpha3Code":"BEL","callingCodes":["32"],"capital":"Brussels","altSpellings":["BE","België","Belgie","Belgien","Belgique","Kingdom of Belgium","Koninkrijk België","Royaume de Belgique","Königreich Belgien"],"region":"Europe","subregion":"Western Europe","population":11319511,"latlng":[50.83333333,4.0],"demonym":"Belgian","area":30528.0,"gini":33.0,"timezones":["UTC+01:00"],"borders":["FRA","DEU","LUX","NLD"],"nativeName":"België","numericCode":"056","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"}],"translations":{"de":"Belgien","es":"Bélgica","fr":"Belgique","ja":"ベルギー","it":"Belgio","br":"Bélgica","pt":"Bélgica","nl":"België","hr":"Belgija","fa":"بلژیک"},"flag":"https://restcountries.eu/data/bel.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"BEL"},{"name":"Belize","topLevelDomain":[".bz"],"alpha2Code":"BZ","alpha3Code":"BLZ","callingCodes":["501"],"capital":"Belmopan","altSpellings":["BZ"],"region":"Americas","subregion":"Central America","population":370300,"latlng":[17.25,-88.75],"demonym":"Belizean","area":22966.0,"gini":53.1,"timezones":["UTC-06:00"],"borders":["GTM","MEX"],"nativeName":"Belize","numericCode":"084","currencies":[{"code":"BZD","name":"Belize dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Belize","es":"Belice","fr":"Belize","ja":"ベリーズ","it":"Belize","br":"Belize","pt":"Belize","nl":"Belize","hr":"Belize","fa":"بلیز"},"flag":"https://restcountries.eu/data/blz.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]},{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"BIZ"},{"name":"Benin","topLevelDomain":[".bj"],"alpha2Code":"BJ","alpha3Code":"BEN","callingCodes":["229"],"capital":"Porto-Novo","altSpellings":["BJ","Republic of Benin","République du Bénin"],"region":"Africa","subregion":"Western Africa","population":10653654,"latlng":[9.5,2.25],"demonym":"Beninese","area":112622.0,"gini":38.6,"timezones":["UTC+01:00"],"borders":["BFA","NER","NGA","TGO"],"nativeName":"Bénin","numericCode":"204","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Benin","es":"Benín","fr":"Bénin","ja":"ベナン","it":"Benin","br":"Benin","pt":"Benim","nl":"Benin","hr":"Benin","fa":"بنین"},"flag":"https://restcountries.eu/data/ben.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"BEN"},{"name":"Bermuda","topLevelDomain":[".bm"],"alpha2Code":"BM","alpha3Code":"BMU","callingCodes":["1441"],"capital":"Hamilton","altSpellings":["BM","The Islands of Bermuda","The Bermudas","Somers Isles"],"region":"Americas","subregion":"Northern America","population":61954,"latlng":[32.33333333,-64.75],"demonym":"Bermudian","area":54.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Bermuda","numericCode":"060","currencies":[{"code":"BMD","name":"Bermudian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Bermuda","es":"Bermudas","fr":"Bermudes","ja":"バミューダ","it":"Bermuda","br":"Bermudas","pt":"Bermudas","nl":"Bermuda","hr":"Bermudi","fa":"برمودا"},"flag":"https://restcountries.eu/data/bmu.svg","regionalBlocs":[],"cioc":"BER"},{"name":"Bhutan","topLevelDomain":[".bt"],"alpha2Code":"BT","alpha3Code":"BTN","callingCodes":["975"],"capital":"Thimphu","altSpellings":["BT","Kingdom of Bhutan"],"region":"Asia","subregion":"Southern Asia","population":775620,"latlng":[27.5,90.5],"demonym":"Bhutanese","area":38394.0,"gini":38.1,"timezones":["UTC+06:00"],"borders":["CHN","IND"],"nativeName":"ʼbrug-yul","numericCode":"064","currencies":[{"code":"BTN","name":"Bhutanese ngultrum","symbol":"Nu."},{"code":"INR","name":"Indian rupee","symbol":"₹"}],"languages":[{"iso639_1":"dz","iso639_2":"dzo","name":"Dzongkha","nativeName":"རྫོང་ཁ"}],"translations":{"de":"Bhutan","es":"Bután","fr":"Bhoutan","ja":"ブータン","it":"Bhutan","br":"Butão","pt":"Butão","nl":"Bhutan","hr":"Butan","fa":"بوتان"},"flag":"https://restcountries.eu/data/btn.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"BHU"},{"name":"Bolivia (Plurinational State of)","topLevelDomain":[".bo"],"alpha2Code":"BO","alpha3Code":"BOL","callingCodes":["591"],"capital":"Sucre","altSpellings":["BO","Buliwya","Wuliwya","Plurinational State of Bolivia","Estado Plurinacional de Bolivia","Buliwya Mamallaqta","Wuliwya Suyu","Tetã Volívia"],"region":"Americas","subregion":"South America","population":10985059,"latlng":[-17.0,-65.0],"demonym":"Bolivian","area":1098581.0,"gini":56.3,"timezones":["UTC-04:00"],"borders":["ARG","BRA","CHL","PRY","PER"],"nativeName":"Bolivia","numericCode":"068","currencies":[{"code":"BOB","name":"Bolivian boliviano","symbol":"Bs."}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"},{"iso639_1":"ay","iso639_2":"aym","name":"Aymara","nativeName":"aymar aru"},{"iso639_1":"qu","iso639_2":"que","name":"Quechua","nativeName":"Runa Simi"}],"translations":{"de":"Bolivien","es":"Bolivia","fr":"Bolivie","ja":"ボリビア多民族国","it":"Bolivia","br":"Bolívia","pt":"Bolívia","nl":"Bolivia","hr":"Bolivija","fa":"بولیوی"},"flag":"https://restcountries.eu/data/bol.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"BOL"},{"name":"Bonaire, Sint Eustatius and Saba","topLevelDomain":[".an",".nl"],"alpha2Code":"BQ","alpha3Code":"BES","callingCodes":["5997"],"capital":"Kralendijk","altSpellings":["BQ","Boneiru"],"region":"Americas","subregion":"Caribbean","population":17408,"latlng":[12.15,-68.266667],"demonym":"Dutch","area":294.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Bonaire","numericCode":"535","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"}],"translations":{"de":"Bonaire, Sint Eustatius und Saba","es":null,"fr":"Bonaire, Saint-Eustache et Saba","ja":null,"it":"Bonaire, Saint-Eustache e Saba","br":"Bonaire","pt":"Bonaire","nl":null,"hr":null,"fa":"بونیر"},"flag":"https://restcountries.eu/data/bes.svg","regionalBlocs":[],"cioc":null},{"name":"Bosnia and Herzegovina","topLevelDomain":[".ba"],"alpha2Code":"BA","alpha3Code":"BIH","callingCodes":["387"],"capital":"Sarajevo","altSpellings":["BA","Bosnia-Herzegovina","Босна и Херцеговина"],"region":"Europe","subregion":"Southern Europe","population":3531159,"latlng":[44.0,18.0],"demonym":"Bosnian, Herzegovinian","area":51209.0,"gini":36.2,"timezones":["UTC+01:00"],"borders":["HRV","MNE","SRB"],"nativeName":"Bosna i Hercegovina","numericCode":"070","currencies":[{"code":"BAM","name":"Bosnia and Herzegovina convertible mark","symbol":null}],"languages":[{"iso639_1":"bs","iso639_2":"bos","name":"Bosnian","nativeName":"bosanski jezik"},{"iso639_1":"hr","iso639_2":"hrv","name":"Croatian","nativeName":"hrvatski jezik"},{"iso639_1":"sr","iso639_2":"srp","name":"Serbian","nativeName":"српски језик"}],"translations":{"de":"Bosnien und Herzegowina","es":"Bosnia y Herzegovina","fr":"Bosnie-Herzégovine","ja":"ボスニア・ヘルツェゴビナ","it":"Bosnia ed Erzegovina","br":"Bósnia e Herzegovina","pt":"Bósnia e Herzegovina","nl":"Bosnië en Herzegovina","hr":"Bosna i Hercegovina","fa":"بوسنی و هرزگوین"},"flag":"https://restcountries.eu/data/bih.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"BIH"},{"name":"Botswana","topLevelDomain":[".bw"],"alpha2Code":"BW","alpha3Code":"BWA","callingCodes":["267"],"capital":"Gaborone","altSpellings":["BW","Republic of Botswana","Lefatshe la Botswana"],"region":"Africa","subregion":"Southern Africa","population":2141206,"latlng":[-22.0,24.0],"demonym":"Motswana","area":582000.0,"gini":61.0,"timezones":["UTC+02:00"],"borders":["NAM","ZAF","ZMB","ZWE"],"nativeName":"Botswana","numericCode":"072","currencies":[{"code":"BWP","name":"Botswana pula","symbol":"P"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"tn","iso639_2":"tsn","name":"Tswana","nativeName":"Setswana"}],"translations":{"de":"Botswana","es":"Botswana","fr":"Botswana","ja":"ボツワナ","it":"Botswana","br":"Botsuana","pt":"Botsuana","nl":"Botswana","hr":"Bocvana","fa":"بوتسوانا"},"flag":"https://restcountries.eu/data/bwa.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"BOT"},{"name":"Bouvet Island","topLevelDomain":[".bv"],"alpha2Code":"BV","alpha3Code":"BVT","callingCodes":[""],"capital":"","altSpellings":["BV","Bouvetøya","Bouvet-øya"],"region":"","subregion":"","population":0,"latlng":[-54.43333333,3.4],"demonym":"","area":49.0,"gini":null,"timezones":["UTC+01:00"],"borders":[],"nativeName":"Bouvetøya","numericCode":"074","currencies":[{"code":"NOK","name":"Norwegian krone","symbol":"kr"}],"languages":[{"iso639_1":"no","iso639_2":"nor","name":"Norwegian","nativeName":"Norsk"},{"iso639_1":"nb","iso639_2":"nob","name":"Norwegian Bokmål","nativeName":"Norsk bokmål"},{"iso639_1":"nn","iso639_2":"nno","name":"Norwegian Nynorsk","nativeName":"Norsk nynorsk"}],"translations":{"de":"Bouvetinsel","es":"Isla Bouvet","fr":"Île Bouvet","ja":"ブーベ島","it":"Isola Bouvet","br":"Ilha Bouvet","pt":"Ilha Bouvet","nl":"Bouveteiland","hr":"Otok Bouvet","fa":"جزیره بووه"},"flag":"https://restcountries.eu/data/bvt.svg","regionalBlocs":[],"cioc":""},{"name":"Brazil","topLevelDomain":[".br"],"alpha2Code":"BR","alpha3Code":"BRA","callingCodes":["55"],"capital":"Brasília","altSpellings":["BR","Brasil","Federative Republic of Brazil","República Federativa do Brasil"],"region":"Americas","subregion":"South America","population":206135893,"latlng":[-10.0,-55.0],"demonym":"Brazilian","area":8515767.0,"gini":54.7,"timezones":["UTC-05:00","UTC-04:00","UTC-03:00","UTC-02:00"],"borders":["ARG","BOL","COL","GUF","GUY","PRY","PER","SUR","URY","VEN"],"nativeName":"Brasil","numericCode":"076","currencies":[{"code":"BRL","name":"Brazilian real","symbol":"R$"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Brasilien","es":"Brasil","fr":"Brésil","ja":"ブラジル","it":"Brasile","br":"Brasil","pt":"Brasil","nl":"Brazilië","hr":"Brazil","fa":"برزیل"},"flag":"https://restcountries.eu/data/bra.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"BRA"},{"name":"British Indian Ocean Territory","topLevelDomain":[".io"],"alpha2Code":"IO","alpha3Code":"IOT","callingCodes":["246"],"capital":"Diego Garcia","altSpellings":["IO"],"region":"Africa","subregion":"Eastern Africa","population":3000,"latlng":[-6.0,71.5],"demonym":"Indian","area":60.0,"gini":null,"timezones":["UTC+06:00"],"borders":[],"nativeName":"British Indian Ocean Territory","numericCode":"086","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Britisches Territorium im Indischen Ozean","es":"Territorio Británico del Océano Índico","fr":"Territoire britannique de l'océan Indien","ja":"イギリス領インド洋地域","it":"Territorio britannico dell'oceano indiano","br":"Território Britânico do Oceano íÍdico","pt":"Território Britânico do Oceano Índico","nl":"Britse Gebieden in de Indische Oceaan","hr":"Britanski Indijskooceanski teritorij","fa":"قلمرو بریتانیا در اقیانوس هند"},"flag":"https://restcountries.eu/data/iot.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"United States Minor Outlying Islands","topLevelDomain":[".us"],"alpha2Code":"UM","alpha3Code":"UMI","callingCodes":[""],"capital":"","altSpellings":["UM"],"region":"Americas","subregion":"Northern America","population":300,"latlng":[],"demonym":"American","area":null,"gini":null,"timezones":["UTC-11:00","UTC-10:00","UTC+12:00"],"borders":[],"nativeName":"United States Minor Outlying Islands","numericCode":"581","currencies":[{"code":"USD","name":"United States Dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Kleinere Inselbesitzungen der Vereinigten Staaten","es":"Islas Ultramarinas Menores de Estados Unidos","fr":"Îles mineures éloignées des États-Unis","ja":"合衆国領有小離島","it":"Isole minori esterne degli Stati Uniti d'America","br":"Ilhas Menores Distantes dos Estados Unidos","pt":"Ilhas Menores Distantes dos Estados Unidos","nl":"Kleine afgelegen eilanden van de Verenigde Staten","hr":"Mali udaljeni otoci SAD-a","fa":"جزایر کوچک حاشیه‌ای ایالات متحده آمریکا"},"flag":"https://restcountries.eu/data/umi.svg","regionalBlocs":[],"cioc":""},{"name":"Virgin Islands (British)","topLevelDomain":[".vg"],"alpha2Code":"VG","alpha3Code":"VGB","callingCodes":["1284"],"capital":"Road Town","altSpellings":["VG"],"region":"Americas","subregion":"Caribbean","population":28514,"latlng":[18.431383,-64.62305],"demonym":"Virgin Islander","area":151.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"British Virgin Islands","numericCode":"092","currencies":[{"code":null,"name":"[D]","symbol":"$"},{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Britische Jungferninseln","es":"Islas Vírgenes del Reino Unido","fr":"Îles Vierges britanniques","ja":"イギリス領ヴァージン諸島","it":"Isole Vergini Britanniche","br":"Ilhas Virgens Britânicas","pt":"Ilhas Virgens Britânicas","nl":"Britse Maagdeneilanden","hr":"Britanski Djevičanski Otoci","fa":"جزایر ویرجین بریتانیا"},"flag":"https://restcountries.eu/data/vgb.svg","regionalBlocs":[],"cioc":"IVB"},{"name":"Virgin Islands (U.S.)","topLevelDomain":[".vi"],"alpha2Code":"VI","alpha3Code":"VIR","callingCodes":["1 340"],"capital":"Charlotte Amalie","altSpellings":["VI","USVI","American Virgin Islands","U.S. Virgin Islands"],"region":"Americas","subregion":"Caribbean","population":114743,"latlng":[18.34,-64.93],"demonym":"Virgin Islander","area":346.36,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Virgin Islands of the United States","numericCode":"850","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Amerikanische Jungferninseln","es":"Islas Vírgenes de los Estados Unidos","fr":"Îles Vierges des États-Unis","ja":"アメリカ領ヴァージン諸島","it":"Isole Vergini americane","br":"Ilhas Virgens Americanas","pt":"Ilhas Virgens Americanas","nl":"Verenigde Staten Maagdeneilanden","hr":null,"fa":"جزایر ویرجین آمریکا"},"flag":"https://restcountries.eu/data/vir.svg","regionalBlocs":[],"cioc":"ISV"},{"name":"Brunei Darussalam","topLevelDomain":[".bn"],"alpha2Code":"BN","alpha3Code":"BRN","callingCodes":["673"],"capital":"Bandar Seri Begawan","altSpellings":["BN","Nation of Brunei"," the Abode of Peace"],"region":"Asia","subregion":"South-Eastern Asia","population":411900,"latlng":[4.5,114.66666666],"demonym":"Bruneian","area":5765.0,"gini":null,"timezones":["UTC+08:00"],"borders":["MYS"],"nativeName":"Negara Brunei Darussalam","numericCode":"096","currencies":[{"code":"BND","name":"Brunei dollar","symbol":"$"},{"code":"SGD","name":"Singapore dollar","symbol":"$"}],"languages":[{"iso639_1":"ms","iso639_2":"msa","name":"Malay","nativeName":"bahasa Melayu"}],"translations":{"de":"Brunei","es":"Brunei","fr":"Brunei","ja":"ブルネイ・ダルサラーム","it":"Brunei","br":"Brunei","pt":"Brunei","nl":"Brunei","hr":"Brunej","fa":"برونئی"},"flag":"https://restcountries.eu/data/brn.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"BRU"},{"name":"Bulgaria","topLevelDomain":[".bg"],"alpha2Code":"BG","alpha3Code":"BGR","callingCodes":["359"],"capital":"Sofia","altSpellings":["BG","Republic of Bulgaria","Република България"],"region":"Europe","subregion":"Eastern Europe","population":7153784,"latlng":[43.0,25.0],"demonym":"Bulgarian","area":110879.0,"gini":28.2,"timezones":["UTC+02:00"],"borders":["GRC","MKD","ROU","SRB","TUR"],"nativeName":"България","numericCode":"100","currencies":[{"code":"BGN","name":"Bulgarian lev","symbol":"лв"}],"languages":[{"iso639_1":"bg","iso639_2":"bul","name":"Bulgarian","nativeName":"български език"}],"translations":{"de":"Bulgarien","es":"Bulgaria","fr":"Bulgarie","ja":"ブルガリア","it":"Bulgaria","br":"Bulgária","pt":"Bulgária","nl":"Bulgarije","hr":"Bugarska","fa":"بلغارستان"},"flag":"https://restcountries.eu/data/bgr.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"BUL"},{"name":"Burkina Faso","topLevelDomain":[".bf"],"alpha2Code":"BF","alpha3Code":"BFA","callingCodes":["226"],"capital":"Ouagadougou","altSpellings":["BF"],"region":"Africa","subregion":"Western Africa","population":19034397,"latlng":[13.0,-2.0],"demonym":"Burkinabe","area":272967.0,"gini":39.8,"timezones":["UTC"],"borders":["BEN","CIV","GHA","MLI","NER","TGO"],"nativeName":"Burkina Faso","numericCode":"854","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ff","iso639_2":"ful","name":"Fula","nativeName":"Fulfulde"}],"translations":{"de":"Burkina Faso","es":"Burkina Faso","fr":"Burkina Faso","ja":"ブルキナファソ","it":"Burkina Faso","br":"Burkina Faso","pt":"Burquina Faso","nl":"Burkina Faso","hr":"Burkina Faso","fa":"بورکینافاسو"},"flag":"https://restcountries.eu/data/bfa.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"BUR"},{"name":"Burundi","topLevelDomain":[".bi"],"alpha2Code":"BI","alpha3Code":"BDI","callingCodes":["257"],"capital":"Bujumbura","altSpellings":["BI","Republic of Burundi","Republika y'Uburundi","République du Burundi"],"region":"Africa","subregion":"Eastern Africa","population":10114505,"latlng":[-3.5,30.0],"demonym":"Burundian","area":27834.0,"gini":33.3,"timezones":["UTC+02:00"],"borders":["COD","RWA","TZA"],"nativeName":"Burundi","numericCode":"108","currencies":[{"code":"BIF","name":"Burundian franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"rn","iso639_2":"run","name":"Kirundi","nativeName":"Ikirundi"}],"translations":{"de":"Burundi","es":"Burundi","fr":"Burundi","ja":"ブルンジ","it":"Burundi","br":"Burundi","pt":"Burúndi","nl":"Burundi","hr":"Burundi","fa":"بوروندی"},"flag":"https://restcountries.eu/data/bdi.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"BDI"},{"name":"Cambodia","topLevelDomain":[".kh"],"alpha2Code":"KH","alpha3Code":"KHM","callingCodes":["855"],"capital":"Phnom Penh","altSpellings":["KH","Kingdom of Cambodia"],"region":"Asia","subregion":"South-Eastern Asia","population":15626444,"latlng":[13.0,105.0],"demonym":"Cambodian","area":181035.0,"gini":37.9,"timezones":["UTC+07:00"],"borders":["LAO","THA","VNM"],"nativeName":"Kâmpŭchéa","numericCode":"116","currencies":[{"code":"KHR","name":"Cambodian riel","symbol":"៛"},{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"km","iso639_2":"khm","name":"Khmer","nativeName":"ខ្មែរ"}],"translations":{"de":"Kambodscha","es":"Camboya","fr":"Cambodge","ja":"カンボジア","it":"Cambogia","br":"Camboja","pt":"Camboja","nl":"Cambodja","hr":"Kambodža","fa":"کامبوج"},"flag":"https://restcountries.eu/data/khm.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"CAM"},{"name":"Cameroon","topLevelDomain":[".cm"],"alpha2Code":"CM","alpha3Code":"CMR","callingCodes":["237"],"capital":"Yaoundé","altSpellings":["CM","Republic of Cameroon","République du Cameroun"],"region":"Africa","subregion":"Middle Africa","population":22709892,"latlng":[6.0,12.0],"demonym":"Cameroonian","area":475442.0,"gini":38.9,"timezones":["UTC+01:00"],"borders":["CAF","TCD","COG","GNQ","GAB","NGA"],"nativeName":"Cameroon","numericCode":"120","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Kamerun","es":"Camerún","fr":"Cameroun","ja":"カメルーン","it":"Camerun","br":"Camarões","pt":"Camarões","nl":"Kameroen","hr":"Kamerun","fa":"کامرون"},"flag":"https://restcountries.eu/data/cmr.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CMR"},{"name":"Canada","topLevelDomain":[".ca"],"alpha2Code":"CA","alpha3Code":"CAN","callingCodes":["1"],"capital":"Ottawa","altSpellings":["CA"],"region":"Americas","subregion":"Northern America","population":36155487,"latlng":[60.0,-95.0],"demonym":"Canadian","area":9984670.0,"gini":32.6,"timezones":["UTC-08:00","UTC-07:00","UTC-06:00","UTC-05:00","UTC-04:00","UTC-03:30"],"borders":["USA"],"nativeName":"Canada","numericCode":"124","currencies":[{"code":"CAD","name":"Canadian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Kanada","es":"Canadá","fr":"Canada","ja":"カナダ","it":"Canada","br":"Canadá","pt":"Canadá","nl":"Canada","hr":"Kanada","fa":"کانادا"},"flag":"https://restcountries.eu/data/can.svg","regionalBlocs":[{"acronym":"NAFTA","name":"North American Free Trade Agreement","otherAcronyms":[],"otherNames":["Tratado de Libre Comercio de América del Norte","Accord de Libre-échange Nord-Américain"]}],"cioc":"CAN"},{"name":"Cabo Verde","topLevelDomain":[".cv"],"alpha2Code":"CV","alpha3Code":"CPV","callingCodes":["238"],"capital":"Praia","altSpellings":["CV","Republic of Cabo Verde","República de Cabo Verde"],"region":"Africa","subregion":"Western Africa","population":531239,"latlng":[16.0,-24.0],"demonym":"Cape Verdian","area":4033.0,"gini":50.5,"timezones":["UTC-01:00"],"borders":[],"nativeName":"Cabo Verde","numericCode":"132","currencies":[{"code":"CVE","name":"Cape Verdean escudo","symbol":"Esc"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Kap Verde","es":"Cabo Verde","fr":"Cap Vert","ja":"カーボベルデ","it":"Capo Verde","br":"Cabo Verde","pt":"Cabo Verde","nl":"Kaapverdië","hr":"Zelenortska Republika","fa":"کیپ ورد"},"flag":"https://restcountries.eu/data/cpv.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CPV"},{"name":"Cayman Islands","topLevelDomain":[".ky"],"alpha2Code":"KY","alpha3Code":"CYM","callingCodes":["1345"],"capital":"George Town","altSpellings":["KY"],"region":"Americas","subregion":"Caribbean","population":58238,"latlng":[19.5,-80.5],"demonym":"Caymanian","area":264.0,"gini":null,"timezones":["UTC-05:00"],"borders":[],"nativeName":"Cayman Islands","numericCode":"136","currencies":[{"code":"KYD","name":"Cayman Islands dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Kaimaninseln","es":"Islas Caimán","fr":"Îles Caïmans","ja":"ケイマン諸島","it":"Isole Cayman","br":"Ilhas Cayman","pt":"Ilhas Caimão","nl":"Caymaneilanden","hr":"Kajmanski otoci","fa":"جزایر کیمن"},"flag":"https://restcountries.eu/data/cym.svg","regionalBlocs":[],"cioc":"CAY"},{"name":"Central African Republic","topLevelDomain":[".cf"],"alpha2Code":"CF","alpha3Code":"CAF","callingCodes":["236"],"capital":"Bangui","altSpellings":["CF","Central African Republic","République centrafricaine"],"region":"Africa","subregion":"Middle Africa","population":4998000,"latlng":[7.0,21.0],"demonym":"Central African","area":622984.0,"gini":56.3,"timezones":["UTC+01:00"],"borders":["CMR","TCD","COD","COG","SSD","SDN"],"nativeName":"Ködörösêse tî Bêafrîka","numericCode":"140","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"sg","iso639_2":"sag","name":"Sango","nativeName":"yângâ tî sängö"}],"translations":{"de":"Zentralafrikanische Republik","es":"República Centroafricana","fr":"République centrafricaine","ja":"中央アフリカ共和国","it":"Repubblica Centrafricana","br":"República Centro-Africana","pt":"República Centro-Africana","nl":"Centraal-Afrikaanse Republiek","hr":"Srednjoafrička Republika","fa":"جمهوری آفریقای مرکزی"},"flag":"https://restcountries.eu/data/caf.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CAF"},{"name":"Chad","topLevelDomain":[".td"],"alpha2Code":"TD","alpha3Code":"TCD","callingCodes":["235"],"capital":"N'Djamena","altSpellings":["TD","Tchad","Republic of Chad","République du Tchad"],"region":"Africa","subregion":"Middle Africa","population":14497000,"latlng":[15.0,19.0],"demonym":"Chadian","area":1284000.0,"gini":39.8,"timezones":["UTC+01:00"],"borders":["CMR","CAF","LBY","NER","NGA","SSD"],"nativeName":"Tchad","numericCode":"148","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Tschad","es":"Chad","fr":"Tchad","ja":"チャド","it":"Ciad","br":"Chade","pt":"Chade","nl":"Tsjaad","hr":"Čad","fa":"چاد"},"flag":"https://restcountries.eu/data/tcd.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CHA"},{"name":"Chile","topLevelDomain":[".cl"],"alpha2Code":"CL","alpha3Code":"CHL","callingCodes":["56"],"capital":"Santiago","altSpellings":["CL","Republic of Chile","República de Chile"],"region":"Americas","subregion":"South America","population":18191900,"latlng":[-30.0,-71.0],"demonym":"Chilean","area":756102.0,"gini":52.1,"timezones":["UTC-06:00","UTC-04:00"],"borders":["ARG","BOL","PER"],"nativeName":"Chile","numericCode":"152","currencies":[{"code":"CLP","name":"Chilean peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Chile","es":"Chile","fr":"Chili","ja":"チリ","it":"Cile","br":"Chile","pt":"Chile","nl":"Chili","hr":"Čile","fa":"شیلی"},"flag":"https://restcountries.eu/data/chl.svg","regionalBlocs":[{"acronym":"PA","name":"Pacific Alliance","otherAcronyms":[],"otherNames":["Alianza del Pacífico"]},{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"CHI"},{"name":"China","topLevelDomain":[".cn"],"alpha2Code":"CN","alpha3Code":"CHN","callingCodes":["86"],"capital":"Beijing","altSpellings":["CN","Zhōngguó","Zhongguo","Zhonghua","People's Republic of China","中华人民共和国","Zhōnghuá Rénmín Gònghéguó"],"region":"Asia","subregion":"Eastern Asia","population":1377422166,"latlng":[35.0,105.0],"demonym":"Chinese","area":9640011.0,"gini":47.0,"timezones":["UTC+08:00"],"borders":["AFG","BTN","MMR","HKG","IND","KAZ","PRK","KGZ","LAO","MAC","MNG","PAK","RUS","TJK","VNM"],"nativeName":"中国","numericCode":"156","currencies":[{"code":"CNY","name":"Chinese yuan","symbol":"¥"}],"languages":[{"iso639_1":"zh","iso639_2":"zho","name":"Chinese","nativeName":"中文 (Zhōngwén)"}],"translations":{"de":"China","es":"China","fr":"Chine","ja":"中国","it":"Cina","br":"China","pt":"China","nl":"China","hr":"Kina","fa":"چین"},"flag":"https://restcountries.eu/data/chn.svg","regionalBlocs":[],"cioc":"CHN"},{"name":"Christmas Island","topLevelDomain":[".cx"],"alpha2Code":"CX","alpha3Code":"CXR","callingCodes":["61"],"capital":"Flying Fish Cove","altSpellings":["CX","Territory of Christmas Island"],"region":"Oceania","subregion":"Australia and New Zealand","population":2072,"latlng":[-10.5,105.66666666],"demonym":"Christmas Island","area":135.0,"gini":null,"timezones":["UTC+07:00"],"borders":[],"nativeName":"Christmas Island","numericCode":"162","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Weihnachtsinsel","es":"Isla de Navidad","fr":"Île Christmas","ja":"クリスマス島","it":"Isola di Natale","br":"Ilha Christmas","pt":"Ilha do Natal","nl":"Christmaseiland","hr":"Božićni otok","fa":"جزیره کریسمس"},"flag":"https://restcountries.eu/data/cxr.svg","regionalBlocs":[],"cioc":""},{"name":"Cocos (Keeling) Islands","topLevelDomain":[".cc"],"alpha2Code":"CC","alpha3Code":"CCK","callingCodes":["61"],"capital":"West Island","altSpellings":["CC","Territory of the Cocos (Keeling) Islands","Keeling Islands"],"region":"Oceania","subregion":"Australia and New Zealand","population":550,"latlng":[-12.5,96.83333333],"demonym":"Cocos Islander","area":14.0,"gini":null,"timezones":["UTC+06:30"],"borders":[],"nativeName":"Cocos (Keeling) Islands","numericCode":"166","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Kokosinseln","es":"Islas Cocos o Islas Keeling","fr":"Îles Cocos","ja":"ココス(キーリング)諸島","it":"Isole Cocos e Keeling","br":"Ilhas Cocos","pt":"Ilhas dos Cocos","nl":"Cocoseilanden","hr":"Kokosovi Otoci","fa":"جزایر کوکوس"},"flag":"https://restcountries.eu/data/cck.svg","regionalBlocs":[],"cioc":""},{"name":"Colombia","topLevelDomain":[".co"],"alpha2Code":"CO","alpha3Code":"COL","callingCodes":["57"],"capital":"Bogotá","altSpellings":["CO","Republic of Colombia","República de Colombia"],"region":"Americas","subregion":"South America","population":48759958,"latlng":[4.0,-72.0],"demonym":"Colombian","area":1141748.0,"gini":55.9,"timezones":["UTC-05:00"],"borders":["BRA","ECU","PAN","PER","VEN"],"nativeName":"Colombia","numericCode":"170","currencies":[{"code":"COP","name":"Colombian peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Kolumbien","es":"Colombia","fr":"Colombie","ja":"コロンビア","it":"Colombia","br":"Colômbia","pt":"Colômbia","nl":"Colombia","hr":"Kolumbija","fa":"کلمبیا"},"flag":"https://restcountries.eu/data/col.svg","regionalBlocs":[{"acronym":"PA","name":"Pacific Alliance","otherAcronyms":[],"otherNames":["Alianza del Pacífico"]},{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"COL"},{"name":"Comoros","topLevelDomain":[".km"],"alpha2Code":"KM","alpha3Code":"COM","callingCodes":["269"],"capital":"Moroni","altSpellings":["KM","Union of the Comoros","Union des Comores","Udzima wa Komori","al-Ittiḥād al-Qumurī"],"region":"Africa","subregion":"Eastern Africa","population":806153,"latlng":[-12.16666666,44.25],"demonym":"Comoran","area":1862.0,"gini":64.3,"timezones":["UTC+03:00"],"borders":[],"nativeName":"Komori","numericCode":"174","currencies":[{"code":"KMF","name":"Comorian franc","symbol":"Fr"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Union der Komoren","es":"Comoras","fr":"Comores","ja":"コモロ","it":"Comore","br":"Comores","pt":"Comores","nl":"Comoren","hr":"Komori","fa":"کومور"},"flag":"https://restcountries.eu/data/com.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"COM"},{"name":"Congo","topLevelDomain":[".cg"],"alpha2Code":"CG","alpha3Code":"COG","callingCodes":["242"],"capital":"Brazzaville","altSpellings":["CG","Congo-Brazzaville"],"region":"Africa","subregion":"Middle Africa","population":4741000,"latlng":[-1.0,15.0],"demonym":"Congolese","area":342000.0,"gini":47.3,"timezones":["UTC+01:00"],"borders":["AGO","CMR","CAF","COD","GAB"],"nativeName":"République du Congo","numericCode":"178","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ln","iso639_2":"lin","name":"Lingala","nativeName":"Lingála"}],"translations":{"de":"Kongo","es":"Congo","fr":"Congo","ja":"コンゴ共和国","it":"Congo","br":"Congo","pt":"Congo","nl":"Congo [Republiek]","hr":"Kongo","fa":"کنگو"},"flag":"https://restcountries.eu/data/cog.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CGO"},{"name":"Congo (Democratic Republic of the)","topLevelDomain":[".cd"],"alpha2Code":"CD","alpha3Code":"COD","callingCodes":["243"],"capital":"Kinshasa","altSpellings":["CD","DR Congo","Congo-Kinshasa","DRC"],"region":"Africa","subregion":"Middle Africa","population":85026000,"latlng":[0.0,25.0],"demonym":"Congolese","area":2344858.0,"gini":null,"timezones":["UTC+01:00","UTC+02:00"],"borders":["AGO","BDI","CAF","COG","RWA","SSD","TZA","UGA","ZMB"],"nativeName":"République démocratique du Congo","numericCode":"180","currencies":[{"code":"CDF","name":"Congolese franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ln","iso639_2":"lin","name":"Lingala","nativeName":"Lingála"},{"iso639_1":"kg","iso639_2":"kon","name":"Kongo","nativeName":"Kikongo"},{"iso639_1":"sw","iso639_2":"swa","name":"Swahili","nativeName":"Kiswahili"},{"iso639_1":"lu","iso639_2":"lub","name":"Luba-Katanga","nativeName":"Tshiluba"}],"translations":{"de":"Kongo (Dem. Rep.)","es":"Congo (Rep. Dem.)","fr":"Congo (Rép. dém.)","ja":"コンゴ民主共和国","it":"Congo (Rep. Dem.)","br":"RD Congo","pt":"RD Congo","nl":"Congo [DRC]","hr":"Kongo, Demokratska Republika","fa":"جمهوری کنگو"},"flag":"https://restcountries.eu/data/cod.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"COD"},{"name":"Cook Islands","topLevelDomain":[".ck"],"alpha2Code":"CK","alpha3Code":"COK","callingCodes":["682"],"capital":"Avarua","altSpellings":["CK","Kūki 'Āirani"],"region":"Oceania","subregion":"Polynesia","population":18100,"latlng":[-21.23333333,-159.76666666],"demonym":"Cook Islander","area":236.0,"gini":null,"timezones":["UTC-10:00"],"borders":[],"nativeName":"Cook Islands","numericCode":"184","currencies":[{"code":"NZD","name":"New Zealand dollar","symbol":"$"},{"code":"CKD","name":"Cook Islands dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Cookinseln","es":"Islas Cook","fr":"Îles Cook","ja":"クック諸島","it":"Isole Cook","br":"Ilhas Cook","pt":"Ilhas Cook","nl":"Cookeilanden","hr":"Cookovo Otočje","fa":"جزایر کوک"},"flag":"https://restcountries.eu/data/cok.svg","regionalBlocs":[],"cioc":"COK"},{"name":"Costa Rica","topLevelDomain":[".cr"],"alpha2Code":"CR","alpha3Code":"CRI","callingCodes":["506"],"capital":"San José","altSpellings":["CR","Republic of Costa Rica","República de Costa Rica"],"region":"Americas","subregion":"Central America","population":4890379,"latlng":[10.0,-84.0],"demonym":"Costa Rican","area":51100.0,"gini":50.7,"timezones":["UTC-06:00"],"borders":["NIC","PAN"],"nativeName":"Costa Rica","numericCode":"188","currencies":[{"code":"CRC","name":"Costa Rican colón","symbol":"₡"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Costa Rica","es":"Costa Rica","fr":"Costa Rica","ja":"コスタリカ","it":"Costa Rica","br":"Costa Rica","pt":"Costa Rica","nl":"Costa Rica","hr":"Kostarika","fa":"کاستاریکا"},"flag":"https://restcountries.eu/data/cri.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"CRC"},{"name":"Croatia","topLevelDomain":[".hr"],"alpha2Code":"HR","alpha3Code":"HRV","callingCodes":["385"],"capital":"Zagreb","altSpellings":["HR","Hrvatska","Republic of Croatia","Republika Hrvatska"],"region":"Europe","subregion":"Southern Europe","population":4190669,"latlng":[45.16666666,15.5],"demonym":"Croatian","area":56594.0,"gini":33.7,"timezones":["UTC+01:00"],"borders":["BIH","HUN","MNE","SRB","SVN"],"nativeName":"Hrvatska","numericCode":"191","currencies":[{"code":"HRK","name":"Croatian kuna","symbol":"kn"}],"languages":[{"iso639_1":"hr","iso639_2":"hrv","name":"Croatian","nativeName":"hrvatski jezik"}],"translations":{"de":"Kroatien","es":"Croacia","fr":"Croatie","ja":"クロアチア","it":"Croazia","br":"Croácia","pt":"Croácia","nl":"Kroatië","hr":"Hrvatska","fa":"کرواسی"},"flag":"https://restcountries.eu/data/hrv.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"CRO"},{"name":"Cuba","topLevelDomain":[".cu"],"alpha2Code":"CU","alpha3Code":"CUB","callingCodes":["53"],"capital":"Havana","altSpellings":["CU","Republic of Cuba","República de Cuba"],"region":"Americas","subregion":"Caribbean","population":11239004,"latlng":[21.5,-80.0],"demonym":"Cuban","area":109884.0,"gini":null,"timezones":["UTC-05:00"],"borders":[],"nativeName":"Cuba","numericCode":"192","currencies":[{"code":"CUC","name":"Cuban convertible peso","symbol":"$"},{"code":"CUP","name":"Cuban peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Kuba","es":"Cuba","fr":"Cuba","ja":"キューバ","it":"Cuba","br":"Cuba","pt":"Cuba","nl":"Cuba","hr":"Kuba","fa":"کوبا"},"flag":"https://restcountries.eu/data/cub.svg","regionalBlocs":[],"cioc":"CUB"},{"name":"Curaçao","topLevelDomain":[".cw"],"alpha2Code":"CW","alpha3Code":"CUW","callingCodes":["599"],"capital":"Willemstad","altSpellings":["CW","Curacao","Kòrsou","Country of Curaçao","Land Curaçao","Pais Kòrsou"],"region":"Americas","subregion":"Caribbean","population":154843,"latlng":[12.116667,-68.933333],"demonym":"Dutch","area":444.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Curaçao","numericCode":"531","currencies":[{"code":"ANG","name":"Netherlands Antillean guilder","symbol":"ƒ"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"},{"iso639_1":"pa","iso639_2":"pan","name":"(Eastern) Punjabi","nativeName":"ਪੰਜਾਬੀ"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Curaçao","es":null,"fr":"Curaçao","ja":null,"it":"Curaçao","br":"Curaçao","pt":"Curaçao","nl":"Curaçao","hr":null,"fa":"کوراسائو"},"flag":"https://restcountries.eu/data/cuw.svg","regionalBlocs":[],"cioc":""},{"name":"Cyprus","topLevelDomain":[".cy"],"alpha2Code":"CY","alpha3Code":"CYP","callingCodes":["357"],"capital":"Nicosia","altSpellings":["CY","Kýpros","Kıbrıs","Republic of Cyprus","Κυπριακή Δημοκρατία","Kıbrıs Cumhuriyeti"],"region":"Europe","subregion":"Southern Europe","population":847000,"latlng":[35.0,33.0],"demonym":"Cypriot","area":9251.0,"gini":null,"timezones":["UTC+02:00"],"borders":["GBR"],"nativeName":"Κύπρος","numericCode":"196","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"el","iso639_2":"ell","name":"Greek (modern)","nativeName":"ελληνικά"},{"iso639_1":"tr","iso639_2":"tur","name":"Turkish","nativeName":"Türkçe"},{"iso639_1":"hy","iso639_2":"hye","name":"Armenian","nativeName":"Հայերեն"}],"translations":{"de":"Zypern","es":"Chipre","fr":"Chypre","ja":"キプロス","it":"Cipro","br":"Chipre","pt":"Chipre","nl":"Cyprus","hr":"Cipar","fa":"قبرس"},"flag":"https://restcountries.eu/data/cyp.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"CYP"},{"name":"Czech Republic","topLevelDomain":[".cz"],"alpha2Code":"CZ","alpha3Code":"CZE","callingCodes":["420"],"capital":"Prague","altSpellings":["CZ","Česká republika","Česko"],"region":"Europe","subregion":"Eastern Europe","population":10558524,"latlng":[49.75,15.5],"demonym":"Czech","area":78865.0,"gini":26.0,"timezones":["UTC+01:00"],"borders":["AUT","DEU","POL","SVK"],"nativeName":"Česká republika","numericCode":"203","currencies":[{"code":"CZK","name":"Czech koruna","symbol":"Kč"}],"languages":[{"iso639_1":"cs","iso639_2":"ces","name":"Czech","nativeName":"čeština"},{"iso639_1":"sk","iso639_2":"slk","name":"Slovak","nativeName":"slovenčina"}],"translations":{"de":"Tschechische Republik","es":"República Checa","fr":"République tchèque","ja":"チェコ","it":"Repubblica Ceca","br":"República Tcheca","pt":"República Checa","nl":"Tsjechië","hr":"Češka","fa":"جمهوری چک"},"flag":"https://restcountries.eu/data/cze.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"CZE"},{"name":"Denmark","topLevelDomain":[".dk"],"alpha2Code":"DK","alpha3Code":"DNK","callingCodes":["45"],"capital":"Copenhagen","altSpellings":["DK","Danmark","Kingdom of Denmark","Kongeriget Danmark"],"region":"Europe","subregion":"Northern Europe","population":5717014,"latlng":[56.0,10.0],"demonym":"Danish","area":43094.0,"gini":24.0,"timezones":["UTC-04:00","UTC-03:00","UTC-01:00","UTC","UTC+01:00"],"borders":["DEU"],"nativeName":"Danmark","numericCode":"208","currencies":[{"code":"DKK","name":"Danish krone","symbol":"kr"}],"languages":[{"iso639_1":"da","iso639_2":"dan","name":"Danish","nativeName":"dansk"}],"translations":{"de":"Dänemark","es":"Dinamarca","fr":"Danemark","ja":"デンマーク","it":"Danimarca","br":"Dinamarca","pt":"Dinamarca","nl":"Denemarken","hr":"Danska","fa":"دانمارک"},"flag":"https://restcountries.eu/data/dnk.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"DEN"},{"name":"Djibouti","topLevelDomain":[".dj"],"alpha2Code":"DJ","alpha3Code":"DJI","callingCodes":["253"],"capital":"Djibouti","altSpellings":["DJ","Jabuuti","Gabuuti","Republic of Djibouti","République de Djibouti","Gabuutih Ummuuno","Jamhuuriyadda Jabuuti"],"region":"Africa","subregion":"Eastern Africa","population":900000,"latlng":[11.5,43.0],"demonym":"Djibouti","area":23200.0,"gini":40.0,"timezones":["UTC+03:00"],"borders":["ERI","ETH","SOM"],"nativeName":"Djibouti","numericCode":"262","currencies":[{"code":"DJF","name":"Djiboutian franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Dschibuti","es":"Yibuti","fr":"Djibouti","ja":"ジブチ","it":"Gibuti","br":"Djibuti","pt":"Djibuti","nl":"Djibouti","hr":"Džibuti","fa":"جیبوتی"},"flag":"https://restcountries.eu/data/dji.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"DJI"},{"name":"Dominica","topLevelDomain":[".dm"],"alpha2Code":"DM","alpha3Code":"DMA","callingCodes":["1767"],"capital":"Roseau","altSpellings":["DM","Dominique","Wai‘tu kubuli","Commonwealth of Dominica"],"region":"Americas","subregion":"Caribbean","population":71293,"latlng":[15.41666666,-61.33333333],"demonym":"Dominican","area":751.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Dominica","numericCode":"212","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Dominica","es":"Dominica","fr":"Dominique","ja":"ドミニカ国","it":"Dominica","br":"Dominica","pt":"Dominica","nl":"Dominica","hr":"Dominika","fa":"دومینیکا"},"flag":"https://restcountries.eu/data/dma.svg","regionalBlocs":[],"cioc":"DMA"},{"name":"Dominican Republic","topLevelDomain":[".do"],"alpha2Code":"DO","alpha3Code":"DOM","callingCodes":["1809","1829","1849"],"capital":"Santo Domingo","altSpellings":["DO"],"region":"Americas","subregion":"Caribbean","population":10075045,"latlng":[19.0,-70.66666666],"demonym":"Dominican","area":48671.0,"gini":47.2,"timezones":["UTC-04:00"],"borders":["HTI"],"nativeName":"República Dominicana","numericCode":"214","currencies":[{"code":"DOP","name":"Dominican peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Dominikanische Republik","es":"República Dominicana","fr":"République dominicaine","ja":"ドミニカ共和国","it":"Repubblica Dominicana","br":"República Dominicana","pt":"República Dominicana","nl":"Dominicaanse Republiek","hr":"Dominikanska Republika","fa":"جمهوری دومینیکن"},"flag":"https://restcountries.eu/data/dom.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]},{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"DOM"},{"name":"Ecuador","topLevelDomain":[".ec"],"alpha2Code":"EC","alpha3Code":"ECU","callingCodes":["593"],"capital":"Quito","altSpellings":["EC","Republic of Ecuador","República del Ecuador"],"region":"Americas","subregion":"South America","population":16545799,"latlng":[-2.0,-77.5],"demonym":"Ecuadorean","area":276841.0,"gini":49.3,"timezones":["UTC-06:00","UTC-05:00"],"borders":["COL","PER"],"nativeName":"Ecuador","numericCode":"218","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Ecuador","es":"Ecuador","fr":"Équateur","ja":"エクアドル","it":"Ecuador","br":"Equador","pt":"Equador","nl":"Ecuador","hr":"Ekvador","fa":"اکوادور"},"flag":"https://restcountries.eu/data/ecu.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"ECU"},{"name":"Egypt","topLevelDomain":[".eg"],"alpha2Code":"EG","alpha3Code":"EGY","callingCodes":["20"],"capital":"Cairo","altSpellings":["EG","Arab Republic of Egypt"],"region":"Africa","subregion":"Northern Africa","population":91290000,"latlng":[27.0,30.0],"demonym":"Egyptian","area":1002450.0,"gini":30.8,"timezones":["UTC+02:00"],"borders":["ISR","LBY","SDN"],"nativeName":"مصر‎","numericCode":"818","currencies":[{"code":"EGP","name":"Egyptian pound","symbol":"£"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Ägypten","es":"Egipto","fr":"Égypte","ja":"エジプト","it":"Egitto","br":"Egito","pt":"Egipto","nl":"Egypte","hr":"Egipat","fa":"مصر"},"flag":"https://restcountries.eu/data/egy.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"EGY"},{"name":"El Salvador","topLevelDomain":[".sv"],"alpha2Code":"SV","alpha3Code":"SLV","callingCodes":["503"],"capital":"San Salvador","altSpellings":["SV","Republic of El Salvador","República de El Salvador"],"region":"Americas","subregion":"Central America","population":6520675,"latlng":[13.83333333,-88.91666666],"demonym":"Salvadoran","area":21041.0,"gini":48.3,"timezones":["UTC-06:00"],"borders":["GTM","HND"],"nativeName":"El Salvador","numericCode":"222","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"El Salvador","es":"El Salvador","fr":"Salvador","ja":"エルサルバドル","it":"El Salvador","br":"El Salvador","pt":"El Salvador","nl":"El Salvador","hr":"Salvador","fa":"السالوادور"},"flag":"https://restcountries.eu/data/slv.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"ESA"},{"name":"Equatorial Guinea","topLevelDomain":[".gq"],"alpha2Code":"GQ","alpha3Code":"GNQ","callingCodes":["240"],"capital":"Malabo","altSpellings":["GQ","Republic of Equatorial Guinea","República de Guinea Ecuatorial","République de Guinée équatoriale","República da Guiné Equatorial"],"region":"Africa","subregion":"Middle Africa","population":1222442,"latlng":[2.0,10.0],"demonym":"Equatorial Guinean","area":28051.0,"gini":null,"timezones":["UTC+01:00"],"borders":["CMR","GAB"],"nativeName":"Guinea Ecuatorial","numericCode":"226","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Äquatorial-Guinea","es":"Guinea Ecuatorial","fr":"Guinée-Équatoriale","ja":"赤道ギニア","it":"Guinea Equatoriale","br":"Guiné Equatorial","pt":"Guiné Equatorial","nl":"Equatoriaal-Guinea","hr":"Ekvatorijalna Gvineja","fa":"گینه استوایی"},"flag":"https://restcountries.eu/data/gnq.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GEQ"},{"name":"Eritrea","topLevelDomain":[".er"],"alpha2Code":"ER","alpha3Code":"ERI","callingCodes":["291"],"capital":"Asmara","altSpellings":["ER","State of Eritrea","ሃገረ ኤርትራ","Dawlat Iritriyá","ʾErtrā","Iritriyā",""],"region":"Africa","subregion":"Eastern Africa","population":5352000,"latlng":[15.0,39.0],"demonym":"Eritrean","area":117600.0,"gini":null,"timezones":["UTC+03:00"],"borders":["DJI","ETH","SDN"],"nativeName":"ኤርትራ","numericCode":"232","currencies":[{"code":"ERN","name":"Eritrean nakfa","symbol":"Nfk"}],"languages":[{"iso639_1":"ti","iso639_2":"tir","name":"Tigrinya","nativeName":"ትግርኛ"},{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Eritrea","es":"Eritrea","fr":"Érythrée","ja":"エリトリア","it":"Eritrea","br":"Eritreia","pt":"Eritreia","nl":"Eritrea","hr":"Eritreja","fa":"اریتره"},"flag":"https://restcountries.eu/data/eri.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"ERI"},{"name":"Estonia","topLevelDomain":[".ee"],"alpha2Code":"EE","alpha3Code":"EST","callingCodes":["372"],"capital":"Tallinn","altSpellings":["EE","Eesti","Republic of Estonia","Eesti Vabariik"],"region":"Europe","subregion":"Northern Europe","population":1315944,"latlng":[59.0,26.0],"demonym":"Estonian","area":45227.0,"gini":36.0,"timezones":["UTC+02:00"],"borders":["LVA","RUS"],"nativeName":"Eesti","numericCode":"233","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"et","iso639_2":"est","name":"Estonian","nativeName":"eesti"}],"translations":{"de":"Estland","es":"Estonia","fr":"Estonie","ja":"エストニア","it":"Estonia","br":"Estônia","pt":"Estónia","nl":"Estland","hr":"Estonija","fa":"استونی"},"flag":"https://restcountries.eu/data/est.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"EST"},{"name":"Ethiopia","topLevelDomain":[".et"],"alpha2Code":"ET","alpha3Code":"ETH","callingCodes":["251"],"capital":"Addis Ababa","altSpellings":["ET","ʾĪtyōṗṗyā","Federal Democratic Republic of Ethiopia","የኢትዮጵያ ፌዴራላዊ ዲሞክራሲያዊ ሪፐብሊክ"],"region":"Africa","subregion":"Eastern Africa","population":92206005,"latlng":[8.0,38.0],"demonym":"Ethiopian","area":1104300.0,"gini":29.8,"timezones":["UTC+03:00"],"borders":["DJI","ERI","KEN","SOM","SSD","SDN"],"nativeName":"ኢትዮጵያ","numericCode":"231","currencies":[{"code":"ETB","name":"Ethiopian birr","symbol":"Br"}],"languages":[{"iso639_1":"am","iso639_2":"amh","name":"Amharic","nativeName":"አማርኛ"}],"translations":{"de":"Äthiopien","es":"Etiopía","fr":"Éthiopie","ja":"エチオピア","it":"Etiopia","br":"Etiópia","pt":"Etiópia","nl":"Ethiopië","hr":"Etiopija","fa":"اتیوپی"},"flag":"https://restcountries.eu/data/eth.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"ETH"},{"name":"Falkland Islands (Malvinas)","topLevelDomain":[".fk"],"alpha2Code":"FK","alpha3Code":"FLK","callingCodes":["500"],"capital":"Stanley","altSpellings":["FK","Islas Malvinas"],"region":"Americas","subregion":"South America","population":2563,"latlng":[-51.75,-59.0],"demonym":"Falkland Islander","area":12173.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Falkland Islands","numericCode":"238","currencies":[{"code":"FKP","name":"Falkland Islands pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Falklandinseln","es":"Islas Malvinas","fr":"Îles Malouines","ja":"フォークランド(マルビナス)諸島","it":"Isole Falkland o Isole Malvine","br":"Ilhas Malvinas","pt":"Ilhas Falkland","nl":"Falklandeilanden [Islas Malvinas]","hr":"Falklandski Otoci","fa":"جزایر فالکلند"},"flag":"https://restcountries.eu/data/flk.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":""},{"name":"Faroe Islands","topLevelDomain":[".fo"],"alpha2Code":"FO","alpha3Code":"FRO","callingCodes":["298"],"capital":"Tórshavn","altSpellings":["FO","Føroyar","Færøerne"],"region":"Europe","subregion":"Northern Europe","population":49376,"latlng":[62.0,-7.0],"demonym":"Faroese","area":1393.0,"gini":null,"timezones":["UTC+00:00"],"borders":[],"nativeName":"Føroyar","numericCode":"234","currencies":[{"code":"DKK","name":"Danish krone","symbol":"kr"},{"code":"(none)","name":"Faroese króna","symbol":"kr"}],"languages":[{"iso639_1":"fo","iso639_2":"fao","name":"Faroese","nativeName":"føroyskt"}],"translations":{"de":"Färöer-Inseln","es":"Islas Faroe","fr":"Îles Féroé","ja":"フェロー諸島","it":"Isole Far Oer","br":"Ilhas Faroé","pt":"Ilhas Faroé","nl":"Faeröer","hr":"Farski Otoci","fa":"جزایر فارو"},"flag":"https://restcountries.eu/data/fro.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":""},{"name":"Fiji","topLevelDomain":[".fj"],"alpha2Code":"FJ","alpha3Code":"FJI","callingCodes":["679"],"capital":"Suva","altSpellings":["FJ","Viti","Republic of Fiji","Matanitu ko Viti","Fijī Gaṇarājya"],"region":"Oceania","subregion":"Melanesia","population":867000,"latlng":[-18.0,175.0],"demonym":"Fijian","area":18272.0,"gini":42.8,"timezones":["UTC+12:00"],"borders":[],"nativeName":"Fiji","numericCode":"242","currencies":[{"code":"FJD","name":"Fijian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fj","iso639_2":"fij","name":"Fijian","nativeName":"vosa Vakaviti"},{"iso639_1":"hi","iso639_2":"hin","name":"Hindi","nativeName":"हिन्दी"},{"iso639_1":"ur","iso639_2":"urd","name":"Urdu","nativeName":"اردو"}],"translations":{"de":"Fidschi","es":"Fiyi","fr":"Fidji","ja":"フィジー","it":"Figi","br":"Fiji","pt":"Fiji","nl":"Fiji","hr":"Fiđi","fa":"فیجی"},"flag":"https://restcountries.eu/data/fji.svg","regionalBlocs":[],"cioc":"FIJ"},{"name":"Finland","topLevelDomain":[".fi"],"alpha2Code":"FI","alpha3Code":"FIN","callingCodes":["358"],"capital":"Helsinki","altSpellings":["FI","Suomi","Republic of Finland","Suomen tasavalta","Republiken Finland"],"region":"Europe","subregion":"Northern Europe","population":5491817,"latlng":[64.0,26.0],"demonym":"Finnish","area":338424.0,"gini":26.9,"timezones":["UTC+02:00"],"borders":["NOR","SWE","RUS"],"nativeName":"Suomi","numericCode":"246","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fi","iso639_2":"fin","name":"Finnish","nativeName":"suomi"},{"iso639_1":"sv","iso639_2":"swe","name":"Swedish","nativeName":"svenska"}],"translations":{"de":"Finnland","es":"Finlandia","fr":"Finlande","ja":"フィンランド","it":"Finlandia","br":"Finlândia","pt":"Finlândia","nl":"Finland","hr":"Finska","fa":"فنلاند"},"flag":"https://restcountries.eu/data/fin.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"FIN"},{"name":"France","topLevelDomain":[".fr"],"alpha2Code":"FR","alpha3Code":"FRA","callingCodes":["33"],"capital":"Paris","altSpellings":["FR","French Republic","République française"],"region":"Europe","subregion":"Western Europe","population":66710000,"latlng":[46.0,2.0],"demonym":"French","area":640679.0,"gini":32.7,"timezones":["UTC-10:00","UTC-09:30","UTC-09:00","UTC-08:00","UTC-04:00","UTC-03:00","UTC+01:00","UTC+03:00","UTC+04:00","UTC+05:00","UTC+11:00","UTC+12:00"],"borders":["AND","BEL","DEU","ITA","LUX","MCO","ESP","CHE"],"nativeName":"France","numericCode":"250","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Frankreich","es":"Francia","fr":"France","ja":"フランス","it":"Francia","br":"França","pt":"França","nl":"Frankrijk","hr":"Francuska","fa":"فرانسه"},"flag":"https://restcountries.eu/data/fra.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"FRA"},{"name":"French Guiana","topLevelDomain":[".gf"],"alpha2Code":"GF","alpha3Code":"GUF","callingCodes":["594"],"capital":"Cayenne","altSpellings":["GF","Guiana","Guyane"],"region":"Americas","subregion":"South America","population":254541,"latlng":[4.0,-53.0],"demonym":"","area":null,"gini":null,"timezones":["UTC-03:00"],"borders":["BRA","SUR"],"nativeName":"Guyane française","numericCode":"254","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Französisch Guyana","es":"Guayana Francesa","fr":"Guayane","ja":"フランス領ギアナ","it":"Guyana francese","br":"Guiana Francesa","pt":"Guiana Francesa","nl":"Frans-Guyana","hr":"Francuska Gvajana","fa":"گویان فرانسه"},"flag":"https://restcountries.eu/data/guf.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]},{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":""},{"name":"French Polynesia","topLevelDomain":[".pf"],"alpha2Code":"PF","alpha3Code":"PYF","callingCodes":["689"],"capital":"Papeetē","altSpellings":["PF","Polynésie française","French Polynesia","Pōrīnetia Farāni"],"region":"Oceania","subregion":"Polynesia","population":271800,"latlng":[-15.0,-140.0],"demonym":"French Polynesian","area":4167.0,"gini":null,"timezones":["UTC-10:00","UTC-09:30","UTC-09:00"],"borders":[],"nativeName":"Polynésie française","numericCode":"258","currencies":[{"code":"XPF","name":"CFP franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Französisch-Polynesien","es":"Polinesia Francesa","fr":"Polynésie française","ja":"フランス領ポリネシア","it":"Polinesia Francese","br":"Polinésia Francesa","pt":"Polinésia Francesa","nl":"Frans-Polynesië","hr":"Francuska Polinezija","fa":"پلی‌نزی فرانسه"},"flag":"https://restcountries.eu/data/pyf.svg","regionalBlocs":[],"cioc":""},{"name":"French Southern Territories","topLevelDomain":[".tf"],"alpha2Code":"TF","alpha3Code":"ATF","callingCodes":[""],"capital":"Port-aux-Français","altSpellings":["TF"],"region":"Africa","subregion":"Southern Africa","population":140,"latlng":[-49.25,69.167],"demonym":"French","area":7747.0,"gini":null,"timezones":["UTC+05:00"],"borders":[],"nativeName":"Territoire des Terres australes et antarctiques françaises","numericCode":"260","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Französische Süd- und Antarktisgebiete","es":"Tierras Australes y Antárticas Francesas","fr":"Terres australes et antarctiques françaises","ja":"フランス領南方・南極地域","it":"Territori Francesi del Sud","br":"Terras Austrais e Antárticas Francesas","pt":"Terras Austrais e Antárticas Francesas","nl":"Franse Gebieden in de zuidelijke Indische Oceaan","hr":"Francuski južni i antarktički teritoriji","fa":"سرزمین‌های جنوبی و جنوبگانی فرانسه"},"flag":"https://restcountries.eu/data/atf.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"Gabon","topLevelDomain":[".ga"],"alpha2Code":"GA","alpha3Code":"GAB","callingCodes":["241"],"capital":"Libreville","altSpellings":["GA","Gabonese Republic","République Gabonaise"],"region":"Africa","subregion":"Middle Africa","population":1802278,"latlng":[-1.0,11.75],"demonym":"Gabonese","area":267668.0,"gini":41.5,"timezones":["UTC+01:00"],"borders":["CMR","COG","GNQ"],"nativeName":"Gabon","numericCode":"266","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Gabun","es":"Gabón","fr":"Gabon","ja":"ガボン","it":"Gabon","br":"Gabão","pt":"Gabão","nl":"Gabon","hr":"Gabon","fa":"گابن"},"flag":"https://restcountries.eu/data/gab.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GAB"},{"name":"Gambia","topLevelDomain":[".gm"],"alpha2Code":"GM","alpha3Code":"GMB","callingCodes":["220"],"capital":"Banjul","altSpellings":["GM","Republic of the Gambia"],"region":"Africa","subregion":"Western Africa","population":1882450,"latlng":[13.46666666,-16.56666666],"demonym":"Gambian","area":11295.0,"gini":null,"timezones":["UTC+00:00"],"borders":["SEN"],"nativeName":"Gambia","numericCode":"270","currencies":[{"code":"GMD","name":"Gambian dalasi","symbol":"D"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Gambia","es":"Gambia","fr":"Gambie","ja":"ガンビア","it":"Gambia","br":"Gâmbia","pt":"Gâmbia","nl":"Gambia","hr":"Gambija","fa":"گامبیا"},"flag":"https://restcountries.eu/data/gmb.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GAM"},{"name":"Georgia","topLevelDomain":[".ge"],"alpha2Code":"GE","alpha3Code":"GEO","callingCodes":["995"],"capital":"Tbilisi","altSpellings":["GE","Sakartvelo"],"region":"Asia","subregion":"Western Asia","population":3720400,"latlng":[42.0,43.5],"demonym":"Georgian","area":69700.0,"gini":41.3,"timezones":["UTC-05:00"],"borders":["ARM","AZE","RUS","TUR"],"nativeName":"საქართველო","numericCode":"268","currencies":[{"code":"GEL","name":"Georgian Lari","symbol":"ლ"}],"languages":[{"iso639_1":"ka","iso639_2":"kat","name":"Georgian","nativeName":"ქართული"}],"translations":{"de":"Georgien","es":"Georgia","fr":"Géorgie","ja":"グルジア","it":"Georgia","br":"Geórgia","pt":"Geórgia","nl":"Georgië","hr":"Gruzija","fa":"گرجستان"},"flag":"https://restcountries.eu/data/geo.svg","regionalBlocs":[],"cioc":"GEO"},{"name":"Germany","topLevelDomain":[".de"],"alpha2Code":"DE","alpha3Code":"DEU","callingCodes":["49"],"capital":"Berlin","altSpellings":["DE","Federal Republic of Germany","Bundesrepublik Deutschland"],"region":"Europe","subregion":"Western Europe","population":81770900,"latlng":[51.0,9.0],"demonym":"German","area":357114.0,"gini":28.3,"timezones":["UTC+01:00"],"borders":["AUT","BEL","CZE","DNK","FRA","LUX","NLD","POL","CHE"],"nativeName":"Deutschland","numericCode":"276","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"}],"translations":{"de":"Deutschland","es":"Alemania","fr":"Allemagne","ja":"ドイツ","it":"Germania","br":"Alemanha","pt":"Alemanha","nl":"Duitsland","hr":"Njemačka","fa":"آلمان"},"flag":"https://restcountries.eu/data/deu.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"GER"},{"name":"Ghana","topLevelDomain":[".gh"],"alpha2Code":"GH","alpha3Code":"GHA","callingCodes":["233"],"capital":"Accra","altSpellings":["GH"],"region":"Africa","subregion":"Western Africa","population":27670174,"latlng":[8.0,-2.0],"demonym":"Ghanaian","area":238533.0,"gini":42.8,"timezones":["UTC"],"borders":["BFA","CIV","TGO"],"nativeName":"Ghana","numericCode":"288","currencies":[{"code":"GHS","name":"Ghanaian cedi","symbol":"₵"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Ghana","es":"Ghana","fr":"Ghana","ja":"ガーナ","it":"Ghana","br":"Gana","pt":"Gana","nl":"Ghana","hr":"Gana","fa":"غنا"},"flag":"https://restcountries.eu/data/gha.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GHA"},{"name":"Gibraltar","topLevelDomain":[".gi"],"alpha2Code":"GI","alpha3Code":"GIB","callingCodes":["350"],"capital":"Gibraltar","altSpellings":["GI"],"region":"Europe","subregion":"Southern Europe","population":33140,"latlng":[36.13333333,-5.35],"demonym":"Gibraltar","area":6.0,"gini":null,"timezones":["UTC+01:00"],"borders":["ESP"],"nativeName":"Gibraltar","numericCode":"292","currencies":[{"code":"GIP","name":"Gibraltar pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Gibraltar","es":"Gibraltar","fr":"Gibraltar","ja":"ジブラルタル","it":"Gibilterra","br":"Gibraltar","pt":"Gibraltar","nl":"Gibraltar","hr":"Gibraltar","fa":"جبل‌طارق"},"flag":"https://restcountries.eu/data/gib.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":""},{"name":"Greece","topLevelDomain":[".gr"],"alpha2Code":"GR","alpha3Code":"GRC","callingCodes":["30"],"capital":"Athens","altSpellings":["GR","Elláda","Hellenic Republic","Ελληνική Δημοκρατία"],"region":"Europe","subregion":"Southern Europe","population":10858018,"latlng":[39.0,22.0],"demonym":"Greek","area":131990.0,"gini":34.3,"timezones":["UTC+02:00"],"borders":["ALB","BGR","TUR","MKD"],"nativeName":"Ελλάδα","numericCode":"300","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"el","iso639_2":"ell","name":"Greek (modern)","nativeName":"ελληνικά"}],"translations":{"de":"Griechenland","es":"Grecia","fr":"Grèce","ja":"ギリシャ","it":"Grecia","br":"Grécia","pt":"Grécia","nl":"Griekenland","hr":"Grčka","fa":"یونان"},"flag":"https://restcountries.eu/data/grc.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"GRE"},{"name":"Greenland","topLevelDomain":[".gl"],"alpha2Code":"GL","alpha3Code":"GRL","callingCodes":["299"],"capital":"Nuuk","altSpellings":["GL","Grønland"],"region":"Americas","subregion":"Northern America","population":55847,"latlng":[72.0,-40.0],"demonym":"Greenlandic","area":2166086.0,"gini":null,"timezones":["UTC-04:00","UTC-03:00","UTC-01:00","UTC+00:00"],"borders":[],"nativeName":"Kalaallit Nunaat","numericCode":"304","currencies":[{"code":"DKK","name":"Danish krone","symbol":"kr"}],"languages":[{"iso639_1":"kl","iso639_2":"kal","name":"Kalaallisut","nativeName":"kalaallisut"}],"translations":{"de":"Grönland","es":"Groenlandia","fr":"Groenland","ja":"グリーンランド","it":"Groenlandia","br":"Groelândia","pt":"Gronelândia","nl":"Groenland","hr":"Grenland","fa":"گرینلند"},"flag":"https://restcountries.eu/data/grl.svg","regionalBlocs":[],"cioc":""},{"name":"Grenada","topLevelDomain":[".gd"],"alpha2Code":"GD","alpha3Code":"GRD","callingCodes":["1473"],"capital":"St. George's","altSpellings":["GD"],"region":"Americas","subregion":"Caribbean","population":103328,"latlng":[12.11666666,-61.66666666],"demonym":"Grenadian","area":344.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Grenada","numericCode":"308","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Grenada","es":"Grenada","fr":"Grenade","ja":"グレナダ","it":"Grenada","br":"Granada","pt":"Granada","nl":"Grenada","hr":"Grenada","fa":"گرنادا"},"flag":"https://restcountries.eu/data/grd.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"GRN"},{"name":"Guadeloupe","topLevelDomain":[".gp"],"alpha2Code":"GP","alpha3Code":"GLP","callingCodes":["590"],"capital":"Basse-Terre","altSpellings":["GP","Gwadloup"],"region":"Americas","subregion":"Caribbean","population":400132,"latlng":[16.25,-61.583333],"demonym":"Guadeloupian","area":null,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Guadeloupe","numericCode":"312","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Guadeloupe","es":"Guadalupe","fr":"Guadeloupe","ja":"グアドループ","it":"Guadeloupa","br":"Guadalupe","pt":"Guadalupe","nl":"Guadeloupe","hr":"Gvadalupa","fa":"جزیره گوادلوپ"},"flag":"https://restcountries.eu/data/glp.svg","regionalBlocs":[],"cioc":""},{"name":"Guam","topLevelDomain":[".gu"],"alpha2Code":"GU","alpha3Code":"GUM","callingCodes":["1671"],"capital":"Hagåtña","altSpellings":["GU","Guåhån"],"region":"Oceania","subregion":"Micronesia","population":184200,"latlng":[13.46666666,144.78333333],"demonym":"Guamanian","area":549.0,"gini":null,"timezones":["UTC+10:00"],"borders":[],"nativeName":"Guam","numericCode":"316","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ch","iso639_2":"cha","name":"Chamorro","nativeName":"Chamoru"},{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Guam","es":"Guam","fr":"Guam","ja":"グアム","it":"Guam","br":"Guam","pt":"Guame","nl":"Guam","hr":"Guam","fa":"گوام"},"flag":"https://restcountries.eu/data/gum.svg","regionalBlocs":[],"cioc":"GUM"},{"name":"Guatemala","topLevelDomain":[".gt"],"alpha2Code":"GT","alpha3Code":"GTM","callingCodes":["502"],"capital":"Guatemala City","altSpellings":["GT"],"region":"Americas","subregion":"Central America","population":16176133,"latlng":[15.5,-90.25],"demonym":"Guatemalan","area":108889.0,"gini":55.9,"timezones":["UTC-06:00"],"borders":["BLZ","SLV","HND","MEX"],"nativeName":"Guatemala","numericCode":"320","currencies":[{"code":"GTQ","name":"Guatemalan quetzal","symbol":"Q"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Guatemala","es":"Guatemala","fr":"Guatemala","ja":"グアテマラ","it":"Guatemala","br":"Guatemala","pt":"Guatemala","nl":"Guatemala","hr":"Gvatemala","fa":"گواتمالا"},"flag":"https://restcountries.eu/data/gtm.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"GUA"},{"name":"Guernsey","topLevelDomain":[".gg"],"alpha2Code":"GG","alpha3Code":"GGY","callingCodes":["44"],"capital":"St. Peter Port","altSpellings":["GG","Bailiwick of Guernsey","Bailliage de Guernesey"],"region":"Europe","subregion":"Northern Europe","population":62999,"latlng":[49.46666666,-2.58333333],"demonym":"Channel Islander","area":78.0,"gini":null,"timezones":["UTC+00:00"],"borders":[],"nativeName":"Guernsey","numericCode":"831","currencies":[{"code":"GBP","name":"British pound","symbol":"£"},{"code":"(none)","name":"Guernsey pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Guernsey","es":"Guernsey","fr":"Guernesey","ja":"ガーンジー","it":"Guernsey","br":"Guernsey","pt":"Guernsey","nl":"Guernsey","hr":"Guernsey","fa":"گرنزی"},"flag":"https://restcountries.eu/data/ggy.svg","regionalBlocs":[],"cioc":""},{"name":"Guinea","topLevelDomain":[".gn"],"alpha2Code":"GN","alpha3Code":"GIN","callingCodes":["224"],"capital":"Conakry","altSpellings":["GN","Republic of Guinea","République de Guinée"],"region":"Africa","subregion":"Western Africa","population":12947000,"latlng":[11.0,-10.0],"demonym":"Guinean","area":245857.0,"gini":39.4,"timezones":["UTC"],"borders":["CIV","GNB","LBR","MLI","SEN","SLE"],"nativeName":"Guinée","numericCode":"324","currencies":[{"code":"GNF","name":"Guinean franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ff","iso639_2":"ful","name":"Fula","nativeName":"Fulfulde"}],"translations":{"de":"Guinea","es":"Guinea","fr":"Guinée","ja":"ギニア","it":"Guinea","br":"Guiné","pt":"Guiné","nl":"Guinee","hr":"Gvineja","fa":"گینه"},"flag":"https://restcountries.eu/data/gin.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GUI"},{"name":"Guinea-Bissau","topLevelDomain":[".gw"],"alpha2Code":"GW","alpha3Code":"GNB","callingCodes":["245"],"capital":"Bissau","altSpellings":["GW","Republic of Guinea-Bissau","República da Guiné-Bissau"],"region":"Africa","subregion":"Western Africa","population":1547777,"latlng":[12.0,-15.0],"demonym":"Guinea-Bissauan","area":36125.0,"gini":35.5,"timezones":["UTC"],"borders":["GIN","SEN"],"nativeName":"Guiné-Bissau","numericCode":"624","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Guinea-Bissau","es":"Guinea-Bisáu","fr":"Guinée-Bissau","ja":"ギニアビサウ","it":"Guinea-Bissau","br":"Guiné-Bissau","pt":"Guiné-Bissau","nl":"Guinee-Bissau","hr":"Gvineja Bisau","fa":"گینه بیسائو"},"flag":"https://restcountries.eu/data/gnb.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GBS"},{"name":"Guyana","topLevelDomain":[".gy"],"alpha2Code":"GY","alpha3Code":"GUY","callingCodes":["592"],"capital":"Georgetown","altSpellings":["GY","Co-operative Republic of Guyana"],"region":"Americas","subregion":"South America","population":746900,"latlng":[5.0,-59.0],"demonym":"Guyanese","area":214969.0,"gini":44.5,"timezones":["UTC-04:00"],"borders":["BRA","SUR","VEN"],"nativeName":"Guyana","numericCode":"328","currencies":[{"code":"GYD","name":"Guyanese dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Guyana","es":"Guyana","fr":"Guyane","ja":"ガイアナ","it":"Guyana","br":"Guiana","pt":"Guiana","nl":"Guyana","hr":"Gvajana","fa":"گویان"},"flag":"https://restcountries.eu/data/guy.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]},{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"GUY"},{"name":"Haiti","topLevelDomain":[".ht"],"alpha2Code":"HT","alpha3Code":"HTI","callingCodes":["509"],"capital":"Port-au-Prince","altSpellings":["HT","Republic of Haiti","République d'Haïti","Repiblik Ayiti"],"region":"Americas","subregion":"Caribbean","population":11078033,"latlng":[19.0,-72.41666666],"demonym":"Haitian","area":27750.0,"gini":59.2,"timezones":["UTC-05:00"],"borders":["DOM"],"nativeName":"Haïti","numericCode":"332","currencies":[{"code":"HTG","name":"Haitian gourde","symbol":"G"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ht","iso639_2":"hat","name":"Haitian","nativeName":"Kreyòl ayisyen"}],"translations":{"de":"Haiti","es":"Haiti","fr":"Haïti","ja":"ハイチ","it":"Haiti","br":"Haiti","pt":"Haiti","nl":"Haïti","hr":"Haiti","fa":"هائیتی"},"flag":"https://restcountries.eu/data/hti.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"HAI"},{"name":"Heard Island and McDonald Islands","topLevelDomain":[".hm",".aq"],"alpha2Code":"HM","alpha3Code":"HMD","callingCodes":[""],"capital":"","altSpellings":["HM"],"region":"","subregion":"","population":0,"latlng":[-53.1,72.51666666],"demonym":"Heard and McDonald Islander","area":412.0,"gini":null,"timezones":["UTC+05:00"],"borders":[],"nativeName":"Heard Island and McDonald Islands","numericCode":"334","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Heard und die McDonaldinseln","es":"Islas Heard y McDonald","fr":"Îles Heard-et-MacDonald","ja":"ハード島とマクドナルド諸島","it":"Isole Heard e McDonald","br":"Ilha Heard e Ilhas McDonald","pt":"Ilha Heard e Ilhas McDonald","nl":"Heard- en McDonaldeilanden","hr":"Otok Heard i otočje McDonald","fa":"جزیره هرد و جزایر مک‌دونالد"},"flag":"https://restcountries.eu/data/hmd.svg","regionalBlocs":[],"cioc":""},{"name":"Holy See","topLevelDomain":[".va"],"alpha2Code":"VA","alpha3Code":"VAT","callingCodes":["379"],"capital":"Rome","altSpellings":["Sancta Sedes","Vatican","The Vatican"],"region":"Europe","subregion":"Southern Europe","population":451,"latlng":[41.9,12.45],"demonym":"","area":0.44,"gini":null,"timezones":["UTC+01:00"],"borders":["ITA"],"nativeName":"Sancta Sedes","numericCode":"336","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"la","iso639_2":"lat","name":"Latin","nativeName":"latine"},{"iso639_1":"it","iso639_2":"ita","name":"Italian","nativeName":"Italiano"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"}],"translations":{"de":"Heiliger Stuhl","es":"Santa Sede","fr":"voir Saint","ja":"聖座","it":"Santa Sede","br":"Vaticano","pt":"Vaticano","nl":"Heilige Stoel","hr":"Sveta Stolica","fa":"سریر مقدس"},"flag":"https://restcountries.eu/data/vat.svg","regionalBlocs":[],"cioc":""},{"name":"Honduras","topLevelDomain":[".hn"],"alpha2Code":"HN","alpha3Code":"HND","callingCodes":["504"],"capital":"Tegucigalpa","altSpellings":["HN","Republic of Honduras","República de Honduras"],"region":"Americas","subregion":"Central America","population":8576532,"latlng":[15.0,-86.5],"demonym":"Honduran","area":112492.0,"gini":57.0,"timezones":["UTC-06:00"],"borders":["GTM","SLV","NIC"],"nativeName":"Honduras","numericCode":"340","currencies":[{"code":"HNL","name":"Honduran lempira","symbol":"L"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Honduras","es":"Honduras","fr":"Honduras","ja":"ホンジュラス","it":"Honduras","br":"Honduras","pt":"Honduras","nl":"Honduras","hr":"Honduras","fa":"هندوراس"},"flag":"https://restcountries.eu/data/hnd.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"HON"},{"name":"Hong Kong","topLevelDomain":[".hk"],"alpha2Code":"HK","alpha3Code":"HKG","callingCodes":["852"],"capital":"City of Victoria","altSpellings":["HK","香港"],"region":"Asia","subregion":"Eastern Asia","population":7324300,"latlng":[22.25,114.16666666],"demonym":"Chinese","area":1104.0,"gini":53.3,"timezones":["UTC+08:00"],"borders":["CHN"],"nativeName":"香港","numericCode":"344","currencies":[{"code":"HKD","name":"Hong Kong dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"zh","iso639_2":"zho","name":"Chinese","nativeName":"中文 (Zhōngwén)"}],"translations":{"de":"Hong Kong","es":"Hong Kong","fr":"Hong Kong","ja":"香港","it":"Hong Kong","br":"Hong Kong","pt":"Hong Kong","nl":"Hongkong","hr":"Hong Kong","fa":"هنگ‌کنگ"},"flag":"https://restcountries.eu/data/hkg.svg","regionalBlocs":[],"cioc":"HKG"},{"name":"Hungary","topLevelDomain":[".hu"],"alpha2Code":"HU","alpha3Code":"HUN","callingCodes":["36"],"capital":"Budapest","altSpellings":["HU"],"region":"Europe","subregion":"Eastern Europe","population":9823000,"latlng":[47.0,20.0],"demonym":"Hungarian","area":93028.0,"gini":31.2,"timezones":["UTC+01:00"],"borders":["AUT","HRV","ROU","SRB","SVK","SVN","UKR"],"nativeName":"Magyarország","numericCode":"348","currencies":[{"code":"HUF","name":"Hungarian forint","symbol":"Ft"}],"languages":[{"iso639_1":"hu","iso639_2":"hun","name":"Hungarian","nativeName":"magyar"}],"translations":{"de":"Ungarn","es":"Hungría","fr":"Hongrie","ja":"ハンガリー","it":"Ungheria","br":"Hungria","pt":"Hungria","nl":"Hongarije","hr":"Mađarska","fa":"مجارستان"},"flag":"https://restcountries.eu/data/hun.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"HUN"},{"name":"Iceland","topLevelDomain":[".is"],"alpha2Code":"IS","alpha3Code":"ISL","callingCodes":["354"],"capital":"Reykjavík","altSpellings":["IS","Island","Republic of Iceland","Lýðveldið Ísland"],"region":"Europe","subregion":"Northern Europe","population":334300,"latlng":[65.0,-18.0],"demonym":"Icelander","area":103000.0,"gini":null,"timezones":["UTC"],"borders":[],"nativeName":"Ísland","numericCode":"352","currencies":[{"code":"ISK","name":"Icelandic króna","symbol":"kr"}],"languages":[{"iso639_1":"is","iso639_2":"isl","name":"Icelandic","nativeName":"Íslenska"}],"translations":{"de":"Island","es":"Islandia","fr":"Islande","ja":"アイスランド","it":"Islanda","br":"Islândia","pt":"Islândia","nl":"IJsland","hr":"Island","fa":"ایسلند"},"flag":"https://restcountries.eu/data/isl.svg","regionalBlocs":[{"acronym":"EFTA","name":"European Free Trade Association","otherAcronyms":[],"otherNames":[]}],"cioc":"ISL"},{"name":"India","topLevelDomain":[".in"],"alpha2Code":"IN","alpha3Code":"IND","callingCodes":["91"],"capital":"New Delhi","altSpellings":["IN","Bhārat","Republic of India","Bharat Ganrajya"],"region":"Asia","subregion":"Southern Asia","population":1295210000,"latlng":[20.0,77.0],"demonym":"Indian","area":3287590.0,"gini":33.4,"timezones":["UTC+05:30"],"borders":["AFG","BGD","BTN","MMR","CHN","NPL","PAK","LKA"],"nativeName":"भारत","numericCode":"356","currencies":[{"code":"INR","name":"Indian rupee","symbol":"₹"}],"languages":[{"iso639_1":"hi","iso639_2":"hin","name":"Hindi","nativeName":"हिन्दी"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Indien","es":"India","fr":"Inde","ja":"インド","it":"India","br":"Índia","pt":"Índia","nl":"India","hr":"Indija","fa":"هند"},"flag":"https://restcountries.eu/data/ind.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"IND"},{"name":"Indonesia","topLevelDomain":[".id"],"alpha2Code":"ID","alpha3Code":"IDN","callingCodes":["62"],"capital":"Jakarta","altSpellings":["ID","Republic of Indonesia","Republik Indonesia"],"region":"Asia","subregion":"South-Eastern Asia","population":258705000,"latlng":[-5.0,120.0],"demonym":"Indonesian","area":1904569.0,"gini":34.0,"timezones":["UTC+07:00","UTC+08:00","UTC+09:00"],"borders":["TLS","MYS","PNG"],"nativeName":"Indonesia","numericCode":"360","currencies":[{"code":"IDR","name":"Indonesian rupiah","symbol":"Rp"}],"languages":[{"iso639_1":"id","iso639_2":"ind","name":"Indonesian","nativeName":"Bahasa Indonesia"}],"translations":{"de":"Indonesien","es":"Indonesia","fr":"Indonésie","ja":"インドネシア","it":"Indonesia","br":"Indonésia","pt":"Indonésia","nl":"Indonesië","hr":"Indonezija","fa":"اندونزی"},"flag":"https://restcountries.eu/data/idn.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"INA"},{"name":"Côte d'Ivoire","topLevelDomain":[".ci"],"alpha2Code":"CI","alpha3Code":"CIV","callingCodes":["225"],"capital":"Yamoussoukro","altSpellings":["CI","Ivory Coast","Republic of Côte d'Ivoire","République de Côte d'Ivoire"],"region":"Africa","subregion":"Western Africa","population":22671331,"latlng":[8.0,-5.0],"demonym":"Ivorian","area":322463.0,"gini":41.5,"timezones":["UTC"],"borders":["BFA","GHA","GIN","LBR","MLI"],"nativeName":"Côte d'Ivoire","numericCode":"384","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Elfenbeinküste","es":"Costa de Marfil","fr":"Côte d'Ivoire","ja":"コートジボワール","it":"Costa D'Avorio","br":"Costa do Marfim","pt":"Costa do Marfim","nl":"Ivoorkust","hr":"Obala Bjelokosti","fa":"ساحل عاج"},"flag":"https://restcountries.eu/data/civ.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CIV"},{"name":"Iran (Islamic Republic of)","topLevelDomain":[".ir"],"alpha2Code":"IR","alpha3Code":"IRN","callingCodes":["98"],"capital":"Tehran","altSpellings":["IR","Islamic Republic of Iran","Jomhuri-ye Eslāmi-ye Irān"],"region":"Asia","subregion":"Southern Asia","population":79369900,"latlng":[32.0,53.0],"demonym":"Iranian","area":1648195.0,"gini":38.3,"timezones":["UTC+03:30"],"borders":["AFG","ARM","AZE","IRQ","PAK","TUR","TKM"],"nativeName":"ایران","numericCode":"364","currencies":[{"code":"IRR","name":"Iranian rial","symbol":"﷼"}],"languages":[{"iso639_1":"fa","iso639_2":"fas","name":"Persian (Farsi)","nativeName":"فارسی"}],"translations":{"de":"Iran","es":"Iran","fr":"Iran","ja":"イラン・イスラム共和国","it":null,"br":"Irã","pt":"Irão","nl":"Iran","hr":"Iran","fa":"ایران"},"flag":"https://restcountries.eu/data/irn.svg","regionalBlocs":[],"cioc":"IRI"},{"name":"Iraq","topLevelDomain":[".iq"],"alpha2Code":"IQ","alpha3Code":"IRQ","callingCodes":["964"],"capital":"Baghdad","altSpellings":["IQ","Republic of Iraq","Jumhūriyyat al-‘Irāq"],"region":"Asia","subregion":"Western Asia","population":37883543,"latlng":[33.0,44.0],"demonym":"Iraqi","area":438317.0,"gini":30.9,"timezones":["UTC+03:00"],"borders":["IRN","JOR","KWT","SAU","SYR","TUR"],"nativeName":"العراق","numericCode":"368","currencies":[{"code":"IQD","name":"Iraqi dinar","symbol":"ع.د"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"},{"iso639_1":"ku","iso639_2":"kur","name":"Kurdish","nativeName":"Kurdî"}],"translations":{"de":"Irak","es":"Irak","fr":"Irak","ja":"イラク","it":"Iraq","br":"Iraque","pt":"Iraque","nl":"Irak","hr":"Irak","fa":"عراق"},"flag":"https://restcountries.eu/data/irq.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"IRQ"},{"name":"Ireland","topLevelDomain":[".ie"],"alpha2Code":"IE","alpha3Code":"IRL","callingCodes":["353"],"capital":"Dublin","altSpellings":["IE","Éire","Republic of Ireland","Poblacht na hÉireann"],"region":"Europe","subregion":"Northern Europe","population":6378000,"latlng":[53.0,-8.0],"demonym":"Irish","area":70273.0,"gini":34.3,"timezones":["UTC"],"borders":["GBR"],"nativeName":"Éire","numericCode":"372","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"ga","iso639_2":"gle","name":"Irish","nativeName":"Gaeilge"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Irland","es":"Irlanda","fr":"Irlande","ja":"アイルランド","it":"Irlanda","br":"Irlanda","pt":"Irlanda","nl":"Ierland","hr":"Irska","fa":"ایرلند"},"flag":"https://restcountries.eu/data/irl.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"IRL"},{"name":"Isle of Man","topLevelDomain":[".im"],"alpha2Code":"IM","alpha3Code":"IMN","callingCodes":["44"],"capital":"Douglas","altSpellings":["IM","Ellan Vannin","Mann","Mannin"],"region":"Europe","subregion":"Northern Europe","population":84497,"latlng":[54.25,-4.5],"demonym":"Manx","area":572.0,"gini":null,"timezones":["UTC+00:00"],"borders":[],"nativeName":"Isle of Man","numericCode":"833","currencies":[{"code":"GBP","name":"British pound","symbol":"£"},{"code":"IMP[G]","name":"Manx pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"gv","iso639_2":"glv","name":"Manx","nativeName":"Gaelg"}],"translations":{"de":"Insel Man","es":"Isla de Man","fr":"Île de Man","ja":"マン島","it":"Isola di Man","br":"Ilha de Man","pt":"Ilha de Man","nl":"Isle of Man","hr":"Otok Man","fa":"جزیره من"},"flag":"https://restcountries.eu/data/imn.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":""},{"name":"Israel","topLevelDomain":[".il"],"alpha2Code":"IL","alpha3Code":"ISR","callingCodes":["972"],"capital":"Jerusalem","altSpellings":["IL","State of Israel","Medīnat Yisrā'el"],"region":"Asia","subregion":"Western Asia","population":8527400,"latlng":[31.5,34.75],"demonym":"Israeli","area":20770.0,"gini":39.2,"timezones":["UTC+02:00"],"borders":["EGY","JOR","LBN","SYR"],"nativeName":"יִשְׂרָאֵל","numericCode":"376","currencies":[{"code":"ILS","name":"Israeli new shekel","symbol":"₪"}],"languages":[{"iso639_1":"he","iso639_2":"heb","name":"Hebrew (modern)","nativeName":"עברית"},{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Israel","es":"Israel","fr":"Israël","ja":"イスラエル","it":"Israele","br":"Israel","pt":"Israel","nl":"Israël","hr":"Izrael","fa":"اسرائیل"},"flag":"https://restcountries.eu/data/isr.svg","regionalBlocs":[],"cioc":"ISR"},{"name":"Italy","topLevelDomain":[".it"],"alpha2Code":"IT","alpha3Code":"ITA","callingCodes":["39"],"capital":"Rome","altSpellings":["IT","Italian Republic","Repubblica italiana"],"region":"Europe","subregion":"Southern Europe","population":60665551,"latlng":[42.83333333,12.83333333],"demonym":"Italian","area":301336.0,"gini":36.0,"timezones":["UTC+01:00"],"borders":["AUT","FRA","SMR","SVN","CHE","VAT"],"nativeName":"Italia","numericCode":"380","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"it","iso639_2":"ita","name":"Italian","nativeName":"Italiano"}],"translations":{"de":"Italien","es":"Italia","fr":"Italie","ja":"イタリア","it":"Italia","br":"Itália","pt":"Itália","nl":"Italië","hr":"Italija","fa":"ایتالیا"},"flag":"https://restcountries.eu/data/ita.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"ITA"},{"name":"Jamaica","topLevelDomain":[".jm"],"alpha2Code":"JM","alpha3Code":"JAM","callingCodes":["1876"],"capital":"Kingston","altSpellings":["JM"],"region":"Americas","subregion":"Caribbean","population":2723246,"latlng":[18.25,-77.5],"demonym":"Jamaican","area":10991.0,"gini":45.5,"timezones":["UTC-05:00"],"borders":[],"nativeName":"Jamaica","numericCode":"388","currencies":[{"code":"JMD","name":"Jamaican dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Jamaika","es":"Jamaica","fr":"Jamaïque","ja":"ジャマイカ","it":"Giamaica","br":"Jamaica","pt":"Jamaica","nl":"Jamaica","hr":"Jamajka","fa":"جامائیکا"},"flag":"https://restcountries.eu/data/jam.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"JAM"},{"name":"Japan","topLevelDomain":[".jp"],"alpha2Code":"JP","alpha3Code":"JPN","callingCodes":["81"],"capital":"Tokyo","altSpellings":["JP","Nippon","Nihon"],"region":"Asia","subregion":"Eastern Asia","population":126960000,"latlng":[36.0,138.0],"demonym":"Japanese","area":377930.0,"gini":38.1,"timezones":["UTC+09:00"],"borders":[],"nativeName":"日本","numericCode":"392","currencies":[{"code":"JPY","name":"Japanese yen","symbol":"¥"}],"languages":[{"iso639_1":"ja","iso639_2":"jpn","name":"Japanese","nativeName":"日本語 (にほんご)"}],"translations":{"de":"Japan","es":"Japón","fr":"Japon","ja":"日本","it":"Giappone","br":"Japão","pt":"Japão","nl":"Japan","hr":"Japan","fa":"ژاپن"},"flag":"https://restcountries.eu/data/jpn.svg","regionalBlocs":[],"cioc":"JPN"},{"name":"Jersey","topLevelDomain":[".je"],"alpha2Code":"JE","alpha3Code":"JEY","callingCodes":["44"],"capital":"Saint Helier","altSpellings":["JE","Bailiwick of Jersey","Bailliage de Jersey","Bailliage dé Jèrri"],"region":"Europe","subregion":"Northern Europe","population":100800,"latlng":[49.25,-2.16666666],"demonym":"Channel Islander","area":116.0,"gini":null,"timezones":["UTC+01:00"],"borders":[],"nativeName":"Jersey","numericCode":"832","currencies":[{"code":"GBP","name":"British pound","symbol":"£"},{"code":"JEP[G]","name":"Jersey pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Jersey","es":"Jersey","fr":"Jersey","ja":"ジャージー","it":"Isola di Jersey","br":"Jersey","pt":"Jersey","nl":"Jersey","hr":"Jersey","fa":"جرزی"},"flag":"https://restcountries.eu/data/jey.svg","regionalBlocs":[],"cioc":""},{"name":"Jordan","topLevelDomain":[".jo"],"alpha2Code":"JO","alpha3Code":"JOR","callingCodes":["962"],"capital":"Amman","altSpellings":["JO","Hashemite Kingdom of Jordan","al-Mamlakah al-Urdunīyah al-Hāshimīyah"],"region":"Asia","subregion":"Western Asia","population":9531712,"latlng":[31.0,36.0],"demonym":"Jordanian","area":89342.0,"gini":35.4,"timezones":["UTC+03:00"],"borders":["IRQ","ISR","SAU","SYR"],"nativeName":"الأردن","numericCode":"400","currencies":[{"code":"JOD","name":"Jordanian dinar","symbol":"د.ا"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Jordanien","es":"Jordania","fr":"Jordanie","ja":"ヨルダン","it":"Giordania","br":"Jordânia","pt":"Jordânia","nl":"Jordanië","hr":"Jordan","fa":"اردن"},"flag":"https://restcountries.eu/data/jor.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"JOR"},{"name":"Kazakhstan","topLevelDomain":[".kz",".қаз"],"alpha2Code":"KZ","alpha3Code":"KAZ","callingCodes":["76","77"],"capital":"Astana","altSpellings":["KZ","Qazaqstan","Казахстан","Republic of Kazakhstan","Қазақстан Республикасы","Qazaqstan Respublïkası","Республика Казахстан","Respublika Kazakhstan"],"region":"Asia","subregion":"Central Asia","population":17753200,"latlng":[48.0,68.0],"demonym":"Kazakhstani","area":2724900.0,"gini":29.0,"timezones":["UTC+05:00","UTC+06:00"],"borders":["CHN","KGZ","RUS","TKM","UZB"],"nativeName":"Қазақстан","numericCode":"398","currencies":[{"code":"KZT","name":"Kazakhstani tenge","symbol":null}],"languages":[{"iso639_1":"kk","iso639_2":"kaz","name":"Kazakh","nativeName":"қазақ тілі"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Kasachstan","es":"Kazajistán","fr":"Kazakhstan","ja":"カザフスタン","it":"Kazakistan","br":"Cazaquistão","pt":"Cazaquistão","nl":"Kazachstan","hr":"Kazahstan","fa":"قزاقستان"},"flag":"https://restcountries.eu/data/kaz.svg","regionalBlocs":[{"acronym":"EEU","name":"Eurasian Economic Union","otherAcronyms":["EAEU"],"otherNames":[]}],"cioc":"KAZ"},{"name":"Kenya","topLevelDomain":[".ke"],"alpha2Code":"KE","alpha3Code":"KEN","callingCodes":["254"],"capital":"Nairobi","altSpellings":["KE","Republic of Kenya","Jamhuri ya Kenya"],"region":"Africa","subregion":"Eastern Africa","population":47251000,"latlng":[1.0,38.0],"demonym":"Kenyan","area":580367.0,"gini":47.7,"timezones":["UTC+03:00"],"borders":["ETH","SOM","SSD","TZA","UGA"],"nativeName":"Kenya","numericCode":"404","currencies":[{"code":"KES","name":"Kenyan shilling","symbol":"Sh"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"sw","iso639_2":"swa","name":"Swahili","nativeName":"Kiswahili"}],"translations":{"de":"Kenia","es":"Kenia","fr":"Kenya","ja":"ケニア","it":"Kenya","br":"Quênia","pt":"Quénia","nl":"Kenia","hr":"Kenija","fa":"کنیا"},"flag":"https://restcountries.eu/data/ken.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"KEN"},{"name":"Kiribati","topLevelDomain":[".ki"],"alpha2Code":"KI","alpha3Code":"KIR","callingCodes":["686"],"capital":"South Tarawa","altSpellings":["KI","Republic of Kiribati","Ribaberiki Kiribati"],"region":"Oceania","subregion":"Micronesia","population":113400,"latlng":[1.41666666,173.0],"demonym":"I-Kiribati","area":811.0,"gini":null,"timezones":["UTC+12:00","UTC+13:00","UTC+14:00"],"borders":[],"nativeName":"Kiribati","numericCode":"296","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"},{"code":"(none)","name":"Kiribati dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Kiribati","es":"Kiribati","fr":"Kiribati","ja":"キリバス","it":"Kiribati","br":"Kiribati","pt":"Quiribáti","nl":"Kiribati","hr":"Kiribati","fa":"کیریباتی"},"flag":"https://restcountries.eu/data/kir.svg","regionalBlocs":[],"cioc":"KIR"},{"name":"Kuwait","topLevelDomain":[".kw"],"alpha2Code":"KW","alpha3Code":"KWT","callingCodes":["965"],"capital":"Kuwait City","altSpellings":["KW","State of Kuwait","Dawlat al-Kuwait"],"region":"Asia","subregion":"Western Asia","population":4183658,"latlng":[29.5,45.75],"demonym":"Kuwaiti","area":17818.0,"gini":null,"timezones":["UTC+03:00"],"borders":["IRN","SAU"],"nativeName":"الكويت","numericCode":"414","currencies":[{"code":"KWD","name":"Kuwaiti dinar","symbol":"د.ك"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Kuwait","es":"Kuwait","fr":"Koweït","ja":"クウェート","it":"Kuwait","br":"Kuwait","pt":"Kuwait","nl":"Koeweit","hr":"Kuvajt","fa":"کویت"},"flag":"https://restcountries.eu/data/kwt.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"KUW"},{"name":"Kyrgyzstan","topLevelDomain":[".kg"],"alpha2Code":"KG","alpha3Code":"KGZ","callingCodes":["996"],"capital":"Bishkek","altSpellings":["KG","Киргизия","Kyrgyz Republic","Кыргыз Республикасы","Kyrgyz Respublikasy"],"region":"Asia","subregion":"Central Asia","population":6047800,"latlng":[41.0,75.0],"demonym":"Kirghiz","area":199951.0,"gini":36.2,"timezones":["UTC+06:00"],"borders":["CHN","KAZ","TJK","UZB"],"nativeName":"Кыргызстан","numericCode":"417","currencies":[{"code":"KGS","name":"Kyrgyzstani som","symbol":"с"}],"languages":[{"iso639_1":"ky","iso639_2":"kir","name":"Kyrgyz","nativeName":"Кыргызча"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Kirgisistan","es":"Kirguizistán","fr":"Kirghizistan","ja":"キルギス","it":"Kirghizistan","br":"Quirguistão","pt":"Quirguizistão","nl":"Kirgizië","hr":"Kirgistan","fa":"قرقیزستان"},"flag":"https://restcountries.eu/data/kgz.svg","regionalBlocs":[{"acronym":"EEU","name":"Eurasian Economic Union","otherAcronyms":["EAEU"],"otherNames":[]}],"cioc":"KGZ"},{"name":"Lao People's Democratic Republic","topLevelDomain":[".la"],"alpha2Code":"LA","alpha3Code":"LAO","callingCodes":["856"],"capital":"Vientiane","altSpellings":["LA","Lao","Laos","Lao People's Democratic Republic","Sathalanalat Paxathipatai Paxaxon Lao"],"region":"Asia","subregion":"South-Eastern Asia","population":6492400,"latlng":[18.0,105.0],"demonym":"Laotian","area":236800.0,"gini":36.7,"timezones":["UTC+07:00"],"borders":["MMR","KHM","CHN","THA","VNM"],"nativeName":"ສປປລາວ","numericCode":"418","currencies":[{"code":"LAK","name":"Lao kip","symbol":"₭"}],"languages":[{"iso639_1":"lo","iso639_2":"lao","name":"Lao","nativeName":"ພາສາລາວ"}],"translations":{"de":"Laos","es":"Laos","fr":"Laos","ja":"ラオス人民民主共和国","it":"Laos","br":"Laos","pt":"Laos","nl":"Laos","hr":"Laos","fa":"لائوس"},"flag":"https://restcountries.eu/data/lao.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"LAO"},{"name":"Latvia","topLevelDomain":[".lv"],"alpha2Code":"LV","alpha3Code":"LVA","callingCodes":["371"],"capital":"Riga","altSpellings":["LV","Republic of Latvia","Latvijas Republika"],"region":"Europe","subregion":"Northern Europe","population":1961600,"latlng":[57.0,25.0],"demonym":"Latvian","area":64559.0,"gini":36.6,"timezones":["UTC+02:00"],"borders":["BLR","EST","LTU","RUS"],"nativeName":"Latvija","numericCode":"428","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"lv","iso639_2":"lav","name":"Latvian","nativeName":"latviešu valoda"}],"translations":{"de":"Lettland","es":"Letonia","fr":"Lettonie","ja":"ラトビア","it":"Lettonia","br":"Letônia","pt":"Letónia","nl":"Letland","hr":"Latvija","fa":"لتونی"},"flag":"https://restcountries.eu/data/lva.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"LAT"},{"name":"Lebanon","topLevelDomain":[".lb"],"alpha2Code":"LB","alpha3Code":"LBN","callingCodes":["961"],"capital":"Beirut","altSpellings":["LB","Lebanese Republic","Al-Jumhūrīyah Al-Libnānīyah"],"region":"Asia","subregion":"Western Asia","population":5988000,"latlng":[33.83333333,35.83333333],"demonym":"Lebanese","area":10452.0,"gini":null,"timezones":["UTC+02:00"],"borders":["ISR","SYR"],"nativeName":"لبنان","numericCode":"422","currencies":[{"code":"LBP","name":"Lebanese pound","symbol":"ل.ل"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Libanon","es":"Líbano","fr":"Liban","ja":"レバノン","it":"Libano","br":"Líbano","pt":"Líbano","nl":"Libanon","hr":"Libanon","fa":"لبنان"},"flag":"https://restcountries.eu/data/lbn.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"LIB"},{"name":"Lesotho","topLevelDomain":[".ls"],"alpha2Code":"LS","alpha3Code":"LSO","callingCodes":["266"],"capital":"Maseru","altSpellings":["LS","Kingdom of Lesotho","Muso oa Lesotho"],"region":"Africa","subregion":"Southern Africa","population":1894194,"latlng":[-29.5,28.5],"demonym":"Mosotho","area":30355.0,"gini":52.5,"timezones":["UTC+02:00"],"borders":["ZAF"],"nativeName":"Lesotho","numericCode":"426","currencies":[{"code":"LSL","name":"Lesotho loti","symbol":"L"},{"code":"ZAR","name":"South African rand","symbol":"R"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"st","iso639_2":"sot","name":"Southern Sotho","nativeName":"Sesotho"}],"translations":{"de":"Lesotho","es":"Lesotho","fr":"Lesotho","ja":"レソト","it":"Lesotho","br":"Lesoto","pt":"Lesoto","nl":"Lesotho","hr":"Lesoto","fa":"لسوتو"},"flag":"https://restcountries.eu/data/lso.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"LES"},{"name":"Liberia","topLevelDomain":[".lr"],"alpha2Code":"LR","alpha3Code":"LBR","callingCodes":["231"],"capital":"Monrovia","altSpellings":["LR","Republic of Liberia"],"region":"Africa","subregion":"Western Africa","population":4615000,"latlng":[6.5,-9.5],"demonym":"Liberian","area":111369.0,"gini":38.2,"timezones":["UTC"],"borders":["GIN","CIV","SLE"],"nativeName":"Liberia","numericCode":"430","currencies":[{"code":"LRD","name":"Liberian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Liberia","es":"Liberia","fr":"Liberia","ja":"リベリア","it":"Liberia","br":"Libéria","pt":"Libéria","nl":"Liberia","hr":"Liberija","fa":"لیبریا"},"flag":"https://restcountries.eu/data/lbr.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"LBR"},{"name":"Libya","topLevelDomain":[".ly"],"alpha2Code":"LY","alpha3Code":"LBY","callingCodes":["218"],"capital":"Tripoli","altSpellings":["LY","State of Libya","Dawlat Libya"],"region":"Africa","subregion":"Northern Africa","population":6385000,"latlng":[25.0,17.0],"demonym":"Libyan","area":1759540.0,"gini":null,"timezones":["UTC+01:00"],"borders":["DZA","TCD","EGY","NER","SDN","TUN"],"nativeName":"‏ليبيا","numericCode":"434","currencies":[{"code":"LYD","name":"Libyan dinar","symbol":"ل.د"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Libyen","es":"Libia","fr":"Libye","ja":"リビア","it":"Libia","br":"Líbia","pt":"Líbia","nl":"Libië","hr":"Libija","fa":"لیبی"},"flag":"https://restcountries.eu/data/lby.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"LBA"},{"name":"Liechtenstein","topLevelDomain":[".li"],"alpha2Code":"LI","alpha3Code":"LIE","callingCodes":["423"],"capital":"Vaduz","altSpellings":["LI","Principality of Liechtenstein","Fürstentum Liechtenstein"],"region":"Europe","subregion":"Western Europe","population":37623,"latlng":[47.26666666,9.53333333],"demonym":"Liechtensteiner","area":160.0,"gini":null,"timezones":["UTC+01:00"],"borders":["AUT","CHE"],"nativeName":"Liechtenstein","numericCode":"438","currencies":[{"code":"CHF","name":"Swiss franc","symbol":"Fr"}],"languages":[{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"}],"translations":{"de":"Liechtenstein","es":"Liechtenstein","fr":"Liechtenstein","ja":"リヒテンシュタイン","it":"Liechtenstein","br":"Liechtenstein","pt":"Listenstaine","nl":"Liechtenstein","hr":"Lihtenštajn","fa":"لیختن‌اشتاین"},"flag":"https://restcountries.eu/data/lie.svg","regionalBlocs":[{"acronym":"EFTA","name":"European Free Trade Association","otherAcronyms":[],"otherNames":[]}],"cioc":"LIE"},{"name":"Lithuania","topLevelDomain":[".lt"],"alpha2Code":"LT","alpha3Code":"LTU","callingCodes":["370"],"capital":"Vilnius","altSpellings":["LT","Republic of Lithuania","Lietuvos Respublika"],"region":"Europe","subregion":"Northern Europe","population":2872294,"latlng":[56.0,24.0],"demonym":"Lithuanian","area":65300.0,"gini":37.6,"timezones":["UTC+02:00"],"borders":["BLR","LVA","POL","RUS"],"nativeName":"Lietuva","numericCode":"440","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"lt","iso639_2":"lit","name":"Lithuanian","nativeName":"lietuvių kalba"}],"translations":{"de":"Litauen","es":"Lituania","fr":"Lituanie","ja":"リトアニア","it":"Lituania","br":"Lituânia","pt":"Lituânia","nl":"Litouwen","hr":"Litva","fa":"لیتوانی"},"flag":"https://restcountries.eu/data/ltu.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"LTU"},{"name":"Luxembourg","topLevelDomain":[".lu"],"alpha2Code":"LU","alpha3Code":"LUX","callingCodes":["352"],"capital":"Luxembourg","altSpellings":["LU","Grand Duchy of Luxembourg","Grand-Duché de Luxembourg","Großherzogtum Luxemburg","Groussherzogtum Lëtzebuerg"],"region":"Europe","subregion":"Western Europe","population":576200,"latlng":[49.75,6.16666666],"demonym":"Luxembourger","area":2586.0,"gini":30.8,"timezones":["UTC+01:00"],"borders":["BEL","FRA","DEU"],"nativeName":"Luxembourg","numericCode":"442","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"},{"iso639_1":"lb","iso639_2":"ltz","name":"Luxembourgish","nativeName":"Lëtzebuergesch"}],"translations":{"de":"Luxemburg","es":"Luxemburgo","fr":"Luxembourg","ja":"ルクセンブルク","it":"Lussemburgo","br":"Luxemburgo","pt":"Luxemburgo","nl":"Luxemburg","hr":"Luksemburg","fa":"لوکزامبورگ"},"flag":"https://restcountries.eu/data/lux.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"LUX"},{"name":"Macao","topLevelDomain":[".mo"],"alpha2Code":"MO","alpha3Code":"MAC","callingCodes":["853"],"capital":"","altSpellings":["MO","澳门","Macao Special Administrative Region of the People's Republic of China","中華人民共和國澳門特別行政區","Região Administrativa Especial de Macau da República Popular da China"],"region":"Asia","subregion":"Eastern Asia","population":649100,"latlng":[22.16666666,113.55],"demonym":"Chinese","area":30.0,"gini":null,"timezones":["UTC+08:00"],"borders":["CHN"],"nativeName":"澳門","numericCode":"446","currencies":[{"code":"MOP","name":"Macanese pataca","symbol":"P"}],"languages":[{"iso639_1":"zh","iso639_2":"zho","name":"Chinese","nativeName":"中文 (Zhōngwén)"},{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Macao","es":"Macao","fr":"Macao","ja":"マカオ","it":"Macao","br":"Macau","pt":"Macau","nl":"Macao","hr":"Makao","fa":"مکائو"},"flag":"https://restcountries.eu/data/mac.svg","regionalBlocs":[],"cioc":""},{"name":"Macedonia (the former Yugoslav Republic of)","topLevelDomain":[".mk"],"alpha2Code":"MK","alpha3Code":"MKD","callingCodes":["389"],"capital":"Skopje","altSpellings":["MK","Republic of Macedonia","Република Македонија"],"region":"Europe","subregion":"Southern Europe","population":2058539,"latlng":[41.83333333,22.0],"demonym":"Macedonian","area":25713.0,"gini":43.2,"timezones":["UTC+01:00"],"borders":["ALB","BGR","GRC","KOS","SRB"],"nativeName":"Македонија","numericCode":"807","currencies":[{"code":"MKD","name":"Macedonian denar","symbol":"ден"}],"languages":[{"iso639_1":"mk","iso639_2":"mkd","name":"Macedonian","nativeName":"македонски јазик"}],"translations":{"de":"Mazedonien","es":"Macedonia","fr":"Macédoine","ja":"マケドニア旧ユーゴスラビア共和国","it":"Macedonia","br":"Macedônia","pt":"Macedónia","nl":"Macedonië","hr":"Makedonija","fa":""},"flag":"https://restcountries.eu/data/mkd.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"MKD"},{"name":"Madagascar","topLevelDomain":[".mg"],"alpha2Code":"MG","alpha3Code":"MDG","callingCodes":["261"],"capital":"Antananarivo","altSpellings":["MG","Republic of Madagascar","Repoblikan'i Madagasikara","République de Madagascar"],"region":"Africa","subregion":"Eastern Africa","population":22434363,"latlng":[-20.0,47.0],"demonym":"Malagasy","area":587041.0,"gini":44.1,"timezones":["UTC+03:00"],"borders":[],"nativeName":"Madagasikara","numericCode":"450","currencies":[{"code":"MGA","name":"Malagasy ariary","symbol":"Ar"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"mg","iso639_2":"mlg","name":"Malagasy","nativeName":"fiteny malagasy"}],"translations":{"de":"Madagaskar","es":"Madagascar","fr":"Madagascar","ja":"マダガスカル","it":"Madagascar","br":"Madagascar","pt":"Madagáscar","nl":"Madagaskar","hr":"Madagaskar","fa":"ماداگاسکار"},"flag":"https://restcountries.eu/data/mdg.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"MAD"},{"name":"Malawi","topLevelDomain":[".mw"],"alpha2Code":"MW","alpha3Code":"MWI","callingCodes":["265"],"capital":"Lilongwe","altSpellings":["MW","Republic of Malawi"],"region":"Africa","subregion":"Eastern Africa","population":16832910,"latlng":[-13.5,34.0],"demonym":"Malawian","area":118484.0,"gini":39.0,"timezones":["UTC+02:00"],"borders":["MOZ","TZA","ZMB"],"nativeName":"Malawi","numericCode":"454","currencies":[{"code":"MWK","name":"Malawian kwacha","symbol":"MK"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ny","iso639_2":"nya","name":"Chichewa","nativeName":"chiCheŵa"}],"translations":{"de":"Malawi","es":"Malawi","fr":"Malawi","ja":"マラウイ","it":"Malawi","br":"Malawi","pt":"Malávi","nl":"Malawi","hr":"Malavi","fa":"مالاوی"},"flag":"https://restcountries.eu/data/mwi.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"MAW"},{"name":"Malaysia","topLevelDomain":[".my"],"alpha2Code":"MY","alpha3Code":"MYS","callingCodes":["60"],"capital":"Kuala Lumpur","altSpellings":["MY"],"region":"Asia","subregion":"South-Eastern Asia","population":31405416,"latlng":[2.5,112.5],"demonym":"Malaysian","area":330803.0,"gini":46.2,"timezones":["UTC+08:00"],"borders":["BRN","IDN","THA"],"nativeName":"Malaysia","numericCode":"458","currencies":[{"code":"MYR","name":"Malaysian ringgit","symbol":"RM"}],"languages":[{"iso639_1":null,"iso639_2":"zsm","name":"Malaysian","nativeName":"بهاس مليسيا"}],"translations":{"de":"Malaysia","es":"Malasia","fr":"Malaisie","ja":"マレーシア","it":"Malesia","br":"Malásia","pt":"Malásia","nl":"Maleisië","hr":"Malezija","fa":"مالزی"},"flag":"https://restcountries.eu/data/mys.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"MAS"},{"name":"Maldives","topLevelDomain":[".mv"],"alpha2Code":"MV","alpha3Code":"MDV","callingCodes":["960"],"capital":"Malé","altSpellings":["MV","Maldive Islands","Republic of the Maldives","Dhivehi Raajjeyge Jumhooriyya"],"region":"Asia","subregion":"Southern Asia","population":344023,"latlng":[3.25,73.0],"demonym":"Maldivan","area":300.0,"gini":37.4,"timezones":["UTC+05:00"],"borders":[],"nativeName":"Maldives","numericCode":"462","currencies":[{"code":"MVR","name":"Maldivian rufiyaa","symbol":".ރ"}],"languages":[{"iso639_1":"dv","iso639_2":"div","name":"Divehi","nativeName":"ދިވެހި"}],"translations":{"de":"Malediven","es":"Maldivas","fr":"Maldives","ja":"モルディブ","it":"Maldive","br":"Maldivas","pt":"Maldivas","nl":"Maldiven","hr":"Maldivi","fa":"مالدیو"},"flag":"https://restcountries.eu/data/mdv.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"MDV"},{"name":"Mali","topLevelDomain":[".ml"],"alpha2Code":"ML","alpha3Code":"MLI","callingCodes":["223"],"capital":"Bamako","altSpellings":["ML","Republic of Mali","République du Mali"],"region":"Africa","subregion":"Western Africa","population":18135000,"latlng":[17.0,-4.0],"demonym":"Malian","area":1240192.0,"gini":33.0,"timezones":["UTC"],"borders":["DZA","BFA","GIN","CIV","MRT","NER","SEN"],"nativeName":"Mali","numericCode":"466","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Mali","es":"Mali","fr":"Mali","ja":"マリ","it":"Mali","br":"Mali","pt":"Mali","nl":"Mali","hr":"Mali","fa":"مالی"},"flag":"https://restcountries.eu/data/mli.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"MLI"},{"name":"Malta","topLevelDomain":[".mt"],"alpha2Code":"MT","alpha3Code":"MLT","callingCodes":["356"],"capital":"Valletta","altSpellings":["MT","Republic of Malta","Repubblika ta' Malta"],"region":"Europe","subregion":"Southern Europe","population":425384,"latlng":[35.83333333,14.58333333],"demonym":"Maltese","area":316.0,"gini":null,"timezones":["UTC+01:00"],"borders":[],"nativeName":"Malta","numericCode":"470","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"mt","iso639_2":"mlt","name":"Maltese","nativeName":"Malti"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Malta","es":"Malta","fr":"Malte","ja":"マルタ","it":"Malta","br":"Malta","pt":"Malta","nl":"Malta","hr":"Malta","fa":"مالت"},"flag":"https://restcountries.eu/data/mlt.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"MLT"},{"name":"Marshall Islands","topLevelDomain":[".mh"],"alpha2Code":"MH","alpha3Code":"MHL","callingCodes":["692"],"capital":"Majuro","altSpellings":["MH","Republic of the Marshall Islands","Aolepān Aorōkin M̧ajeļ"],"region":"Oceania","subregion":"Micronesia","population":54880,"latlng":[9.0,168.0],"demonym":"Marshallese","area":181.0,"gini":null,"timezones":["UTC+12:00"],"borders":[],"nativeName":"M̧ajeļ","numericCode":"584","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"mh","iso639_2":"mah","name":"Marshallese","nativeName":"Kajin M̧ajeļ"}],"translations":{"de":"Marshallinseln","es":"Islas Marshall","fr":"Îles Marshall","ja":"マーシャル諸島","it":"Isole Marshall","br":"Ilhas Marshall","pt":"Ilhas Marshall","nl":"Marshalleilanden","hr":"Maršalovi Otoci","fa":"جزایر مارشال"},"flag":"https://restcountries.eu/data/mhl.svg","regionalBlocs":[],"cioc":"MHL"},{"name":"Martinique","topLevelDomain":[".mq"],"alpha2Code":"MQ","alpha3Code":"MTQ","callingCodes":["596"],"capital":"Fort-de-France","altSpellings":["MQ"],"region":"Americas","subregion":"Caribbean","population":378243,"latlng":[14.666667,-61.0],"demonym":"French","area":null,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Martinique","numericCode":"474","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Martinique","es":"Martinica","fr":"Martinique","ja":"マルティニーク","it":"Martinica","br":"Martinica","pt":"Martinica","nl":"Martinique","hr":"Martinique","fa":"مونتسرات"},"flag":"https://restcountries.eu/data/mtq.svg","regionalBlocs":[],"cioc":""},{"name":"Mauritania","topLevelDomain":[".mr"],"alpha2Code":"MR","alpha3Code":"MRT","callingCodes":["222"],"capital":"Nouakchott","altSpellings":["MR","Islamic Republic of Mauritania","al-Jumhūriyyah al-ʾIslāmiyyah al-Mūrītāniyyah"],"region":"Africa","subregion":"Western Africa","population":3718678,"latlng":[20.0,-12.0],"demonym":"Mauritanian","area":1030700.0,"gini":40.5,"timezones":["UTC"],"borders":["DZA","MLI","SEN","ESH"],"nativeName":"موريتانيا","numericCode":"478","currencies":[{"code":"MRO","name":"Mauritanian ouguiya","symbol":"UM"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Mauretanien","es":"Mauritania","fr":"Mauritanie","ja":"モーリタニア","it":"Mauritania","br":"Mauritânia","pt":"Mauritânia","nl":"Mauritanië","hr":"Mauritanija","fa":"موریتانی"},"flag":"https://restcountries.eu/data/mrt.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"MTN"},{"name":"Mauritius","topLevelDomain":[".mu"],"alpha2Code":"MU","alpha3Code":"MUS","callingCodes":["230"],"capital":"Port Louis","altSpellings":["MU","Republic of Mauritius","République de Maurice"],"region":"Africa","subregion":"Eastern Africa","population":1262879,"latlng":[-20.28333333,57.55],"demonym":"Mauritian","area":2040.0,"gini":null,"timezones":["UTC+04:00"],"borders":[],"nativeName":"Maurice","numericCode":"480","currencies":[{"code":"MUR","name":"Mauritian rupee","symbol":"₨"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Mauritius","es":"Mauricio","fr":"Île Maurice","ja":"モーリシャス","it":"Mauritius","br":"Maurício","pt":"Maurícia","nl":"Mauritius","hr":"Mauricijus","fa":"موریس"},"flag":"https://restcountries.eu/data/mus.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"MRI"},{"name":"Mayotte","topLevelDomain":[".yt"],"alpha2Code":"YT","alpha3Code":"MYT","callingCodes":["262"],"capital":"Mamoudzou","altSpellings":["YT","Department of Mayotte","Département de Mayotte"],"region":"Africa","subregion":"Eastern Africa","population":226915,"latlng":[-12.83333333,45.16666666],"demonym":"French","area":null,"gini":null,"timezones":["UTC+03:00"],"borders":[],"nativeName":"Mayotte","numericCode":"175","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Mayotte","es":"Mayotte","fr":"Mayotte","ja":"マヨット","it":"Mayotte","br":"Mayotte","pt":"Mayotte","nl":"Mayotte","hr":"Mayotte","fa":"مایوت"},"flag":"https://restcountries.eu/data/myt.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"Mexico","topLevelDomain":[".mx"],"alpha2Code":"MX","alpha3Code":"MEX","callingCodes":["52"],"capital":"Mexico City","altSpellings":["MX","Mexicanos","United Mexican States","Estados Unidos Mexicanos"],"region":"Americas","subregion":"Central America","population":122273473,"latlng":[23.0,-102.0],"demonym":"Mexican","area":1964375.0,"gini":47.0,"timezones":["UTC-08:00","UTC-07:00","UTC-06:00"],"borders":["BLZ","GTM","USA"],"nativeName":"México","numericCode":"484","currencies":[{"code":"MXN","name":"Mexican peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Mexiko","es":"México","fr":"Mexique","ja":"メキシコ","it":"Messico","br":"México","pt":"México","nl":"Mexico","hr":"Meksiko","fa":"مکزیک"},"flag":"https://restcountries.eu/data/mex.svg","regionalBlocs":[{"acronym":"PA","name":"Pacific Alliance","otherAcronyms":[],"otherNames":["Alianza del Pacífico"]},{"acronym":"NAFTA","name":"North American Free Trade Agreement","otherAcronyms":[],"otherNames":["Tratado de Libre Comercio de América del Norte","Accord de Libre-échange Nord-Américain"]}],"cioc":"MEX"},{"name":"Micronesia (Federated States of)","topLevelDomain":[".fm"],"alpha2Code":"FM","alpha3Code":"FSM","callingCodes":["691"],"capital":"Palikir","altSpellings":["FM","Federated States of Micronesia"],"region":"Oceania","subregion":"Micronesia","population":102800,"latlng":[6.91666666,158.25],"demonym":"Micronesian","area":702.0,"gini":null,"timezones":["UTC+10:00","UTC+11"],"borders":[],"nativeName":"Micronesia","numericCode":"583","currencies":[{"code":null,"name":"[D]","symbol":"$"},{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Mikronesien","es":"Micronesia","fr":"Micronésie","ja":"ミクロネシア連邦","it":"Micronesia","br":"Micronésia","pt":"Micronésia","nl":"Micronesië","hr":"Mikronezija","fa":"ایالات فدرال میکرونزی"},"flag":"https://restcountries.eu/data/fsm.svg","regionalBlocs":[],"cioc":"FSM"},{"name":"Moldova (Republic of)","topLevelDomain":[".md"],"alpha2Code":"MD","alpha3Code":"MDA","callingCodes":["373"],"capital":"Chișinău","altSpellings":["MD","Republic of Moldova","Republica Moldova"],"region":"Europe","subregion":"Eastern Europe","population":3553100,"latlng":[47.0,29.0],"demonym":"Moldovan","area":33846.0,"gini":33.0,"timezones":["UTC+02:00"],"borders":["ROU","UKR"],"nativeName":"Moldova","numericCode":"498","currencies":[{"code":"MDL","name":"Moldovan leu","symbol":"L"}],"languages":[{"iso639_1":"ro","iso639_2":"ron","name":"Romanian","nativeName":"Română"}],"translations":{"de":"Moldawie","es":"Moldavia","fr":"Moldavie","ja":"モルドバ共和国","it":"Moldavia","br":"Moldávia","pt":"Moldávia","nl":"Moldavië","hr":"Moldova","fa":"مولداوی"},"flag":"https://restcountries.eu/data/mda.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"MDA"},{"name":"Monaco","topLevelDomain":[".mc"],"alpha2Code":"MC","alpha3Code":"MCO","callingCodes":["377"],"capital":"Monaco","altSpellings":["MC","Principality of Monaco","Principauté de Monaco"],"region":"Europe","subregion":"Western Europe","population":38400,"latlng":[43.73333333,7.4],"demonym":"Monegasque","area":2.02,"gini":null,"timezones":["UTC+01:00"],"borders":["FRA"],"nativeName":"Monaco","numericCode":"492","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Monaco","es":"Mónaco","fr":"Monaco","ja":"モナコ","it":"Principato di Monaco","br":"Mônaco","pt":"Mónaco","nl":"Monaco","hr":"Monako","fa":"موناکو"},"flag":"https://restcountries.eu/data/mco.svg","regionalBlocs":[],"cioc":"MON"},{"name":"Mongolia","topLevelDomain":[".mn"],"alpha2Code":"MN","alpha3Code":"MNG","callingCodes":["976"],"capital":"Ulan Bator","altSpellings":["MN"],"region":"Asia","subregion":"Eastern Asia","population":3093100,"latlng":[46.0,105.0],"demonym":"Mongolian","area":1564110.0,"gini":36.5,"timezones":["UTC+07:00","UTC+08:00"],"borders":["CHN","RUS"],"nativeName":"Монгол улс","numericCode":"496","currencies":[{"code":"MNT","name":"Mongolian tögrög","symbol":"₮"}],"languages":[{"iso639_1":"mn","iso639_2":"mon","name":"Mongolian","nativeName":"Монгол хэл"}],"translations":{"de":"Mongolei","es":"Mongolia","fr":"Mongolie","ja":"モンゴル","it":"Mongolia","br":"Mongólia","pt":"Mongólia","nl":"Mongolië","hr":"Mongolija","fa":"مغولستان"},"flag":"https://restcountries.eu/data/mng.svg","regionalBlocs":[],"cioc":"MGL"},{"name":"Montenegro","topLevelDomain":[".me"],"alpha2Code":"ME","alpha3Code":"MNE","callingCodes":["382"],"capital":"Podgorica","altSpellings":["ME","Crna Gora"],"region":"Europe","subregion":"Southern Europe","population":621810,"latlng":[42.5,19.3],"demonym":"Montenegrin","area":13812.0,"gini":30.0,"timezones":["UTC+01:00"],"borders":["ALB","BIH","HRV","KOS","SRB"],"nativeName":"Црна Гора","numericCode":"499","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"sr","iso639_2":"srp","name":"Serbian","nativeName":"српски језик"},{"iso639_1":"bs","iso639_2":"bos","name":"Bosnian","nativeName":"bosanski jezik"},{"iso639_1":"sq","iso639_2":"sqi","name":"Albanian","nativeName":"Shqip"},{"iso639_1":"hr","iso639_2":"hrv","name":"Croatian","nativeName":"hrvatski jezik"}],"translations":{"de":"Montenegro","es":"Montenegro","fr":"Monténégro","ja":"モンテネグロ","it":"Montenegro","br":"Montenegro","pt":"Montenegro","nl":"Montenegro","hr":"Crna Gora","fa":"مونته‌نگرو"},"flag":"https://restcountries.eu/data/mne.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"MNE"},{"name":"Montserrat","topLevelDomain":[".ms"],"alpha2Code":"MS","alpha3Code":"MSR","callingCodes":["1664"],"capital":"Plymouth","altSpellings":["MS"],"region":"Americas","subregion":"Caribbean","population":4922,"latlng":[16.75,-62.2],"demonym":"Montserratian","area":102.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Montserrat","numericCode":"500","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Montserrat","es":"Montserrat","fr":"Montserrat","ja":"モントセラト","it":"Montserrat","br":"Montserrat","pt":"Monserrate","nl":"Montserrat","hr":"Montserrat","fa":"مایوت"},"flag":"https://restcountries.eu/data/msr.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":""},{"name":"Morocco","topLevelDomain":[".ma"],"alpha2Code":"MA","alpha3Code":"MAR","callingCodes":["212"],"capital":"Rabat","altSpellings":["MA","Kingdom of Morocco","Al-Mamlakah al-Maġribiyah"],"region":"Africa","subregion":"Northern Africa","population":33337529,"latlng":[32.0,-5.0],"demonym":"Moroccan","area":446550.0,"gini":40.9,"timezones":["UTC"],"borders":["DZA","ESH","ESP"],"nativeName":"المغرب","numericCode":"504","currencies":[{"code":"MAD","name":"Moroccan dirham","symbol":"د.م."}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Marokko","es":"Marruecos","fr":"Maroc","ja":"モロッコ","it":"Marocco","br":"Marrocos","pt":"Marrocos","nl":"Marokko","hr":"Maroko","fa":"مراکش"},"flag":"https://restcountries.eu/data/mar.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"MAR"},{"name":"Mozambique","topLevelDomain":[".mz"],"alpha2Code":"MZ","alpha3Code":"MOZ","callingCodes":["258"],"capital":"Maputo","altSpellings":["MZ","Republic of Mozambique","República de Moçambique"],"region":"Africa","subregion":"Eastern Africa","population":26423700,"latlng":[-18.25,35.0],"demonym":"Mozambican","area":801590.0,"gini":45.7,"timezones":["UTC+02:00"],"borders":["MWI","ZAF","SWZ","TZA","ZMB","ZWE"],"nativeName":"Moçambique","numericCode":"508","currencies":[{"code":"MZN","name":"Mozambican metical","symbol":"MT"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Mosambik","es":"Mozambique","fr":"Mozambique","ja":"モザンビーク","it":"Mozambico","br":"Moçambique","pt":"Moçambique","nl":"Mozambique","hr":"Mozambik","fa":"موزامبیک"},"flag":"https://restcountries.eu/data/moz.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"MOZ"},{"name":"Myanmar","topLevelDomain":[".mm"],"alpha2Code":"MM","alpha3Code":"MMR","callingCodes":["95"],"capital":"Naypyidaw","altSpellings":["MM","Burma","Republic of the Union of Myanmar","Pyidaunzu Thanmăda Myăma Nainngandaw"],"region":"Asia","subregion":"South-Eastern Asia","population":51419420,"latlng":[22.0,98.0],"demonym":"Burmese","area":676578.0,"gini":null,"timezones":["UTC+06:30"],"borders":["BGD","CHN","IND","LAO","THA"],"nativeName":"Myanma","numericCode":"104","currencies":[{"code":"MMK","name":"Burmese kyat","symbol":"Ks"}],"languages":[{"iso639_1":"my","iso639_2":"mya","name":"Burmese","nativeName":"ဗမာစာ"}],"translations":{"de":"Myanmar","es":"Myanmar","fr":"Myanmar","ja":"ミャンマー","it":"Birmania","br":"Myanmar","pt":"Myanmar","nl":"Myanmar","hr":"Mijanmar","fa":"میانمار"},"flag":"https://restcountries.eu/data/mmr.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"MYA"},{"name":"Namibia","topLevelDomain":[".na"],"alpha2Code":"NA","alpha3Code":"NAM","callingCodes":["264"],"capital":"Windhoek","altSpellings":["NA","Namibië","Republic of Namibia"],"region":"Africa","subregion":"Southern Africa","population":2324388,"latlng":[-22.0,17.0],"demonym":"Namibian","area":825615.0,"gini":63.9,"timezones":["UTC+01:00"],"borders":["AGO","BWA","ZAF","ZMB"],"nativeName":"Namibia","numericCode":"516","currencies":[{"code":"NAD","name":"Namibian dollar","symbol":"$"},{"code":"ZAR","name":"South African rand","symbol":"R"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"af","iso639_2":"afr","name":"Afrikaans","nativeName":"Afrikaans"}],"translations":{"de":"Namibia","es":"Namibia","fr":"Namibie","ja":"ナミビア","it":"Namibia","br":"Namíbia","pt":"Namíbia","nl":"Namibië","hr":"Namibija","fa":"نامیبیا"},"flag":"https://restcountries.eu/data/nam.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"NAM"},{"name":"Nauru","topLevelDomain":[".nr"],"alpha2Code":"NR","alpha3Code":"NRU","callingCodes":["674"],"capital":"Yaren","altSpellings":["NR","Naoero","Pleasant Island","Republic of Nauru","Ripublik Naoero"],"region":"Oceania","subregion":"Micronesia","population":10084,"latlng":[-0.53333333,166.91666666],"demonym":"Nauruan","area":21.0,"gini":null,"timezones":["UTC+12:00"],"borders":[],"nativeName":"Nauru","numericCode":"520","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"},{"code":"(none)","name":null,"symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"na","iso639_2":"nau","name":"Nauruan","nativeName":"Dorerin Naoero"}],"translations":{"de":"Nauru","es":"Nauru","fr":"Nauru","ja":"ナウル","it":"Nauru","br":"Nauru","pt":"Nauru","nl":"Nauru","hr":"Nauru","fa":"نائورو"},"flag":"https://restcountries.eu/data/nru.svg","regionalBlocs":[],"cioc":"NRU"},{"name":"Nepal","topLevelDomain":[".np"],"alpha2Code":"NP","alpha3Code":"NPL","callingCodes":["977"],"capital":"Kathmandu","altSpellings":["NP","Federal Democratic Republic of Nepal","Loktāntrik Ganatantra Nepāl"],"region":"Asia","subregion":"Southern Asia","population":28431500,"latlng":[28.0,84.0],"demonym":"Nepalese","area":147181.0,"gini":32.8,"timezones":["UTC+05:45"],"borders":["CHN","IND"],"nativeName":"नेपाल","numericCode":"524","currencies":[{"code":"NPR","name":"Nepalese rupee","symbol":"₨"}],"languages":[{"iso639_1":"ne","iso639_2":"nep","name":"Nepali","nativeName":"नेपाली"}],"translations":{"de":"Népal","es":"Nepal","fr":"Népal","ja":"ネパール","it":"Nepal","br":"Nepal","pt":"Nepal","nl":"Nepal","hr":"Nepal","fa":"نپال"},"flag":"https://restcountries.eu/data/npl.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"NEP"},{"name":"Netherlands","topLevelDomain":[".nl"],"alpha2Code":"NL","alpha3Code":"NLD","callingCodes":["31"],"capital":"Amsterdam","altSpellings":["NL","Holland","Nederland"],"region":"Europe","subregion":"Western Europe","population":17019800,"latlng":[52.5,5.75],"demonym":"Dutch","area":41850.0,"gini":30.9,"timezones":["UTC-04:00","UTC+01:00"],"borders":["BEL","DEU"],"nativeName":"Nederland","numericCode":"528","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"}],"translations":{"de":"Niederlande","es":"Países Bajos","fr":"Pays-Bas","ja":"オランダ","it":"Paesi Bassi","br":"Holanda","pt":"Países Baixos","nl":"Nederland","hr":"Nizozemska","fa":"پادشاهی هلند"},"flag":"https://restcountries.eu/data/nld.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"NED"},{"name":"New Caledonia","topLevelDomain":[".nc"],"alpha2Code":"NC","alpha3Code":"NCL","callingCodes":["687"],"capital":"Nouméa","altSpellings":["NC"],"region":"Oceania","subregion":"Melanesia","population":268767,"latlng":[-21.5,165.5],"demonym":"New Caledonian","area":18575.0,"gini":null,"timezones":["UTC+11:00"],"borders":[],"nativeName":"Nouvelle-Calédonie","numericCode":"540","currencies":[{"code":"XPF","name":"CFP franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Neukaledonien","es":"Nueva Caledonia","fr":"Nouvelle-Calédonie","ja":"ニューカレドニア","it":"Nuova Caledonia","br":"Nova Caledônia","pt":"Nova Caledónia","nl":"Nieuw-Caledonië","hr":"Nova Kaledonija","fa":"کالدونیای جدید"},"flag":"https://restcountries.eu/data/ncl.svg","regionalBlocs":[],"cioc":""},{"name":"New Zealand","topLevelDomain":[".nz"],"alpha2Code":"NZ","alpha3Code":"NZL","callingCodes":["64"],"capital":"Wellington","altSpellings":["NZ","Aotearoa"],"region":"Oceania","subregion":"Australia and New Zealand","population":4697854,"latlng":[-41.0,174.0],"demonym":"New Zealander","area":270467.0,"gini":36.2,"timezones":["UTC-11:00","UTC-10:00","UTC+12:00","UTC+12:45","UTC+13:00"],"borders":[],"nativeName":"New Zealand","numericCode":"554","currencies":[{"code":"NZD","name":"New Zealand dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"mi","iso639_2":"mri","name":"Māori","nativeName":"te reo Māori"}],"translations":{"de":"Neuseeland","es":"Nueva Zelanda","fr":"Nouvelle-Zélande","ja":"ニュージーランド","it":"Nuova Zelanda","br":"Nova Zelândia","pt":"Nova Zelândia","nl":"Nieuw-Zeeland","hr":"Novi Zeland","fa":"نیوزیلند"},"flag":"https://restcountries.eu/data/nzl.svg","regionalBlocs":[],"cioc":"NZL"},{"name":"Nicaragua","topLevelDomain":[".ni"],"alpha2Code":"NI","alpha3Code":"NIC","callingCodes":["505"],"capital":"Managua","altSpellings":["NI","Republic of Nicaragua","República de Nicaragua"],"region":"Americas","subregion":"Central America","population":6262703,"latlng":[13.0,-85.0],"demonym":"Nicaraguan","area":130373.0,"gini":40.5,"timezones":["UTC-06:00"],"borders":["CRI","HND"],"nativeName":"Nicaragua","numericCode":"558","currencies":[{"code":"NIO","name":"Nicaraguan córdoba","symbol":"C$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Nicaragua","es":"Nicaragua","fr":"Nicaragua","ja":"ニカラグア","it":"Nicaragua","br":"Nicarágua","pt":"Nicarágua","nl":"Nicaragua","hr":"Nikaragva","fa":"نیکاراگوئه"},"flag":"https://restcountries.eu/data/nic.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"NCA"},{"name":"Niger","topLevelDomain":[".ne"],"alpha2Code":"NE","alpha3Code":"NER","callingCodes":["227"],"capital":"Niamey","altSpellings":["NE","Nijar","Republic of Niger","République du Niger"],"region":"Africa","subregion":"Western Africa","population":20715000,"latlng":[16.0,8.0],"demonym":"Nigerien","area":1267000.0,"gini":34.6,"timezones":["UTC+01:00"],"borders":["DZA","BEN","BFA","TCD","LBY","MLI","NGA"],"nativeName":"Niger","numericCode":"562","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Niger","es":"Níger","fr":"Niger","ja":"ニジェール","it":"Niger","br":"Níger","pt":"Níger","nl":"Niger","hr":"Niger","fa":"نیجر"},"flag":"https://restcountries.eu/data/ner.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"NIG"},{"name":"Nigeria","topLevelDomain":[".ng"],"alpha2Code":"NG","alpha3Code":"NGA","callingCodes":["234"],"capital":"Abuja","altSpellings":["NG","Nijeriya","Naíjíríà","Federal Republic of Nigeria"],"region":"Africa","subregion":"Western Africa","population":186988000,"latlng":[10.0,8.0],"demonym":"Nigerian","area":923768.0,"gini":48.8,"timezones":["UTC+01:00"],"borders":["BEN","CMR","TCD","NER"],"nativeName":"Nigeria","numericCode":"566","currencies":[{"code":"NGN","name":"Nigerian naira","symbol":"₦"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Nigeria","es":"Nigeria","fr":"Nigéria","ja":"ナイジェリア","it":"Nigeria","br":"Nigéria","pt":"Nigéria","nl":"Nigeria","hr":"Nigerija","fa":"نیجریه"},"flag":"https://restcountries.eu/data/nga.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"NGR"},{"name":"Niue","topLevelDomain":[".nu"],"alpha2Code":"NU","alpha3Code":"NIU","callingCodes":["683"],"capital":"Alofi","altSpellings":["NU"],"region":"Oceania","subregion":"Polynesia","population":1470,"latlng":[-19.03333333,-169.86666666],"demonym":"Niuean","area":260.0,"gini":null,"timezones":["UTC-11:00"],"borders":[],"nativeName":"Niuē","numericCode":"570","currencies":[{"code":"NZD","name":"New Zealand dollar","symbol":"$"},{"code":"(none)","name":"Niue dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Niue","es":"Niue","fr":"Niue","ja":"ニウエ","it":"Niue","br":"Niue","pt":"Niue","nl":"Niue","hr":"Niue","fa":"نیووی"},"flag":"https://restcountries.eu/data/niu.svg","regionalBlocs":[],"cioc":""},{"name":"Norfolk Island","topLevelDomain":[".nf"],"alpha2Code":"NF","alpha3Code":"NFK","callingCodes":["672"],"capital":"Kingston","altSpellings":["NF","Territory of Norfolk Island","Teratri of Norf'k Ailen"],"region":"Oceania","subregion":"Australia and New Zealand","population":2302,"latlng":[-29.03333333,167.95],"demonym":"Norfolk Islander","area":36.0,"gini":null,"timezones":["UTC+11:30"],"borders":[],"nativeName":"Norfolk Island","numericCode":"574","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Norfolkinsel","es":"Isla de Norfolk","fr":"Île de Norfolk","ja":"ノーフォーク島","it":"Isola Norfolk","br":"Ilha Norfolk","pt":"Ilha Norfolk","nl":"Norfolkeiland","hr":"Otok Norfolk","fa":"جزیره نورفک"},"flag":"https://restcountries.eu/data/nfk.svg","regionalBlocs":[],"cioc":""},{"name":"Korea (Democratic People's Republic of)","topLevelDomain":[".kp"],"alpha2Code":"KP","alpha3Code":"PRK","callingCodes":["850"],"capital":"Pyongyang","altSpellings":["KP","Democratic People's Republic of Korea","조선민주주의인민공화국","Chosŏn Minjujuŭi Inmin Konghwaguk"],"region":"Asia","subregion":"Eastern Asia","population":25281000,"latlng":[40.0,127.0],"demonym":"North Korean","area":120538.0,"gini":null,"timezones":["UTC+09:00"],"borders":["CHN","KOR","RUS"],"nativeName":"북한","numericCode":"408","currencies":[{"code":"KPW","name":"North Korean won","symbol":"₩"}],"languages":[{"iso639_1":"ko","iso639_2":"kor","name":"Korean","nativeName":"한국어"}],"translations":{"de":"Nordkorea","es":"Corea del Norte","fr":"Corée du Nord","ja":"朝鮮民主主義人民共和国","it":"Corea del Nord","br":"Coreia do Norte","pt":"Coreia do Norte","nl":"Noord-Korea","hr":"Sjeverna Koreja","fa":"کره جنوبی"},"flag":"https://restcountries.eu/data/prk.svg","regionalBlocs":[],"cioc":"PRK"},{"name":"Northern Mariana Islands","topLevelDomain":[".mp"],"alpha2Code":"MP","alpha3Code":"MNP","callingCodes":["1670"],"capital":"Saipan","altSpellings":["MP","Commonwealth of the Northern Mariana Islands","Sankattan Siha Na Islas Mariånas"],"region":"Oceania","subregion":"Micronesia","population":56940,"latlng":[15.2,145.75],"demonym":"American","area":464.0,"gini":null,"timezones":["UTC+10:00"],"borders":[],"nativeName":"Northern Mariana Islands","numericCode":"580","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ch","iso639_2":"cha","name":"Chamorro","nativeName":"Chamoru"}],"translations":{"de":"Nördliche Marianen","es":"Islas Marianas del Norte","fr":"Îles Mariannes du Nord","ja":"北マリアナ諸島","it":"Isole Marianne Settentrionali","br":"Ilhas Marianas","pt":"Ilhas Marianas","nl":"Noordelijke Marianeneilanden","hr":"Sjevernomarijanski otoci","fa":"جزایر ماریانای شمالی"},"flag":"https://restcountries.eu/data/mnp.svg","regionalBlocs":[],"cioc":""},{"name":"Norway","topLevelDomain":[".no"],"alpha2Code":"NO","alpha3Code":"NOR","callingCodes":["47"],"capital":"Oslo","altSpellings":["NO","Norge","Noreg","Kingdom of Norway","Kongeriket Norge","Kongeriket Noreg"],"region":"Europe","subregion":"Northern Europe","population":5223256,"latlng":[62.0,10.0],"demonym":"Norwegian","area":323802.0,"gini":25.8,"timezones":["UTC+01:00"],"borders":["FIN","SWE","RUS"],"nativeName":"Norge","numericCode":"578","currencies":[{"code":"NOK","name":"Norwegian krone","symbol":"kr"}],"languages":[{"iso639_1":"no","iso639_2":"nor","name":"Norwegian","nativeName":"Norsk"},{"iso639_1":"nb","iso639_2":"nob","name":"Norwegian Bokmål","nativeName":"Norsk bokmål"},{"iso639_1":"nn","iso639_2":"nno","name":"Norwegian Nynorsk","nativeName":"Norsk nynorsk"}],"translations":{"de":"Norwegen","es":"Noruega","fr":"Norvège","ja":"ノルウェー","it":"Norvegia","br":"Noruega","pt":"Noruega","nl":"Noorwegen","hr":"Norveška","fa":"نروژ"},"flag":"https://restcountries.eu/data/nor.svg","regionalBlocs":[{"acronym":"EFTA","name":"European Free Trade Association","otherAcronyms":[],"otherNames":[]}],"cioc":"NOR"},{"name":"Oman","topLevelDomain":[".om"],"alpha2Code":"OM","alpha3Code":"OMN","callingCodes":["968"],"capital":"Muscat","altSpellings":["OM","Sultanate of Oman","Salṭanat ʻUmān"],"region":"Asia","subregion":"Western Asia","population":4420133,"latlng":[21.0,57.0],"demonym":"Omani","area":309500.0,"gini":null,"timezones":["UTC+04:00"],"borders":["SAU","ARE","YEM"],"nativeName":"عمان","numericCode":"512","currencies":[{"code":"OMR","name":"Omani rial","symbol":"ر.ع."}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Oman","es":"Omán","fr":"Oman","ja":"オマーン","it":"oman","br":"Omã","pt":"Omã","nl":"Oman","hr":"Oman","fa":"عمان"},"flag":"https://restcountries.eu/data/omn.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"OMA"},{"name":"Pakistan","topLevelDomain":[".pk"],"alpha2Code":"PK","alpha3Code":"PAK","callingCodes":["92"],"capital":"Islamabad","altSpellings":["PK","Pākistān","Islamic Republic of Pakistan","Islāmī Jumhūriya'eh Pākistān"],"region":"Asia","subregion":"Southern Asia","population":194125062,"latlng":[30.0,70.0],"demonym":"Pakistani","area":881912.0,"gini":30.0,"timezones":["UTC+05:00"],"borders":["AFG","CHN","IND","IRN"],"nativeName":"Pakistan","numericCode":"586","currencies":[{"code":"PKR","name":"Pakistani rupee","symbol":"₨"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ur","iso639_2":"urd","name":"Urdu","nativeName":"اردو"}],"translations":{"de":"Pakistan","es":"Pakistán","fr":"Pakistan","ja":"パキスタン","it":"Pakistan","br":"Paquistão","pt":"Paquistão","nl":"Pakistan","hr":"Pakistan","fa":"پاکستان"},"flag":"https://restcountries.eu/data/pak.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"PAK"},{"name":"Palau","topLevelDomain":[".pw"],"alpha2Code":"PW","alpha3Code":"PLW","callingCodes":["680"],"capital":"Ngerulmud","altSpellings":["PW","Republic of Palau","Beluu er a Belau"],"region":"Oceania","subregion":"Micronesia","population":17950,"latlng":[7.5,134.5],"demonym":"Palauan","area":459.0,"gini":null,"timezones":["UTC+09:00"],"borders":[],"nativeName":"Palau","numericCode":"585","currencies":[{"code":"(none)","name":"[E]","symbol":"$"},{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Palau","es":"Palau","fr":"Palaos","ja":"パラオ","it":"Palau","br":"Palau","pt":"Palau","nl":"Palau","hr":"Palau","fa":"پالائو"},"flag":"https://restcountries.eu/data/plw.svg","regionalBlocs":[],"cioc":"PLW"},{"name":"Palestine, State of","topLevelDomain":[".ps"],"alpha2Code":"PS","alpha3Code":"PSE","callingCodes":["970"],"capital":"Ramallah","altSpellings":["PS","State of Palestine","Dawlat Filasṭin"],"region":"Asia","subregion":"Western Asia","population":4682467,"latlng":[31.9,35.2],"demonym":"Palestinian","area":null,"gini":35.5,"timezones":["UTC+02:00"],"borders":["ISR","EGY","JOR"],"nativeName":"فلسطين","numericCode":"275","currencies":[{"code":"ILS","name":"Israeli new sheqel","symbol":"₪"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Palästina","es":"Palestina","fr":"Palestine","ja":"パレスチナ","it":"Palestina","br":"Palestina","pt":"Palestina","nl":"Palestijnse gebieden","hr":"Palestina","fa":"فلسطین"},"flag":"https://restcountries.eu/data/pse.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"PLE"},{"name":"Panama","topLevelDomain":[".pa"],"alpha2Code":"PA","alpha3Code":"PAN","callingCodes":["507"],"capital":"Panama City","altSpellings":["PA","Republic of Panama","República de Panamá"],"region":"Americas","subregion":"Central America","population":3814672,"latlng":[9.0,-80.0],"demonym":"Panamanian","area":75417.0,"gini":51.9,"timezones":["UTC-05:00"],"borders":["COL","CRI"],"nativeName":"Panamá","numericCode":"591","currencies":[{"code":"PAB","name":"Panamanian balboa","symbol":"B/."},{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Panama","es":"Panamá","fr":"Panama","ja":"パナマ","it":"Panama","br":"Panamá","pt":"Panamá","nl":"Panama","hr":"Panama","fa":"پاناما"},"flag":"https://restcountries.eu/data/pan.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"PAN"},{"name":"Papua New Guinea","topLevelDomain":[".pg"],"alpha2Code":"PG","alpha3Code":"PNG","callingCodes":["675"],"capital":"Port Moresby","altSpellings":["PG","Independent State of Papua New Guinea","Independen Stet bilong Papua Niugini"],"region":"Oceania","subregion":"Melanesia","population":8083700,"latlng":[-6.0,147.0],"demonym":"Papua New Guinean","area":462840.0,"gini":50.9,"timezones":["UTC+10:00"],"borders":["IDN"],"nativeName":"Papua Niugini","numericCode":"598","currencies":[{"code":"PGK","name":"Papua New Guinean kina","symbol":"K"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Papua-Neuguinea","es":"Papúa Nueva Guinea","fr":"Papouasie-Nouvelle-Guinée","ja":"パプアニューギニア","it":"Papua Nuova Guinea","br":"Papua Nova Guiné","pt":"Papua Nova Guiné","nl":"Papoea-Nieuw-Guinea","hr":"Papua Nova Gvineja","fa":"پاپوآ گینه نو"},"flag":"https://restcountries.eu/data/png.svg","regionalBlocs":[],"cioc":"PNG"},{"name":"Paraguay","topLevelDomain":[".py"],"alpha2Code":"PY","alpha3Code":"PRY","callingCodes":["595"],"capital":"Asunción","altSpellings":["PY","Republic of Paraguay","República del Paraguay","Tetã Paraguái"],"region":"Americas","subregion":"South America","population":6854536,"latlng":[-23.0,-58.0],"demonym":"Paraguayan","area":406752.0,"gini":52.4,"timezones":["UTC-04:00"],"borders":["ARG","BOL","BRA"],"nativeName":"Paraguay","numericCode":"600","currencies":[{"code":"PYG","name":"Paraguayan guaraní","symbol":"₲"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"},{"iso639_1":"gn","iso639_2":"grn","name":"Guaraní","nativeName":"Avañe'ẽ"}],"translations":{"de":"Paraguay","es":"Paraguay","fr":"Paraguay","ja":"パラグアイ","it":"Paraguay","br":"Paraguai","pt":"Paraguai","nl":"Paraguay","hr":"Paragvaj","fa":"پاراگوئه"},"flag":"https://restcountries.eu/data/pry.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"PAR"},{"name":"Peru","topLevelDomain":[".pe"],"alpha2Code":"PE","alpha3Code":"PER","callingCodes":["51"],"capital":"Lima","altSpellings":["PE","Republic of Peru"," República del Perú"],"region":"Americas","subregion":"South America","population":31488700,"latlng":[-10.0,-76.0],"demonym":"Peruvian","area":1285216.0,"gini":48.1,"timezones":["UTC-05:00"],"borders":["BOL","BRA","CHL","COL","ECU"],"nativeName":"Perú","numericCode":"604","currencies":[{"code":"PEN","name":"Peruvian sol","symbol":"S/."}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Peru","es":"Perú","fr":"Pérou","ja":"ペルー","it":"Perù","br":"Peru","pt":"Peru","nl":"Peru","hr":"Peru","fa":"پرو"},"flag":"https://restcountries.eu/data/per.svg","regionalBlocs":[{"acronym":"PA","name":"Pacific Alliance","otherAcronyms":[],"otherNames":["Alianza del Pacífico"]},{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"PER"},{"name":"Philippines","topLevelDomain":[".ph"],"alpha2Code":"PH","alpha3Code":"PHL","callingCodes":["63"],"capital":"Manila","altSpellings":["PH","Republic of the Philippines","Repúblika ng Pilipinas"],"region":"Asia","subregion":"South-Eastern Asia","population":103279800,"latlng":[13.0,122.0],"demonym":"Filipino","area":342353.0,"gini":43.0,"timezones":["UTC+08:00"],"borders":[],"nativeName":"Pilipinas","numericCode":"608","currencies":[{"code":"PHP","name":"Philippine peso","symbol":"₱"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Philippinen","es":"Filipinas","fr":"Philippines","ja":"フィリピン","it":"Filippine","br":"Filipinas","pt":"Filipinas","nl":"Filipijnen","hr":"Filipini","fa":"جزایر الندفیلیپین"},"flag":"https://restcountries.eu/data/phl.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"PHI"},{"name":"Pitcairn","topLevelDomain":[".pn"],"alpha2Code":"PN","alpha3Code":"PCN","callingCodes":["64"],"capital":"Adamstown","altSpellings":["PN","Pitcairn Henderson Ducie and Oeno Islands"],"region":"Oceania","subregion":"Polynesia","population":56,"latlng":[-25.06666666,-130.1],"demonym":"Pitcairn Islander","area":47.0,"gini":null,"timezones":["UTC-08:00"],"borders":[],"nativeName":"Pitcairn Islands","numericCode":"612","currencies":[{"code":"NZD","name":"New Zealand dollar","symbol":"$"},{"code":null,"name":"Pitcairn Islands dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Pitcairn","es":"Islas Pitcairn","fr":"Îles Pitcairn","ja":"ピトケアン","it":"Isole Pitcairn","br":"Ilhas Pitcairn","pt":"Ilhas Picárnia","nl":"Pitcairneilanden","hr":"Pitcairnovo otočje","fa":"پیتکرن"},"flag":"https://restcountries.eu/data/pcn.svg","regionalBlocs":[],"cioc":""},{"name":"Poland","topLevelDomain":[".pl"],"alpha2Code":"PL","alpha3Code":"POL","callingCodes":["48"],"capital":"Warsaw","altSpellings":["PL","Republic of Poland","Rzeczpospolita Polska"],"region":"Europe","subregion":"Eastern Europe","population":38437239,"latlng":[52.0,20.0],"demonym":"Polish","area":312679.0,"gini":34.1,"timezones":["UTC+01:00"],"borders":["BLR","CZE","DEU","LTU","RUS","SVK","UKR"],"nativeName":"Polska","numericCode":"616","currencies":[{"code":"PLN","name":"Polish złoty","symbol":"zł"}],"languages":[{"iso639_1":"pl","iso639_2":"pol","name":"Polish","nativeName":"język polski"}],"translations":{"de":"Polen","es":"Polonia","fr":"Pologne","ja":"ポーランド","it":"Polonia","br":"Polônia","pt":"Polónia","nl":"Polen","hr":"Poljska","fa":"لهستان"},"flag":"https://restcountries.eu/data/pol.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"POL"},{"name":"Portugal","topLevelDomain":[".pt"],"alpha2Code":"PT","alpha3Code":"PRT","callingCodes":["351"],"capital":"Lisbon","altSpellings":["PT","Portuguesa","Portuguese Republic","República Portuguesa"],"region":"Europe","subregion":"Southern Europe","population":10374822,"latlng":[39.5,-8.0],"demonym":"Portuguese","area":92090.0,"gini":38.5,"timezones":["UTC-01:00","UTC"],"borders":["ESP"],"nativeName":"Portugal","numericCode":"620","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Portugal","es":"Portugal","fr":"Portugal","ja":"ポルトガル","it":"Portogallo","br":"Portugal","pt":"Portugal","nl":"Portugal","hr":"Portugal","fa":"پرتغال"},"flag":"https://restcountries.eu/data/prt.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"POR"},{"name":"Puerto Rico","topLevelDomain":[".pr"],"alpha2Code":"PR","alpha3Code":"PRI","callingCodes":["1787","1939"],"capital":"San Juan","altSpellings":["PR","Commonwealth of Puerto Rico","Estado Libre Asociado de Puerto Rico"],"region":"Americas","subregion":"Caribbean","population":3474182,"latlng":[18.25,-66.5],"demonym":"Puerto Rican","area":8870.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Puerto Rico","numericCode":"630","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Puerto Rico","es":"Puerto Rico","fr":"Porto Rico","ja":"プエルトリコ","it":"Porto Rico","br":"Porto Rico","pt":"Porto Rico","nl":"Puerto Rico","hr":"Portoriko","fa":"پورتو ریکو"},"flag":"https://restcountries.eu/data/pri.svg","regionalBlocs":[],"cioc":"PUR"},{"name":"Qatar","topLevelDomain":[".qa"],"alpha2Code":"QA","alpha3Code":"QAT","callingCodes":["974"],"capital":"Doha","altSpellings":["QA","State of Qatar","Dawlat Qaṭar"],"region":"Asia","subregion":"Western Asia","population":2587564,"latlng":[25.5,51.25],"demonym":"Qatari","area":11586.0,"gini":41.1,"timezones":["UTC+03:00"],"borders":["SAU"],"nativeName":"قطر","numericCode":"634","currencies":[{"code":"QAR","name":"Qatari riyal","symbol":"ر.ق"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Katar","es":"Catar","fr":"Qatar","ja":"カタール","it":"Qatar","br":"Catar","pt":"Catar","nl":"Qatar","hr":"Katar","fa":"قطر"},"flag":"https://restcountries.eu/data/qat.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"QAT"},{"name":"Republic of Kosovo","topLevelDomain":[""],"alpha2Code":"XK","alpha3Code":"KOS","callingCodes":["383"],"capital":"Pristina","altSpellings":["XK","Република Косово"],"region":"Europe","subregion":"Eastern Europe","population":1733842,"latlng":[42.666667,21.166667],"demonym":"Kosovar","area":10908.0,"gini":null,"timezones":["UTC+01:00"],"borders":["ALB","MKD","MNE","SRB"],"nativeName":"Republika e Kosovës","numericCode":null,"currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"sq","iso639_2":"sqi","name":"Albanian","nativeName":"Shqip"},{"iso639_1":"sr","iso639_2":"srp","name":"Serbian","nativeName":"српски језик"}],"translations":{"de":null,"es":"Kosovo","fr":null,"ja":null,"it":null,"br":"Kosovo","pt":"Kosovo","nl":null,"hr":"Kosovo","fa":"کوزوو"},"flag":"https://restcountries.eu/data/kos.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":null},{"name":"Réunion","topLevelDomain":[".re"],"alpha2Code":"RE","alpha3Code":"REU","callingCodes":["262"],"capital":"Saint-Denis","altSpellings":["RE","Reunion"],"region":"Africa","subregion":"Eastern Africa","population":840974,"latlng":[-21.15,55.5],"demonym":"French","area":null,"gini":null,"timezones":["UTC+04:00"],"borders":[],"nativeName":"La Réunion","numericCode":"638","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Réunion","es":"Reunión","fr":"Réunion","ja":"レユニオン","it":"Riunione","br":"Reunião","pt":"Reunião","nl":"Réunion","hr":"Réunion","fa":"رئونیون"},"flag":"https://restcountries.eu/data/reu.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"Romania","topLevelDomain":[".ro"],"alpha2Code":"RO","alpha3Code":"ROU","callingCodes":["40"],"capital":"Bucharest","altSpellings":["RO","Rumania","Roumania","România"],"region":"Europe","subregion":"Eastern Europe","population":19861408,"latlng":[46.0,25.0],"demonym":"Romanian","area":238391.0,"gini":30.0,"timezones":["UTC+02:00"],"borders":["BGR","HUN","MDA","SRB","UKR"],"nativeName":"România","numericCode":"642","currencies":[{"code":"RON","name":"Romanian leu","symbol":"lei"}],"languages":[{"iso639_1":"ro","iso639_2":"ron","name":"Romanian","nativeName":"Română"}],"translations":{"de":"Rumänien","es":"Rumania","fr":"Roumanie","ja":"ルーマニア","it":"Romania","br":"Romênia","pt":"Roménia","nl":"Roemenië","hr":"Rumunjska","fa":"رومانی"},"flag":"https://restcountries.eu/data/rou.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"ROU"},{"name":"Russian Federation","topLevelDomain":[".ru"],"alpha2Code":"RU","alpha3Code":"RUS","callingCodes":["7"],"capital":"Moscow","altSpellings":["RU","Rossiya","Russian Federation","Российская Федерация","Rossiyskaya Federatsiya"],"region":"Europe","subregion":"Eastern Europe","population":146599183,"latlng":[60.0,100.0],"demonym":"Russian","area":1.7124442E7,"gini":40.1,"timezones":["UTC+03:00","UTC+04:00","UTC+06:00","UTC+07:00","UTC+08:00","UTC+09:00","UTC+10:00","UTC+11:00","UTC+12:00"],"borders":["AZE","BLR","CHN","EST","FIN","GEO","KAZ","PRK","LVA","LTU","MNG","NOR","POL","UKR"],"nativeName":"Россия","numericCode":"643","currencies":[{"code":"RUB","name":"Russian ruble","symbol":"₽"}],"languages":[{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Russland","es":"Rusia","fr":"Russie","ja":"ロシア連邦","it":"Russia","br":"Rússia","pt":"Rússia","nl":"Rusland","hr":"Rusija","fa":"روسیه"},"flag":"https://restcountries.eu/data/rus.svg","regionalBlocs":[{"acronym":"EEU","name":"Eurasian Economic Union","otherAcronyms":["EAEU"],"otherNames":[]}],"cioc":"RUS"},{"name":"Rwanda","topLevelDomain":[".rw"],"alpha2Code":"RW","alpha3Code":"RWA","callingCodes":["250"],"capital":"Kigali","altSpellings":["RW","Republic of Rwanda","Repubulika y'u Rwanda","République du Rwanda"],"region":"Africa","subregion":"Eastern Africa","population":11553188,"latlng":[-2.0,30.0],"demonym":"Rwandan","area":26338.0,"gini":50.8,"timezones":["UTC+02:00"],"borders":["BDI","COD","TZA","UGA"],"nativeName":"Rwanda","numericCode":"646","currencies":[{"code":"RWF","name":"Rwandan franc","symbol":"Fr"}],"languages":[{"iso639_1":"rw","iso639_2":"kin","name":"Kinyarwanda","nativeName":"Ikinyarwanda"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Ruanda","es":"Ruanda","fr":"Rwanda","ja":"ルワンダ","it":"Ruanda","br":"Ruanda","pt":"Ruanda","nl":"Rwanda","hr":"Ruanda","fa":"رواندا"},"flag":"https://restcountries.eu/data/rwa.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"RWA"},{"name":"Saint Barthélemy","topLevelDomain":[".bl"],"alpha2Code":"BL","alpha3Code":"BLM","callingCodes":["590"],"capital":"Gustavia","altSpellings":["BL","St. Barthelemy","Collectivity of Saint Barthélemy","Collectivité de Saint-Barthélemy"],"region":"Americas","subregion":"Caribbean","population":9417,"latlng":[18.5,-63.41666666],"demonym":"Saint Barthélemy Islander","area":21.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Saint-Barthélemy","numericCode":"652","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Saint-Barthélemy","es":"San Bartolomé","fr":"Saint-Barthélemy","ja":"サン・バルテルミー","it":"Antille Francesi","br":"São Bartolomeu","pt":"São Bartolomeu","nl":"Saint Barthélemy","hr":"Saint Barthélemy","fa":"سن-بارتلمی"},"flag":"https://restcountries.eu/data/blm.svg","regionalBlocs":[],"cioc":""},{"name":"Saint Helena, Ascension and Tristan da Cunha","topLevelDomain":[".sh"],"alpha2Code":"SH","alpha3Code":"SHN","callingCodes":["290"],"capital":"Jamestown","altSpellings":["SH"],"region":"Africa","subregion":"Western Africa","population":4255,"latlng":[-15.95,-5.7],"demonym":"Saint Helenian","area":null,"gini":null,"timezones":["UTC+00:00"],"borders":[],"nativeName":"Saint Helena","numericCode":"654","currencies":[{"code":"SHP","name":"Saint Helena pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Sankt Helena","es":"Santa Helena","fr":"Sainte-Hélène","ja":"セントヘレナ・アセンションおよびトリスタンダクーニャ","it":"Sant'Elena","br":"Santa Helena","pt":"Santa Helena","nl":"Sint-Helena","hr":"Sveta Helena","fa":"سنت هلنا، اسنشن و تریستان دا کونا"},"flag":"https://restcountries.eu/data/shn.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":null},{"name":"Saint Kitts and Nevis","topLevelDomain":[".kn"],"alpha2Code":"KN","alpha3Code":"KNA","callingCodes":["1869"],"capital":"Basseterre","altSpellings":["KN","Federation of Saint Christopher and Nevis"],"region":"Americas","subregion":"Caribbean","population":46204,"latlng":[17.33333333,-62.75],"demonym":"Kittian and Nevisian","area":261.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Saint Kitts and Nevis","numericCode":"659","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"St. Kitts und Nevis","es":"San Cristóbal y Nieves","fr":"Saint-Christophe-et-Niévès","ja":"セントクリストファー・ネイビス","it":"Saint Kitts e Nevis","br":"São Cristóvão e Neves","pt":"São Cristóvão e Neves","nl":"Saint Kitts en Nevis","hr":"Sveti Kristof i Nevis","fa":"سنت کیتس و نویس"},"flag":"https://restcountries.eu/data/kna.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"SKN"},{"name":"Saint Lucia","topLevelDomain":[".lc"],"alpha2Code":"LC","alpha3Code":"LCA","callingCodes":["1758"],"capital":"Castries","altSpellings":["LC"],"region":"Americas","subregion":"Caribbean","population":186000,"latlng":[13.88333333,-60.96666666],"demonym":"Saint Lucian","area":616.0,"gini":42.6,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Saint Lucia","numericCode":"662","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Saint Lucia","es":"Santa Lucía","fr":"Saint-Lucie","ja":"セントルシア","it":"Santa Lucia","br":"Santa Lúcia","pt":"Santa Lúcia","nl":"Saint Lucia","hr":"Sveta Lucija","fa":"سنت لوسیا"},"flag":"https://restcountries.eu/data/lca.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"LCA"},{"name":"Saint Martin (French part)","topLevelDomain":[".mf",".fr",".gp"],"alpha2Code":"MF","alpha3Code":"MAF","callingCodes":["590"],"capital":"Marigot","altSpellings":["MF","Collectivity of Saint Martin","Collectivité de Saint-Martin"],"region":"Americas","subregion":"Caribbean","population":36979,"latlng":[18.08333333,-63.95],"demonym":"Saint Martin Islander","area":53.0,"gini":null,"timezones":["UTC-04:00"],"borders":["SXM","NLD"],"nativeName":"Saint-Martin","numericCode":"663","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"}],"translations":{"de":"Saint Martin","es":"Saint Martin","fr":"Saint-Martin","ja":"サン・マルタン(フランス領)","it":"Saint Martin","br":"Saint Martin","pt":"Ilha São Martinho","nl":"Saint-Martin","hr":"Sveti Martin","fa":"سینت مارتن"},"flag":"https://restcountries.eu/data/maf.svg","regionalBlocs":[],"cioc":""},{"name":"Saint Pierre and Miquelon","topLevelDomain":[".pm"],"alpha2Code":"PM","alpha3Code":"SPM","callingCodes":["508"],"capital":"Saint-Pierre","altSpellings":["PM","Collectivité territoriale de Saint-Pierre-et-Miquelon"],"region":"Americas","subregion":"Northern America","population":6069,"latlng":[46.83333333,-56.33333333],"demonym":"French","area":242.0,"gini":null,"timezones":["UTC-03:00"],"borders":[],"nativeName":"Saint-Pierre-et-Miquelon","numericCode":"666","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Saint-Pierre und Miquelon","es":"San Pedro y Miquelón","fr":"Saint-Pierre-et-Miquelon","ja":"サンピエール島・ミクロン島","it":"Saint-Pierre e Miquelon","br":"Saint-Pierre e Miquelon","pt":"São Pedro e Miquelon","nl":"Saint Pierre en Miquelon","hr":"Sveti Petar i Mikelon","fa":"سن پیر و میکلن"},"flag":"https://restcountries.eu/data/spm.svg","regionalBlocs":[],"cioc":""},{"name":"Saint Vincent and the Grenadines","topLevelDomain":[".vc"],"alpha2Code":"VC","alpha3Code":"VCT","callingCodes":["1784"],"capital":"Kingstown","altSpellings":["VC"],"region":"Americas","subregion":"Caribbean","population":109991,"latlng":[13.25,-61.2],"demonym":"Saint Vincentian","area":389.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Saint Vincent and the Grenadines","numericCode":"670","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Saint Vincent und die Grenadinen","es":"San Vicente y Granadinas","fr":"Saint-Vincent-et-les-Grenadines","ja":"セントビンセントおよびグレナディーン諸島","it":"Saint Vincent e Grenadine","br":"São Vicente e Granadinas","pt":"São Vicente e Granadinas","nl":"Saint Vincent en de Grenadines","hr":"Sveti Vincent i Grenadini","fa":"سنت وینسنت و گرنادین‌ها"},"flag":"https://restcountries.eu/data/vct.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"VIN"},{"name":"Samoa","topLevelDomain":[".ws"],"alpha2Code":"WS","alpha3Code":"WSM","callingCodes":["685"],"capital":"Apia","altSpellings":["WS","Independent State of Samoa","Malo Saʻoloto Tutoʻatasi o Sāmoa"],"region":"Oceania","subregion":"Polynesia","population":194899,"latlng":[-13.58333333,-172.33333333],"demonym":"Samoan","area":2842.0,"gini":null,"timezones":["UTC+13:00"],"borders":[],"nativeName":"Samoa","numericCode":"882","currencies":[{"code":"WST","name":"Samoan tālā","symbol":"T"}],"languages":[{"iso639_1":"sm","iso639_2":"smo","name":"Samoan","nativeName":"gagana fa'a Samoa"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Samoa","es":"Samoa","fr":"Samoa","ja":"サモア","it":"Samoa","br":"Samoa","pt":"Samoa","nl":"Samoa","hr":"Samoa","fa":"ساموآ"},"flag":"https://restcountries.eu/data/wsm.svg","regionalBlocs":[],"cioc":"SAM"},{"name":"San Marino","topLevelDomain":[".sm"],"alpha2Code":"SM","alpha3Code":"SMR","callingCodes":["378"],"capital":"City of San Marino","altSpellings":["SM","Republic of San Marino","Repubblica di San Marino"],"region":"Europe","subregion":"Southern Europe","population":33005,"latlng":[43.76666666,12.41666666],"demonym":"Sammarinese","area":61.0,"gini":null,"timezones":["UTC+01:00"],"borders":["ITA"],"nativeName":"San Marino","numericCode":"674","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"it","iso639_2":"ita","name":"Italian","nativeName":"Italiano"}],"translations":{"de":"San Marino","es":"San Marino","fr":"Saint-Marin","ja":"サンマリノ","it":"San Marino","br":"San Marino","pt":"São Marinho","nl":"San Marino","hr":"San Marino","fa":"سان مارینو"},"flag":"https://restcountries.eu/data/smr.svg","regionalBlocs":[],"cioc":"SMR"},{"name":"Sao Tome and Principe","topLevelDomain":[".st"],"alpha2Code":"ST","alpha3Code":"STP","callingCodes":["239"],"capital":"São Tomé","altSpellings":["ST","Democratic Republic of São Tomé and Príncipe","República Democrática de São Tomé e Príncipe"],"region":"Africa","subregion":"Middle Africa","population":187356,"latlng":[1.0,7.0],"demonym":"Sao Tomean","area":964.0,"gini":50.8,"timezones":["UTC"],"borders":[],"nativeName":"São Tomé e Príncipe","numericCode":"678","currencies":[{"code":"STD","name":"São Tomé and Príncipe dobra","symbol":"Db"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"São Tomé und Príncipe","es":"Santo Tomé y Príncipe","fr":"Sao Tomé-et-Principe","ja":"サントメ・プリンシペ","it":"São Tomé e Príncipe","br":"São Tomé e Príncipe","pt":"São Tomé e Príncipe","nl":"Sao Tomé en Principe","hr":"Sveti Toma i Princip","fa":"کواترو دو فرویرو"},"flag":"https://restcountries.eu/data/stp.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"STP"},{"name":"Saudi Arabia","topLevelDomain":[".sa"],"alpha2Code":"SA","alpha3Code":"SAU","callingCodes":["966"],"capital":"Riyadh","altSpellings":["SA","Kingdom of Saudi Arabia","Al-Mamlakah al-‘Arabiyyah as-Su‘ūdiyyah"],"region":"Asia","subregion":"Western Asia","population":32248200,"latlng":[25.0,45.0],"demonym":"Saudi Arabian","area":2149690.0,"gini":null,"timezones":["UTC+03:00"],"borders":["IRQ","JOR","KWT","OMN","QAT","ARE","YEM"],"nativeName":"العربية السعودية","numericCode":"682","currencies":[{"code":"SAR","name":"Saudi riyal","symbol":"ر.س"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Saudi-Arabien","es":"Arabia Saudí","fr":"Arabie Saoudite","ja":"サウジアラビア","it":"Arabia Saudita","br":"Arábia Saudita","pt":"Arábia Saudita","nl":"Saoedi-Arabië","hr":"Saudijska Arabija","fa":"عربستان سعودی"},"flag":"https://restcountries.eu/data/sau.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"KSA"},{"name":"Senegal","topLevelDomain":[".sn"],"alpha2Code":"SN","alpha3Code":"SEN","callingCodes":["221"],"capital":"Dakar","altSpellings":["SN","Republic of Senegal","République du Sénégal"],"region":"Africa","subregion":"Western Africa","population":14799859,"latlng":[14.0,-14.0],"demonym":"Senegalese","area":196722.0,"gini":39.2,"timezones":["UTC"],"borders":["GMB","GIN","GNB","MLI","MRT"],"nativeName":"Sénégal","numericCode":"686","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Senegal","es":"Senegal","fr":"Sénégal","ja":"セネガル","it":"Senegal","br":"Senegal","pt":"Senegal","nl":"Senegal","hr":"Senegal","fa":"سنگال"},"flag":"https://restcountries.eu/data/sen.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"SEN"},{"name":"Serbia","topLevelDomain":[".rs"],"alpha2Code":"RS","alpha3Code":"SRB","callingCodes":["381"],"capital":"Belgrade","altSpellings":["RS","Srbija","Republic of Serbia","Република Србија","Republika Srbija"],"region":"Europe","subregion":"Southern Europe","population":7076372,"latlng":[44.0,21.0],"demonym":"Serbian","area":88361.0,"gini":27.8,"timezones":["UTC+01:00"],"borders":["BIH","BGR","HRV","HUN","KOS","MKD","MNE","ROU"],"nativeName":"Србија","numericCode":"688","currencies":[{"code":"RSD","name":"Serbian dinar","symbol":"дин."}],"languages":[{"iso639_1":"sr","iso639_2":"srp","name":"Serbian","nativeName":"српски језик"}],"translations":{"de":"Serbien","es":"Serbia","fr":"Serbie","ja":"セルビア","it":"Serbia","br":"Sérvia","pt":"Sérvia","nl":"Servië","hr":"Srbija","fa":"صربستان"},"flag":"https://restcountries.eu/data/srb.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"SRB"},{"name":"Seychelles","topLevelDomain":[".sc"],"alpha2Code":"SC","alpha3Code":"SYC","callingCodes":["248"],"capital":"Victoria","altSpellings":["SC","Republic of Seychelles","Repiblik Sesel","République des Seychelles"],"region":"Africa","subregion":"Eastern Africa","population":91400,"latlng":[-4.58333333,55.66666666],"demonym":"Seychellois","area":452.0,"gini":65.8,"timezones":["UTC+04:00"],"borders":[],"nativeName":"Seychelles","numericCode":"690","currencies":[{"code":"SCR","name":"Seychellois rupee","symbol":"₨"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Seychellen","es":"Seychelles","fr":"Seychelles","ja":"セーシェル","it":"Seychelles","br":"Seicheles","pt":"Seicheles","nl":"Seychellen","hr":"Sejšeli","fa":"سیشل"},"flag":"https://restcountries.eu/data/syc.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"SEY"},{"name":"Sierra Leone","topLevelDomain":[".sl"],"alpha2Code":"SL","alpha3Code":"SLE","callingCodes":["232"],"capital":"Freetown","altSpellings":["SL","Republic of Sierra Leone"],"region":"Africa","subregion":"Western Africa","population":7075641,"latlng":[8.5,-11.5],"demonym":"Sierra Leonean","area":71740.0,"gini":42.5,"timezones":["UTC"],"borders":["GIN","LBR"],"nativeName":"Sierra Leone","numericCode":"694","currencies":[{"code":"SLL","name":"Sierra Leonean leone","symbol":"Le"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Sierra Leone","es":"Sierra Leone","fr":"Sierra Leone","ja":"シエラレオネ","it":"Sierra Leone","br":"Serra Leoa","pt":"Serra Leoa","nl":"Sierra Leone","hr":"Sijera Leone","fa":"سیرالئون"},"flag":"https://restcountries.eu/data/sle.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"SLE"},{"name":"Singapore","topLevelDomain":[".sg"],"alpha2Code":"SG","alpha3Code":"SGP","callingCodes":["65"],"capital":"Singapore","altSpellings":["SG","Singapura","Republik Singapura","新加坡共和国"],"region":"Asia","subregion":"South-Eastern Asia","population":5535000,"latlng":[1.36666666,103.8],"demonym":"Singaporean","area":710.0,"gini":48.1,"timezones":["UTC+08:00"],"borders":[],"nativeName":"Singapore","numericCode":"702","currencies":[{"code":"BND","name":"Brunei dollar","symbol":"$"},{"code":"SGD","name":"Singapore dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ms","iso639_2":"msa","name":"Malay","nativeName":"bahasa Melayu"},{"iso639_1":"ta","iso639_2":"tam","name":"Tamil","nativeName":"தமிழ்"},{"iso639_1":"zh","iso639_2":"zho","name":"Chinese","nativeName":"中文 (Zhōngwén)"}],"translations":{"de":"Singapur","es":"Singapur","fr":"Singapour","ja":"シンガポール","it":"Singapore","br":"Singapura","pt":"Singapura","nl":"Singapore","hr":"Singapur","fa":"سنگاپور"},"flag":"https://restcountries.eu/data/sgp.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"SIN"},{"name":"Sint Maarten (Dutch part)","topLevelDomain":[".sx"],"alpha2Code":"SX","alpha3Code":"SXM","callingCodes":["1721"],"capital":"Philipsburg","altSpellings":["SX"],"region":"Americas","subregion":"Caribbean","population":38247,"latlng":[18.033333,-63.05],"demonym":"Dutch","area":34.0,"gini":null,"timezones":["UTC-04:00"],"borders":["MAF"],"nativeName":"Sint Maarten","numericCode":"534","currencies":[{"code":"ANG","name":"Netherlands Antillean guilder","symbol":"ƒ"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Sint Maarten (niederl. Teil)","es":null,"fr":"Saint Martin (partie néerlandaise)","ja":null,"it":"Saint Martin (parte olandese)","br":"Sint Maarten","pt":"São Martinho","nl":"Sint Maarten","hr":null,"fa":"سینت مارتن"},"flag":"https://restcountries.eu/data/sxm.svg","regionalBlocs":[],"cioc":""},{"name":"Slovakia","topLevelDomain":[".sk"],"alpha2Code":"SK","alpha3Code":"SVK","callingCodes":["421"],"capital":"Bratislava","altSpellings":["SK","Slovak Republic","Slovenská republika"],"region":"Europe","subregion":"Eastern Europe","population":5426252,"latlng":[48.66666666,19.5],"demonym":"Slovak","area":49037.0,"gini":26.0,"timezones":["UTC+01:00"],"borders":["AUT","CZE","HUN","POL","UKR"],"nativeName":"Slovensko","numericCode":"703","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"sk","iso639_2":"slk","name":"Slovak","nativeName":"slovenčina"}],"translations":{"de":"Slowakei","es":"República Eslovaca","fr":"Slovaquie","ja":"スロバキア","it":"Slovacchia","br":"Eslováquia","pt":"Eslováquia","nl":"Slowakije","hr":"Slovačka","fa":"اسلواکی"},"flag":"https://restcountries.eu/data/svk.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"SVK"},{"name":"Slovenia","topLevelDomain":[".si"],"alpha2Code":"SI","alpha3Code":"SVN","callingCodes":["386"],"capital":"Ljubljana","altSpellings":["SI","Republic of Slovenia","Republika Slovenija"],"region":"Europe","subregion":"Southern Europe","population":2064188,"latlng":[46.11666666,14.81666666],"demonym":"Slovene","area":20273.0,"gini":31.2,"timezones":["UTC+01:00"],"borders":["AUT","HRV","ITA","HUN"],"nativeName":"Slovenija","numericCode":"705","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"sl","iso639_2":"slv","name":"Slovene","nativeName":"slovenski jezik"}],"translations":{"de":"Slowenien","es":"Eslovenia","fr":"Slovénie","ja":"スロベニア","it":"Slovenia","br":"Eslovênia","pt":"Eslovénia","nl":"Slovenië","hr":"Slovenija","fa":"اسلوونی"},"flag":"https://restcountries.eu/data/svn.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"SLO"},{"name":"Solomon Islands","topLevelDomain":[".sb"],"alpha2Code":"SB","alpha3Code":"SLB","callingCodes":["677"],"capital":"Honiara","altSpellings":["SB"],"region":"Oceania","subregion":"Melanesia","population":642000,"latlng":[-8.0,159.0],"demonym":"Solomon Islander","area":28896.0,"gini":null,"timezones":["UTC+11:00"],"borders":[],"nativeName":"Solomon Islands","numericCode":"090","currencies":[{"code":"SBD","name":"Solomon Islands dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Salomonen","es":"Islas Salomón","fr":"Îles Salomon","ja":"ソロモン諸島","it":"Isole Salomone","br":"Ilhas Salomão","pt":"Ilhas Salomão","nl":"Salomonseilanden","hr":"Solomonski Otoci","fa":"جزایر سلیمان"},"flag":"https://restcountries.eu/data/slb.svg","regionalBlocs":[],"cioc":"SOL"},{"name":"Somalia","topLevelDomain":[".so"],"alpha2Code":"SO","alpha3Code":"SOM","callingCodes":["252"],"capital":"Mogadishu","altSpellings":["SO","aṣ-Ṣūmāl","Federal Republic of Somalia","Jamhuuriyadda Federaalka Soomaaliya","Jumhūriyyat aṣ-Ṣūmāl al-Fiderāliyya"],"region":"Africa","subregion":"Eastern Africa","population":11079000,"latlng":[10.0,49.0],"demonym":"Somali","area":637657.0,"gini":null,"timezones":["UTC+03:00"],"borders":["DJI","ETH","KEN"],"nativeName":"Soomaaliya","numericCode":"706","currencies":[{"code":"SOS","name":"Somali shilling","symbol":"Sh"}],"languages":[{"iso639_1":"so","iso639_2":"som","name":"Somali","nativeName":"Soomaaliga"},{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Somalia","es":"Somalia","fr":"Somalie","ja":"ソマリア","it":"Somalia","br":"Somália","pt":"Somália","nl":"Somalië","hr":"Somalija","fa":"سومالی"},"flag":"https://restcountries.eu/data/som.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"SOM"},{"name":"South Africa","topLevelDomain":[".za"],"alpha2Code":"ZA","alpha3Code":"ZAF","callingCodes":["27"],"capital":"Pretoria","altSpellings":["ZA","RSA","Suid-Afrika","Republic of South Africa"],"region":"Africa","subregion":"Southern Africa","population":55653654,"latlng":[-29.0,24.0],"demonym":"South African","area":1221037.0,"gini":63.1,"timezones":["UTC+02:00"],"borders":["BWA","LSO","MOZ","NAM","SWZ","ZWE"],"nativeName":"South Africa","numericCode":"710","currencies":[{"code":"ZAR","name":"South African rand","symbol":"R"}],"languages":[{"iso639_1":"af","iso639_2":"afr","name":"Afrikaans","nativeName":"Afrikaans"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"nr","iso639_2":"nbl","name":"Southern Ndebele","nativeName":"isiNdebele"},{"iso639_1":"st","iso639_2":"sot","name":"Southern Sotho","nativeName":"Sesotho"},{"iso639_1":"ss","iso639_2":"ssw","name":"Swati","nativeName":"SiSwati"},{"iso639_1":"tn","iso639_2":"tsn","name":"Tswana","nativeName":"Setswana"},{"iso639_1":"ts","iso639_2":"tso","name":"Tsonga","nativeName":"Xitsonga"},{"iso639_1":"ve","iso639_2":"ven","name":"Venda","nativeName":"Tshivenḓa"},{"iso639_1":"xh","iso639_2":"xho","name":"Xhosa","nativeName":"isiXhosa"},{"iso639_1":"zu","iso639_2":"zul","name":"Zulu","nativeName":"isiZulu"}],"translations":{"de":"Republik Südafrika","es":"República de Sudáfrica","fr":"Afrique du Sud","ja":"南アフリカ","it":"Sud Africa","br":"República Sul-Africana","pt":"República Sul-Africana","nl":"Zuid-Afrika","hr":"Južnoafrička Republika","fa":"آفریقای جنوبی"},"flag":"https://restcountries.eu/data/zaf.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"RSA"},{"name":"South Georgia and the South Sandwich Islands","topLevelDomain":[".gs"],"alpha2Code":"GS","alpha3Code":"SGS","callingCodes":["500"],"capital":"King Edward Point","altSpellings":["GS","South Georgia and the South Sandwich Islands"],"region":"Americas","subregion":"South America","population":30,"latlng":[-54.5,-37.0],"demonym":"South Georgia and the South Sandwich Islander","area":null,"gini":null,"timezones":["UTC-02:00"],"borders":[],"nativeName":"South Georgia","numericCode":"239","currencies":[{"code":"GBP","name":"British pound","symbol":"£"},{"code":"(none)","name":null,"symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Südgeorgien und die Südlichen Sandwichinseln","es":"Islas Georgias del Sur y Sandwich del Sur","fr":"Géorgie du Sud-et-les Îles Sandwich du Sud","ja":"サウスジョージア・サウスサンドウィッチ諸島","it":"Georgia del Sud e Isole Sandwich Meridionali","br":"Ilhas Geórgias do Sul e Sandwich do Sul","pt":"Ilhas Geórgia do Sul e Sanduíche do Sul","nl":"Zuid-Georgia en Zuidelijke Sandwicheilanden","hr":"Južna Georgija i otočje Južni Sandwich","fa":"جزایر جورجیای جنوبی و ساندویچ جنوبی"},"flag":"https://restcountries.eu/data/sgs.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":""},{"name":"Korea (Republic of)","topLevelDomain":[".kr"],"alpha2Code":"KR","alpha3Code":"KOR","callingCodes":["82"],"capital":"Seoul","altSpellings":["KR","Republic of Korea"],"region":"Asia","subregion":"Eastern Asia","population":50801405,"latlng":[37.0,127.5],"demonym":"South Korean","area":100210.0,"gini":31.3,"timezones":["UTC+09:00"],"borders":["PRK"],"nativeName":"대한민국","numericCode":"410","currencies":[{"code":"KRW","name":"South Korean won","symbol":"₩"}],"languages":[{"iso639_1":"ko","iso639_2":"kor","name":"Korean","nativeName":"한국어"}],"translations":{"de":"Südkorea","es":"Corea del Sur","fr":"Corée du Sud","ja":"大韓民国","it":"Corea del Sud","br":"Coreia do Sul","pt":"Coreia do Sul","nl":"Zuid-Korea","hr":"Južna Koreja","fa":"کره شمالی"},"flag":"https://restcountries.eu/data/kor.svg","regionalBlocs":[],"cioc":"KOR"},{"name":"South Sudan","topLevelDomain":[".ss"],"alpha2Code":"SS","alpha3Code":"SSD","callingCodes":["211"],"capital":"Juba","altSpellings":["SS"],"region":"Africa","subregion":"Middle Africa","population":12131000,"latlng":[7.0,30.0],"demonym":"South Sudanese","area":619745.0,"gini":45.5,"timezones":["UTC+03:00"],"borders":["CAF","COD","ETH","KEN","SDN","UGA"],"nativeName":"South Sudan","numericCode":"728","currencies":[{"code":"SSP","name":"South Sudanese pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Südsudan","es":"Sudán del Sur","fr":"Soudan du Sud","ja":"南スーダン","it":"Sudan del sud","br":"Sudão do Sul","pt":"Sudão do Sul","nl":"Zuid-Soedan","hr":"Južni Sudan","fa":"سودان جنوبی"},"flag":"https://restcountries.eu/data/ssd.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"Spain","topLevelDomain":[".es"],"alpha2Code":"ES","alpha3Code":"ESP","callingCodes":["34"],"capital":"Madrid","altSpellings":["ES","Kingdom of Spain","Reino de España"],"region":"Europe","subregion":"Southern Europe","population":46438422,"latlng":[40.0,-4.0],"demonym":"Spanish","area":505992.0,"gini":34.7,"timezones":["UTC","UTC+01:00"],"borders":["AND","FRA","GIB","PRT","MAR"],"nativeName":"España","numericCode":"724","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Spanien","es":"España","fr":"Espagne","ja":"スペイン","it":"Spagna","br":"Espanha","pt":"Espanha","nl":"Spanje","hr":"Španjolska","fa":"اسپانیا"},"flag":"https://restcountries.eu/data/esp.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"ESP"},{"name":"Sri Lanka","topLevelDomain":[".lk"],"alpha2Code":"LK","alpha3Code":"LKA","callingCodes":["94"],"capital":"Colombo","altSpellings":["LK","ilaṅkai","Democratic Socialist Republic of Sri Lanka"],"region":"Asia","subregion":"Southern Asia","population":20966000,"latlng":[7.0,81.0],"demonym":"Sri Lankan","area":65610.0,"gini":40.3,"timezones":["UTC+05:30"],"borders":["IND"],"nativeName":"śrī laṃkāva","numericCode":"144","currencies":[{"code":"LKR","name":"Sri Lankan rupee","symbol":"Rs"}],"languages":[{"iso639_1":"si","iso639_2":"sin","name":"Sinhalese","nativeName":"සිංහල"},{"iso639_1":"ta","iso639_2":"tam","name":"Tamil","nativeName":"தமிழ்"}],"translations":{"de":"Sri Lanka","es":"Sri Lanka","fr":"Sri Lanka","ja":"スリランカ","it":"Sri Lanka","br":"Sri Lanka","pt":"Sri Lanka","nl":"Sri Lanka","hr":"Šri Lanka","fa":"سری‌لانکا"},"flag":"https://restcountries.eu/data/lka.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"SRI"},{"name":"Sudan","topLevelDomain":[".sd"],"alpha2Code":"SD","alpha3Code":"SDN","callingCodes":["249"],"capital":"Khartoum","altSpellings":["SD","Republic of the Sudan","Jumhūrīyat as-Sūdān"],"region":"Africa","subregion":"Northern Africa","population":39598700,"latlng":[15.0,30.0],"demonym":"Sudanese","area":1886068.0,"gini":35.3,"timezones":["UTC+03:00"],"borders":["CAF","TCD","EGY","ERI","ETH","LBY","SSD"],"nativeName":"السودان","numericCode":"729","currencies":[{"code":"SDG","name":"Sudanese pound","symbol":"ج.س."}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Sudan","es":"Sudán","fr":"Soudan","ja":"スーダン","it":"Sudan","br":"Sudão","pt":"Sudão","nl":"Soedan","hr":"Sudan","fa":"سودان"},"flag":"https://restcountries.eu/data/sdn.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"SUD"},{"name":"Suriname","topLevelDomain":[".sr"],"alpha2Code":"SR","alpha3Code":"SUR","callingCodes":["597"],"capital":"Paramaribo","altSpellings":["SR","Sarnam","Sranangron","Republic of Suriname","Republiek Suriname"],"region":"Americas","subregion":"South America","population":541638,"latlng":[4.0,-56.0],"demonym":"Surinamer","area":163820.0,"gini":52.9,"timezones":["UTC-03:00"],"borders":["BRA","GUF","FRA","GUY"],"nativeName":"Suriname","numericCode":"740","currencies":[{"code":"SRD","name":"Surinamese dollar","symbol":"$"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"}],"translations":{"de":"Suriname","es":"Surinam","fr":"Surinam","ja":"スリナム","it":"Suriname","br":"Suriname","pt":"Suriname","nl":"Suriname","hr":"Surinam","fa":"سورینام"},"flag":"https://restcountries.eu/data/sur.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]},{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"SUR"},{"name":"Svalbard and Jan Mayen","topLevelDomain":[".sj"],"alpha2Code":"SJ","alpha3Code":"SJM","callingCodes":["4779"],"capital":"Longyearbyen","altSpellings":["SJ","Svalbard and Jan Mayen Islands"],"region":"Europe","subregion":"Northern Europe","population":2562,"latlng":[78.0,20.0],"demonym":"Norwegian","area":null,"gini":null,"timezones":["UTC+01:00"],"borders":[],"nativeName":"Svalbard og Jan Mayen","numericCode":"744","currencies":[{"code":"NOK","name":"Norwegian krone","symbol":"kr"}],"languages":[{"iso639_1":"no","iso639_2":"nor","name":"Norwegian","nativeName":"Norsk"}],"translations":{"de":"Svalbard und Jan Mayen","es":"Islas Svalbard y Jan Mayen","fr":"Svalbard et Jan Mayen","ja":"スヴァールバル諸島およびヤンマイエン島","it":"Svalbard e Jan Mayen","br":"Svalbard","pt":"Svalbard","nl":"Svalbard en Jan Mayen","hr":"Svalbard i Jan Mayen","fa":"سوالبارد و یان ماین"},"flag":"https://restcountries.eu/data/sjm.svg","regionalBlocs":[],"cioc":""},{"name":"Swaziland","topLevelDomain":[".sz"],"alpha2Code":"SZ","alpha3Code":"SWZ","callingCodes":["268"],"capital":"Lobamba","altSpellings":["SZ","weSwatini","Swatini","Ngwane","Kingdom of Swaziland","Umbuso waseSwatini"],"region":"Africa","subregion":"Southern Africa","population":1132657,"latlng":[-26.5,31.5],"demonym":"Swazi","area":17364.0,"gini":51.5,"timezones":["UTC+02:00"],"borders":["MOZ","ZAF"],"nativeName":"Swaziland","numericCode":"748","currencies":[{"code":"SZL","name":"Swazi lilangeni","symbol":"L"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ss","iso639_2":"ssw","name":"Swati","nativeName":"SiSwati"}],"translations":{"de":"Swasiland","es":"Suazilandia","fr":"Swaziland","ja":"スワジランド","it":"Swaziland","br":"Suazilândia","pt":"Suazilândia","nl":"Swaziland","hr":"Svazi","fa":"سوازیلند"},"flag":"https://restcountries.eu/data/swz.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"SWZ"},{"name":"Sweden","topLevelDomain":[".se"],"alpha2Code":"SE","alpha3Code":"SWE","callingCodes":["46"],"capital":"Stockholm","altSpellings":["SE","Kingdom of Sweden","Konungariket Sverige"],"region":"Europe","subregion":"Northern Europe","population":9894888,"latlng":[62.0,15.0],"demonym":"Swedish","area":450295.0,"gini":25.0,"timezones":["UTC+01:00"],"borders":["FIN","NOR"],"nativeName":"Sverige","numericCode":"752","currencies":[{"code":"SEK","name":"Swedish krona","symbol":"kr"}],"languages":[{"iso639_1":"sv","iso639_2":"swe","name":"Swedish","nativeName":"svenska"}],"translations":{"de":"Schweden","es":"Suecia","fr":"Suède","ja":"スウェーデン","it":"Svezia","br":"Suécia","pt":"Suécia","nl":"Zweden","hr":"Švedska","fa":"سوئد"},"flag":"https://restcountries.eu/data/swe.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"SWE"},{"name":"Switzerland","topLevelDomain":[".ch"],"alpha2Code":"CH","alpha3Code":"CHE","callingCodes":["41"],"capital":"Bern","altSpellings":["CH","Swiss Confederation","Schweiz","Suisse","Svizzera","Svizra"],"region":"Europe","subregion":"Western Europe","population":8341600,"latlng":[47.0,8.0],"demonym":"Swiss","area":41284.0,"gini":33.7,"timezones":["UTC+01:00"],"borders":["AUT","FRA","ITA","LIE","DEU"],"nativeName":"Schweiz","numericCode":"756","currencies":[{"code":"CHF","name":"Swiss franc","symbol":"Fr"}],"languages":[{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"it","iso639_2":"ita","name":"Italian","nativeName":"Italiano"}],"translations":{"de":"Schweiz","es":"Suiza","fr":"Suisse","ja":"スイス","it":"Svizzera","br":"Suíça","pt":"Suíça","nl":"Zwitserland","hr":"Švicarska","fa":"سوئیس"},"flag":"https://restcountries.eu/data/che.svg","regionalBlocs":[{"acronym":"EFTA","name":"European Free Trade Association","otherAcronyms":[],"otherNames":[]}],"cioc":"SUI"},{"name":"Syrian Arab Republic","topLevelDomain":[".sy"],"alpha2Code":"SY","alpha3Code":"SYR","callingCodes":["963"],"capital":"Damascus","altSpellings":["SY","Syrian Arab Republic","Al-Jumhūrīyah Al-ʻArabīyah As-Sūrīyah"],"region":"Asia","subregion":"Western Asia","population":18564000,"latlng":[35.0,38.0],"demonym":"Syrian","area":185180.0,"gini":35.8,"timezones":["UTC+02:00"],"borders":["IRQ","ISR","JOR","LBN","TUR"],"nativeName":"سوريا","numericCode":"760","currencies":[{"code":"SYP","name":"Syrian pound","symbol":"£"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Syrien","es":"Siria","fr":"Syrie","ja":"シリア・アラブ共和国","it":"Siria","br":"Síria","pt":"Síria","nl":"Syrië","hr":"Sirija","fa":"سوریه"},"flag":"https://restcountries.eu/data/syr.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"SYR"},{"name":"Taiwan","topLevelDomain":[".tw"],"alpha2Code":"TW","alpha3Code":"TWN","callingCodes":["886"],"capital":"Taipei","altSpellings":["TW","Táiwān","Republic of China","中華民國","Zhōnghuá Mínguó"],"region":"Asia","subregion":"Eastern Asia","population":23503349,"latlng":[23.5,121.0],"demonym":"Taiwanese","area":36193.0,"gini":null,"timezones":["UTC+08:00"],"borders":[],"nativeName":"臺灣","numericCode":"158","currencies":[{"code":"TWD","name":"New Taiwan dollar","symbol":"$"}],"languages":[{"iso639_1":"zh","iso639_2":"zho","name":"Chinese","nativeName":"中文 (Zhōngwén)"}],"translations":{"de":"Taiwan","es":"Taiwán","fr":"Taïwan","ja":"台湾(中華民国)","it":"Taiwan","br":"Taiwan","pt":"Taiwan","nl":"Taiwan","hr":"Tajvan","fa":"تایوان"},"flag":"https://restcountries.eu/data/twn.svg","regionalBlocs":[],"cioc":"TPE"},{"name":"Tajikistan","topLevelDomain":[".tj"],"alpha2Code":"TJ","alpha3Code":"TJK","callingCodes":["992"],"capital":"Dushanbe","altSpellings":["TJ","Toçikiston","Republic of Tajikistan","Ҷумҳурии Тоҷикистон","Çumhuriyi Toçikiston"],"region":"Asia","subregion":"Central Asia","population":8593600,"latlng":[39.0,71.0],"demonym":"Tadzhik","area":143100.0,"gini":30.8,"timezones":["UTC+05:00"],"borders":["AFG","CHN","KGZ","UZB"],"nativeName":"Тоҷикистон","numericCode":"762","currencies":[{"code":"TJS","name":"Tajikistani somoni","symbol":"ЅМ"}],"languages":[{"iso639_1":"tg","iso639_2":"tgk","name":"Tajik","nativeName":"тоҷикӣ"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Tadschikistan","es":"Tayikistán","fr":"Tadjikistan","ja":"タジキスタン","it":"Tagikistan","br":"Tajiquistão","pt":"Tajiquistão","nl":"Tadzjikistan","hr":"Tađikistan","fa":"تاجیکستان"},"flag":"https://restcountries.eu/data/tjk.svg","regionalBlocs":[],"cioc":"TJK"},{"name":"Tanzania, United Republic of","topLevelDomain":[".tz"],"alpha2Code":"TZ","alpha3Code":"TZA","callingCodes":["255"],"capital":"Dodoma","altSpellings":["TZ","United Republic of Tanzania","Jamhuri ya Muungano wa Tanzania"],"region":"Africa","subregion":"Eastern Africa","population":55155000,"latlng":[-6.0,35.0],"demonym":"Tanzanian","area":945087.0,"gini":37.6,"timezones":["UTC+03:00"],"borders":["BDI","COD","KEN","MWI","MOZ","RWA","UGA","ZMB"],"nativeName":"Tanzania","numericCode":"834","currencies":[{"code":"TZS","name":"Tanzanian shilling","symbol":"Sh"}],"languages":[{"iso639_1":"sw","iso639_2":"swa","name":"Swahili","nativeName":"Kiswahili"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Tansania","es":"Tanzania","fr":"Tanzanie","ja":"タンザニア","it":"Tanzania","br":"Tanzânia","pt":"Tanzânia","nl":"Tanzania","hr":"Tanzanija","fa":"تانزانیا"},"flag":"https://restcountries.eu/data/tza.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"TAN"},{"name":"Thailand","topLevelDomain":[".th"],"alpha2Code":"TH","alpha3Code":"THA","callingCodes":["66"],"capital":"Bangkok","altSpellings":["TH","Prathet","Thai","Kingdom of Thailand","ราชอาณาจักรไทย","Ratcha Anachak Thai"],"region":"Asia","subregion":"South-Eastern Asia","population":65327652,"latlng":[15.0,100.0],"demonym":"Thai","area":513120.0,"gini":40.0,"timezones":["UTC+07:00"],"borders":["MMR","KHM","LAO","MYS"],"nativeName":"ประเทศไทย","numericCode":"764","currencies":[{"code":"THB","name":"Thai baht","symbol":"฿"}],"languages":[{"iso639_1":"th","iso639_2":"tha","name":"Thai","nativeName":"ไทย"}],"translations":{"de":"Thailand","es":"Tailandia","fr":"Thaïlande","ja":"タイ","it":"Tailandia","br":"Tailândia","pt":"Tailândia","nl":"Thailand","hr":"Tajland","fa":"تایلند"},"flag":"https://restcountries.eu/data/tha.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"THA"},{"name":"Timor-Leste","topLevelDomain":[".tl"],"alpha2Code":"TL","alpha3Code":"TLS","callingCodes":["670"],"capital":"Dili","altSpellings":["TL","East Timor","Democratic Republic of Timor-Leste","República Democrática de Timor-Leste","Repúblika Demokrátika Timór-Leste"],"region":"Asia","subregion":"South-Eastern Asia","population":1167242,"latlng":[-8.83333333,125.91666666],"demonym":"East Timorese","area":14874.0,"gini":31.9,"timezones":["UTC+09:00"],"borders":["IDN"],"nativeName":"Timor-Leste","numericCode":"626","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"},{"code":null,"name":null,"symbol":null}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Timor-Leste","es":"Timor Oriental","fr":"Timor oriental","ja":"東ティモール","it":"Timor Est","br":"Timor Leste","pt":"Timor Leste","nl":"Oost-Timor","hr":"Istočni Timor","fa":"تیمور شرقی"},"flag":"https://restcountries.eu/data/tls.svg","regionalBlocs":[],"cioc":"TLS"},{"name":"Togo","topLevelDomain":[".tg"],"alpha2Code":"TG","alpha3Code":"TGO","callingCodes":["228"],"capital":"Lomé","altSpellings":["TG","Togolese","Togolese Republic","République Togolaise"],"region":"Africa","subregion":"Western Africa","population":7143000,"latlng":[8.0,1.16666666],"demonym":"Togolese","area":56785.0,"gini":34.4,"timezones":["UTC"],"borders":["BEN","BFA","GHA"],"nativeName":"Togo","numericCode":"768","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Togo","es":"Togo","fr":"Togo","ja":"トーゴ","it":"Togo","br":"Togo","pt":"Togo","nl":"Togo","hr":"Togo","fa":"توگو"},"flag":"https://restcountries.eu/data/tgo.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"TOG"},{"name":"Tokelau","topLevelDomain":[".tk"],"alpha2Code":"TK","alpha3Code":"TKL","callingCodes":["690"],"capital":"Fakaofo","altSpellings":["TK"],"region":"Oceania","subregion":"Polynesia","population":1411,"latlng":[-9.0,-172.0],"demonym":"Tokelauan","area":12.0,"gini":null,"timezones":["UTC+13:00"],"borders":[],"nativeName":"Tokelau","numericCode":"772","currencies":[{"code":"NZD","name":"New Zealand dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Tokelau","es":"Islas Tokelau","fr":"Tokelau","ja":"トケラウ","it":"Isole Tokelau","br":"Tokelau","pt":"Toquelau","nl":"Tokelau","hr":"Tokelau","fa":"توکلائو"},"flag":"https://restcountries.eu/data/tkl.svg","regionalBlocs":[],"cioc":""},{"name":"Tonga","topLevelDomain":[".to"],"alpha2Code":"TO","alpha3Code":"TON","callingCodes":["676"],"capital":"Nuku'alofa","altSpellings":["TO"],"region":"Oceania","subregion":"Polynesia","population":103252,"latlng":[-20.0,-175.0],"demonym":"Tongan","area":747.0,"gini":null,"timezones":["UTC+13:00"],"borders":[],"nativeName":"Tonga","numericCode":"776","currencies":[{"code":"TOP","name":"Tongan paʻanga","symbol":"T$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"to","iso639_2":"ton","name":"Tonga (Tonga Islands)","nativeName":"faka Tonga"}],"translations":{"de":"Tonga","es":"Tonga","fr":"Tonga","ja":"トンガ","it":"Tonga","br":"Tonga","pt":"Tonga","nl":"Tonga","hr":"Tonga","fa":"تونگا"},"flag":"https://restcountries.eu/data/ton.svg","regionalBlocs":[],"cioc":"TGA"},{"name":"Trinidad and Tobago","topLevelDomain":[".tt"],"alpha2Code":"TT","alpha3Code":"TTO","callingCodes":["1868"],"capital":"Port of Spain","altSpellings":["TT","Republic of Trinidad and Tobago"],"region":"Americas","subregion":"Caribbean","population":1349667,"latlng":[11.0,-61.0],"demonym":"Trinidadian","area":5130.0,"gini":40.3,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Trinidad and Tobago","numericCode":"780","currencies":[{"code":"TTD","name":"Trinidad and Tobago dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Trinidad und Tobago","es":"Trinidad y Tobago","fr":"Trinité et Tobago","ja":"トリニダード・トバゴ","it":"Trinidad e Tobago","br":"Trinidad e Tobago","pt":"Trindade e Tobago","nl":"Trinidad en Tobago","hr":"Trinidad i Tobago","fa":"ترینیداد و توباگو"},"flag":"https://restcountries.eu/data/tto.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"TTO"},{"name":"Tunisia","topLevelDomain":[".tn"],"alpha2Code":"TN","alpha3Code":"TUN","callingCodes":["216"],"capital":"Tunis","altSpellings":["TN","Republic of Tunisia","al-Jumhūriyyah at-Tūnisiyyah"],"region":"Africa","subregion":"Northern Africa","population":11154400,"latlng":[34.0,9.0],"demonym":"Tunisian","area":163610.0,"gini":41.4,"timezones":["UTC+01:00"],"borders":["DZA","LBY"],"nativeName":"تونس","numericCode":"788","currencies":[{"code":"TND","name":"Tunisian dinar","symbol":"د.ت"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Tunesien","es":"Túnez","fr":"Tunisie","ja":"チュニジア","it":"Tunisia","br":"Tunísia","pt":"Tunísia","nl":"Tunesië","hr":"Tunis","fa":"تونس"},"flag":"https://restcountries.eu/data/tun.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"TUN"},{"name":"Turkey","topLevelDomain":[".tr"],"alpha2Code":"TR","alpha3Code":"TUR","callingCodes":["90"],"capital":"Ankara","altSpellings":["TR","Turkiye","Republic of Turkey","Türkiye Cumhuriyeti"],"region":"Asia","subregion":"Western Asia","population":78741053,"latlng":[39.0,35.0],"demonym":"Turkish","area":783562.0,"gini":39.0,"timezones":["UTC+03:00"],"borders":["ARM","AZE","BGR","GEO","GRC","IRN","IRQ","SYR"],"nativeName":"Türkiye","numericCode":"792","currencies":[{"code":"TRY","name":"Turkish lira","symbol":null}],"languages":[{"iso639_1":"tr","iso639_2":"tur","name":"Turkish","nativeName":"Türkçe"}],"translations":{"de":"Türkei","es":"Turquía","fr":"Turquie","ja":"トルコ","it":"Turchia","br":"Turquia","pt":"Turquia","nl":"Turkije","hr":"Turska","fa":"ترکیه"},"flag":"https://restcountries.eu/data/tur.svg","regionalBlocs":[],"cioc":"TUR"},{"name":"Turkmenistan","topLevelDomain":[".tm"],"alpha2Code":"TM","alpha3Code":"TKM","callingCodes":["993"],"capital":"Ashgabat","altSpellings":["TM"],"region":"Asia","subregion":"Central Asia","population":4751120,"latlng":[40.0,60.0],"demonym":"Turkmen","area":488100.0,"gini":40.8,"timezones":["UTC+05:00"],"borders":["AFG","IRN","KAZ","UZB"],"nativeName":"Türkmenistan","numericCode":"795","currencies":[{"code":"TMT","name":"Turkmenistan manat","symbol":"m"}],"languages":[{"iso639_1":"tk","iso639_2":"tuk","name":"Turkmen","nativeName":"Türkmen"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Turkmenistan","es":"Turkmenistán","fr":"Turkménistan","ja":"トルクメニスタン","it":"Turkmenistan","br":"Turcomenistão","pt":"Turquemenistão","nl":"Turkmenistan","hr":"Turkmenistan","fa":"ترکمنستان"},"flag":"https://restcountries.eu/data/tkm.svg","regionalBlocs":[],"cioc":"TKM"},{"name":"Turks and Caicos Islands","topLevelDomain":[".tc"],"alpha2Code":"TC","alpha3Code":"TCA","callingCodes":["1649"],"capital":"Cockburn Town","altSpellings":["TC"],"region":"Americas","subregion":"Caribbean","population":31458,"latlng":[21.75,-71.58333333],"demonym":"Turks and Caicos Islander","area":948.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Turks and Caicos Islands","numericCode":"796","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Turks- und Caicosinseln","es":"Islas Turks y Caicos","fr":"Îles Turques-et-Caïques","ja":"タークス・カイコス諸島","it":"Isole Turks e Caicos","br":"Ilhas Turcas e Caicos","pt":"Ilhas Turcas e Caicos","nl":"Turks- en Caicoseilanden","hr":"Otoci Turks i Caicos","fa":"جزایر تورکس و کایکوس"},"flag":"https://restcountries.eu/data/tca.svg","regionalBlocs":[],"cioc":""},{"name":"Tuvalu","topLevelDomain":[".tv"],"alpha2Code":"TV","alpha3Code":"TUV","callingCodes":["688"],"capital":"Funafuti","altSpellings":["TV"],"region":"Oceania","subregion":"Polynesia","population":10640,"latlng":[-8.0,178.0],"demonym":"Tuvaluan","area":26.0,"gini":null,"timezones":["UTC+12:00"],"borders":[],"nativeName":"Tuvalu","numericCode":"798","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"},{"code":"TVD[G]","name":"Tuvaluan dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Tuvalu","es":"Tuvalu","fr":"Tuvalu","ja":"ツバル","it":"Tuvalu","br":"Tuvalu","pt":"Tuvalu","nl":"Tuvalu","hr":"Tuvalu","fa":"تووالو"},"flag":"https://restcountries.eu/data/tuv.svg","regionalBlocs":[],"cioc":"TUV"},{"name":"Uganda","topLevelDomain":[".ug"],"alpha2Code":"UG","alpha3Code":"UGA","callingCodes":["256"],"capital":"Kampala","altSpellings":["UG","Republic of Uganda","Jamhuri ya Uganda"],"region":"Africa","subregion":"Eastern Africa","population":33860700,"latlng":[1.0,32.0],"demonym":"Ugandan","area":241550.0,"gini":44.3,"timezones":["UTC+03:00"],"borders":["COD","KEN","RWA","SSD","TZA"],"nativeName":"Uganda","numericCode":"800","currencies":[{"code":"UGX","name":"Ugandan shilling","symbol":"Sh"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"sw","iso639_2":"swa","name":"Swahili","nativeName":"Kiswahili"}],"translations":{"de":"Uganda","es":"Uganda","fr":"Uganda","ja":"ウガンダ","it":"Uganda","br":"Uganda","pt":"Uganda","nl":"Oeganda","hr":"Uganda","fa":"اوگاندا"},"flag":"https://restcountries.eu/data/uga.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"UGA"},{"name":"Ukraine","topLevelDomain":[".ua"],"alpha2Code":"UA","alpha3Code":"UKR","callingCodes":["380"],"capital":"Kiev","altSpellings":["UA","Ukrayina"],"region":"Europe","subregion":"Eastern Europe","population":42692393,"latlng":[49.0,32.0],"demonym":"Ukrainian","area":603700.0,"gini":26.4,"timezones":["UTC+02:00"],"borders":["BLR","HUN","MDA","POL","ROU","RUS","SVK"],"nativeName":"Україна","numericCode":"804","currencies":[{"code":"UAH","name":"Ukrainian hryvnia","symbol":"₴"}],"languages":[{"iso639_1":"uk","iso639_2":"ukr","name":"Ukrainian","nativeName":"Українська"}],"translations":{"de":"Ukraine","es":"Ucrania","fr":"Ukraine","ja":"ウクライナ","it":"Ucraina","br":"Ucrânia","pt":"Ucrânia","nl":"Oekraïne","hr":"Ukrajina","fa":"وکراین"},"flag":"https://restcountries.eu/data/ukr.svg","regionalBlocs":[],"cioc":"UKR"},{"name":"United Arab Emirates","topLevelDomain":[".ae"],"alpha2Code":"AE","alpha3Code":"ARE","callingCodes":["971"],"capital":"Abu Dhabi","altSpellings":["AE","UAE"],"region":"Asia","subregion":"Western Asia","population":9856000,"latlng":[24.0,54.0],"demonym":"Emirati","area":83600.0,"gini":null,"timezones":["UTC+04"],"borders":["OMN","SAU"],"nativeName":"دولة الإمارات العربية المتحدة","numericCode":"784","currencies":[{"code":"AED","name":"United Arab Emirates dirham","symbol":"د.إ"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Vereinigte Arabische Emirate","es":"Emiratos Árabes Unidos","fr":"Émirats arabes unis","ja":"アラブ首長国連邦","it":"Emirati Arabi Uniti","br":"Emirados árabes Unidos","pt":"Emirados árabes Unidos","nl":"Verenigde Arabische Emiraten","hr":"Ujedinjeni Arapski Emirati","fa":"امارات متحده عربی"},"flag":"https://restcountries.eu/data/are.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"UAE"},{"name":"United Kingdom of Great Britain and Northern Ireland","topLevelDomain":[".uk"],"alpha2Code":"GB","alpha3Code":"GBR","callingCodes":["44"],"capital":"London","altSpellings":["GB","UK","Great Britain"],"region":"Europe","subregion":"Northern Europe","population":65110000,"latlng":[54.0,-2.0],"demonym":"British","area":242900.0,"gini":34.0,"timezones":["UTC-08:00","UTC-05:00","UTC-04:00","UTC-03:00","UTC-02:00","UTC","UTC+01:00","UTC+02:00","UTC+06:00"],"borders":["IRL"],"nativeName":"United Kingdom","numericCode":"826","currencies":[{"code":"GBP","name":"British pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Vereinigtes Königreich","es":"Reino Unido","fr":"Royaume-Uni","ja":"イギリス","it":"Regno Unito","br":"Reino Unido","pt":"Reino Unido","nl":"Verenigd Koninkrijk","hr":"Ujedinjeno Kraljevstvo","fa":"بریتانیای کبیر و ایرلند شمالی"},"flag":"https://restcountries.eu/data/gbr.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"GBR"},{"name":"United States of America","topLevelDomain":[".us"],"alpha2Code":"US","alpha3Code":"USA","callingCodes":["1"],"capital":"Washington, D.C.","altSpellings":["US","USA","United States of America"],"region":"Americas","subregion":"Northern America","population":323947000,"latlng":[38.0,-97.0],"demonym":"American","area":9629091.0,"gini":48.0,"timezones":["UTC-12:00","UTC-11:00","UTC-10:00","UTC-09:00","UTC-08:00","UTC-07:00","UTC-06:00","UTC-05:00","UTC-04:00","UTC+10:00","UTC+12:00"],"borders":["CAN","MEX"],"nativeName":"United States","numericCode":"840","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Vereinigte Staaten von Amerika","es":"Estados Unidos","fr":"États-Unis","ja":"アメリカ合衆国","it":"Stati Uniti D'America","br":"Estados Unidos","pt":"Estados Unidos","nl":"Verenigde Staten","hr":"Sjedinjene Američke Države","fa":"ایالات متحده آمریکا"},"flag":"https://restcountries.eu/data/usa.svg","regionalBlocs":[{"acronym":"NAFTA","name":"North American Free Trade Agreement","otherAcronyms":[],"otherNames":["Tratado de Libre Comercio de América del Norte","Accord de Libre-échange Nord-Américain"]}],"cioc":"USA"},{"name":"Uruguay","topLevelDomain":[".uy"],"alpha2Code":"UY","alpha3Code":"URY","callingCodes":["598"],"capital":"Montevideo","altSpellings":["UY","Oriental Republic of Uruguay","República Oriental del Uruguay"],"region":"Americas","subregion":"South America","population":3480222,"latlng":[-33.0,-56.0],"demonym":"Uruguayan","area":181034.0,"gini":39.7,"timezones":["UTC-03:00"],"borders":["ARG","BRA"],"nativeName":"Uruguay","numericCode":"858","currencies":[{"code":"UYU","name":"Uruguayan peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Uruguay","es":"Uruguay","fr":"Uruguay","ja":"ウルグアイ","it":"Uruguay","br":"Uruguai","pt":"Uruguai","nl":"Uruguay","hr":"Urugvaj","fa":"اروگوئه"},"flag":"https://restcountries.eu/data/ury.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"URU"},{"name":"Uzbekistan","topLevelDomain":[".uz"],"alpha2Code":"UZ","alpha3Code":"UZB","callingCodes":["998"],"capital":"Tashkent","altSpellings":["UZ","Republic of Uzbekistan","O‘zbekiston Respublikasi","Ўзбекистон Республикаси"],"region":"Asia","subregion":"Central Asia","population":31576400,"latlng":[41.0,64.0],"demonym":"Uzbekistani","area":447400.0,"gini":36.7,"timezones":["UTC+05:00"],"borders":["AFG","KAZ","KGZ","TJK","TKM"],"nativeName":"O‘zbekiston","numericCode":"860","currencies":[{"code":"UZS","name":"Uzbekistani so'm","symbol":null}],"languages":[{"iso639_1":"uz","iso639_2":"uzb","name":"Uzbek","nativeName":"Oʻzbek"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Usbekistan","es":"Uzbekistán","fr":"Ouzbékistan","ja":"ウズベキスタン","it":"Uzbekistan","br":"Uzbequistão","pt":"Usbequistão","nl":"Oezbekistan","hr":"Uzbekistan","fa":"ازبکستان"},"flag":"https://restcountries.eu/data/uzb.svg","regionalBlocs":[],"cioc":"UZB"},{"name":"Vanuatu","topLevelDomain":[".vu"],"alpha2Code":"VU","alpha3Code":"VUT","callingCodes":["678"],"capital":"Port Vila","altSpellings":["VU","Republic of Vanuatu","Ripablik blong Vanuatu","République de Vanuatu"],"region":"Oceania","subregion":"Melanesia","population":277500,"latlng":[-16.0,167.0],"demonym":"Ni-Vanuatu","area":12189.0,"gini":null,"timezones":["UTC+11:00"],"borders":[],"nativeName":"Vanuatu","numericCode":"548","currencies":[{"code":"VUV","name":"Vanuatu vatu","symbol":"Vt"}],"languages":[{"iso639_1":"bi","iso639_2":"bis","name":"Bislama","nativeName":"Bislama"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Vanuatu","es":"Vanuatu","fr":"Vanuatu","ja":"バヌアツ","it":"Vanuatu","br":"Vanuatu","pt":"Vanuatu","nl":"Vanuatu","hr":"Vanuatu","fa":"وانواتو"},"flag":"https://restcountries.eu/data/vut.svg","regionalBlocs":[],"cioc":"VAN"},{"name":"Venezuela (Bolivarian Republic of)","topLevelDomain":[".ve"],"alpha2Code":"VE","alpha3Code":"VEN","callingCodes":["58"],"capital":"Caracas","altSpellings":["VE","Bolivarian Republic of Venezuela","República Bolivariana de Venezuela"],"region":"Americas","subregion":"South America","population":31028700,"latlng":[8.0,-66.0],"demonym":"Venezuelan","area":916445.0,"gini":44.8,"timezones":["UTC-04:00"],"borders":["BRA","COL","GUY"],"nativeName":"Venezuela","numericCode":"862","currencies":[{"code":"VEF","name":"Venezuelan bolívar","symbol":"Bs F"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Venezuela","es":"Venezuela","fr":"Venezuela","ja":"ベネズエラ・ボリバル共和国","it":"Venezuela","br":"Venezuela","pt":"Venezuela","nl":"Venezuela","hr":"Venezuela","fa":"ونزوئلا"},"flag":"https://restcountries.eu/data/ven.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"VEN"},{"name":"Viet Nam","topLevelDomain":[".vn"],"alpha2Code":"VN","alpha3Code":"VNM","callingCodes":["84"],"capital":"Hanoi","altSpellings":["VN","Socialist Republic of Vietnam","Cộng hòa Xã hội chủ nghĩa Việt Nam"],"region":"Asia","subregion":"South-Eastern Asia","population":92700000,"latlng":[16.16666666,107.83333333],"demonym":"Vietnamese","area":331212.0,"gini":35.6,"timezones":["UTC+07:00"],"borders":["KHM","CHN","LAO"],"nativeName":"Việt Nam","numericCode":"704","currencies":[{"code":"VND","name":"Vietnamese đồng","symbol":"₫"}],"languages":[{"iso639_1":"vi","iso639_2":"vie","name":"Vietnamese","nativeName":"Tiếng Việt"}],"translations":{"de":"Vietnam","es":"Vietnam","fr":"Viêt Nam","ja":"ベトナム","it":"Vietnam","br":"Vietnã","pt":"Vietname","nl":"Vietnam","hr":"Vijetnam","fa":"ویتنام"},"flag":"https://restcountries.eu/data/vnm.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"VIE"},{"name":"Wallis and Futuna","topLevelDomain":[".wf"],"alpha2Code":"WF","alpha3Code":"WLF","callingCodes":["681"],"capital":"Mata-Utu","altSpellings":["WF","Territory of the Wallis and Futuna Islands","Territoire des îles Wallis et Futuna"],"region":"Oceania","subregion":"Polynesia","population":11750,"latlng":[-13.3,-176.2],"demonym":"Wallis and Futuna Islander","area":142.0,"gini":null,"timezones":["UTC+12:00"],"borders":[],"nativeName":"Wallis et Futuna","numericCode":"876","currencies":[{"code":"XPF","name":"CFP franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Wallis und Futuna","es":"Wallis y Futuna","fr":"Wallis-et-Futuna","ja":"ウォリス・フツナ","it":"Wallis e Futuna","br":"Wallis e Futuna","pt":"Wallis e Futuna","nl":"Wallis en Futuna","hr":"Wallis i Fortuna","fa":"والیس و فوتونا"},"flag":"https://restcountries.eu/data/wlf.svg","regionalBlocs":[],"cioc":""},{"name":"Western Sahara","topLevelDomain":[".eh"],"alpha2Code":"EH","alpha3Code":"ESH","callingCodes":["212"],"capital":"El Aaiún","altSpellings":["EH","Taneẓroft Tutrimt"],"region":"Africa","subregion":"Northern Africa","population":510713,"latlng":[24.5,-13.0],"demonym":"Sahrawi","area":266000.0,"gini":null,"timezones":["UTC+00:00"],"borders":["DZA","MRT","MAR"],"nativeName":"الصحراء الغربية","numericCode":"732","currencies":[{"code":"MAD","name":"Moroccan dirham","symbol":"د.م."},{"code":"DZD","name":"Algerian dinar","symbol":"د.ج"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Westsahara","es":"Sahara Occidental","fr":"Sahara Occidental","ja":"西サハラ","it":"Sahara Occidentale","br":"Saara Ocidental","pt":"Saara Ocidental","nl":"Westelijke Sahara","hr":"Zapadna Sahara","fa":"جمهوری دموکراتیک عربی صحرا"},"flag":"https://restcountries.eu/data/esh.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"Yemen","topLevelDomain":[".ye"],"alpha2Code":"YE","alpha3Code":"YEM","callingCodes":["967"],"capital":"Sana'a","altSpellings":["YE","Yemeni Republic","al-Jumhūriyyah al-Yamaniyyah"],"region":"Asia","subregion":"Western Asia","population":27478000,"latlng":[15.0,48.0],"demonym":"Yemeni","area":527968.0,"gini":37.7,"timezones":["UTC+03:00"],"borders":["OMN","SAU"],"nativeName":"اليَمَن","numericCode":"887","currencies":[{"code":"YER","name":"Yemeni rial","symbol":"﷼"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Jemen","es":"Yemen","fr":"Yémen","ja":"イエメン","it":"Yemen","br":"Iêmen","pt":"Iémen","nl":"Jemen","hr":"Jemen","fa":"یمن"},"flag":"https://restcountries.eu/data/yem.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"YEM"},{"name":"Zambia","topLevelDomain":[".zm"],"alpha2Code":"ZM","alpha3Code":"ZMB","callingCodes":["260"],"capital":"Lusaka","altSpellings":["ZM","Republic of Zambia"],"region":"Africa","subregion":"Eastern Africa","population":15933883,"latlng":[-15.0,30.0],"demonym":"Zambian","area":752612.0,"gini":54.6,"timezones":["UTC+02:00"],"borders":["AGO","BWA","COD","MWI","MOZ","NAM","TZA","ZWE"],"nativeName":"Zambia","numericCode":"894","currencies":[{"code":"ZMW","name":"Zambian kwacha","symbol":"ZK"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Sambia","es":"Zambia","fr":"Zambie","ja":"ザンビア","it":"Zambia","br":"Zâmbia","pt":"Zâmbia","nl":"Zambia","hr":"Zambija","fa":"زامبیا"},"flag":"https://restcountries.eu/data/zmb.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"ZAM"},{"name":"Zimbabwe","topLevelDomain":[".zw"],"alpha2Code":"ZW","alpha3Code":"ZWE","callingCodes":["263"],"capital":"Harare","altSpellings":["ZW","Republic of Zimbabwe"],"region":"Africa","subregion":"Eastern Africa","population":14240168,"latlng":[-20.0,30.0],"demonym":"Zimbabwean","area":390757.0,"gini":null,"timezones":["UTC+02:00"],"borders":["BWA","MOZ","ZAF","ZMB"],"nativeName":"Zimbabwe","numericCode":"716","currencies":[{"code":"BWP","name":"Botswana pula","symbol":"P"},{"code":"GBP","name":"British pound","symbol":"£"},{"code":"CNY","name":"Chinese yuan","symbol":"¥"},{"code":"EUR","name":"Euro","symbol":"€"},{"code":"INR","name":"Indian rupee","symbol":"₹"},{"code":"JPY","name":"Japanese yen","symbol":"¥"},{"code":"ZAR","name":"South African rand","symbol":"Rs"},{"code":"USD","name":"United States dollar","symbol":"$"},{"code":"(none)","name":null,"symbol":null}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"sn","iso639_2":"sna","name":"Shona","nativeName":"chiShona"},{"iso639_1":"nd","iso639_2":"nde","name":"Northern Ndebele","nativeName":"isiNdebele"}],"translations":{"de":"Simbabwe","es":"Zimbabue","fr":"Zimbabwe","ja":"ジンバブエ","it":"Zimbabwe","br":"Zimbabwe","pt":"Zimbabué","nl":"Zimbabwe","hr":"Zimbabve","fa":"زیمباوه"},"flag":"https://restcountries.eu/data/zwe.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"ZIM"}] \ No newline at end of file diff --git a/badge-coverage.svg b/badge-coverage.svg deleted file mode 100644 index 66c286682..000000000 --- a/badge-coverage.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - coverage - coverage - - - 55 % - 55 % - - \ No newline at end of file diff --git a/build/framework-build b/build/framework-build deleted file mode 120000 index d97808928..000000000 --- a/build/framework-build +++ /dev/null @@ -1 +0,0 @@ -framework-build \ No newline at end of file diff --git a/build/logs/clover.xml b/build/logs/clover.xml deleted file mode 100644 index 01a38102e..000000000 --- a/build/logs/clover.xml +++ /dev/null @@ -1,4142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/composer.json b/composer.json deleted file mode 100644 index b50733a58..000000000 --- a/composer.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "name": "avored/framework", - "description": "This is my package framework", - "keywords": [ - "AvoRed", - "laravel", - "framework" - ], - "homepage": "https://github.com/avored/framework", - "license": "MIT", - "authors": [{ - "name": "Purvesh", - "email": "ind.purvesh@gmail.com", - "role": "Developer" - }], - "require": { - "php": "^7.3|^7.4|^8.0|^8.1", - "illuminate/auth": "^8.2|^9.0", - "illuminate/contracts": "^8.2|^9.0", - "illuminate/database": "^8.2|^9.0", - "illuminate/routing": "^8.2|^9.0", - "illuminate/http": "^8.2|^9.0", - "illuminate/support": "^8.2|^9.0", - "illuminate/view": "^8.2|^9.0", - "ramsey/uuid": "^4.2", - "rebing/graphql-laravel": "^8.2", - "nyholm/psr7": "^1.4", - "laravel/passport": "^10.1|^10.2|^10.3", - "symfony/yaml": "^5.3|^6.0" - }, - "require-dev": { - "brianium/paratest": "^6.0", - "friendsofphp/php-cs-fixer": "^3.1", - "nunomaduro/collision": "^5.3|^6.0", - "orchestra/testbench": "6.*|7.*", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.8" - }, - "autoload": { - "psr-4": { - "AvoRed\\Framework\\": "src/", - "AvoRed\\Framework\\Database\\Factories\\": "database/factories/" - } - }, - "autoload-dev": { - "psr-4": { - "AvoRed\\Framework\\Tests\\": "tests" - } - }, - "scripts": { - "psalm": "vendor/bin/psalm --show-info=true", - "phpunit": "vendor/bin/phpunit", - "test": "./vendor/bin/testbench package:test --parallel --no-coverage", - "test-coverage": "vendor/bin/phpunit --coverage-html build/coverage" - }, - "config": { - "sort-packages": true - }, - "extra": { - "laravel": { - "providers": [ - "AvoRed\\Framework\\AvoRedServiceProvider" - ], - "aliases": { - "Module": "AvoRed\\Framework\\Module\\Module", - "Cart": "AvoRed\\Framework\\Cart\\Cart", - "Breadcrumb": "AvoRed\\Framework\\Breadcrumb\\Breadcrumb", - "Document": "AvoRed\\Framework\\Document\\Document", - "Menu": "AvoRed\\Framework\\Menu\\Menu", - "Payment": "AvoRed\\Framework\\Payment\\Payment", - "Permission": "AvoRed\\Framework\\Permission\\Permission", - "Shipping": "AvoRed\\Framework\\Shipping\\Shipping", - "Tab": "AvoRed\\Framework\\Tab\\Tab" - }, - "dont-discover": [ - "rebing/graphql-laravel" - ] - } - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/config/avored.php b/config/avored.php deleted file mode 100644 index 5f96a2366..000000000 --- a/config/avored.php +++ /dev/null @@ -1,145 +0,0 @@ - 'admin', - 'guest_prefix' => 'AvoRed_Guest_', - - 'auth' => [ - 'guards' => [ - 'admin' => [ - 'driver' => 'session', - 'provider' => 'admin-users', - ], - 'customer' => [ - 'driver' => 'passport', - 'provider' => 'customers', - ], - ], - 'providers' => [ - 'admin-users' => [ - 'driver' => 'eloquent', - 'model' => AvoRed\Framework\Database\Models\AdminUser::class, - ], - 'customers' => [ - 'driver' => 'eloquent', - 'model' => AvoRed\Framework\Database\Models\Customer::class, - ], - ], - - 'passwords' => [ - 'adminusers' => [ - 'provider' => 'admin-users', - 'table' => 'admin_password_resets', - 'expire' => 60, - ], - 'customers' => [ - 'provider' => 'customers', - 'table' => 'customer_password_resets', - 'expire' => 60, - ], - ], - ], - 'graphql' => [ - 'default_schema' => 'default', - 'schemas' => [ - 'default' => [ - 'query' => [ - 'latestProductQuery' => LatestProductQuery::class, - 'allCategory' => AllCategoryQuery::class, - 'category' => CategoryQuery::class, - 'product' => ProductQuery::class, - 'shippingQuery' => ShippingQuery::class, - 'paymentQuery' => PaymentQuery::class, - 'countryOptions' => CountryOptionsQuery::class, - 'cartItems' => CartItemsQuery::class, - 'allAddress' => AllAddressQuery::class, - 'addressQuery' => AddressQuery::class, - 'customerQuery' => CustomerQuery::class, - 'allOrders' => AllOrdersQuery::class, - 'order' => OrderQuery::class, - ], - 'mutation' => [ - 'login' => LoginMutation::class, - 'register' => RegisterMutation::class, - 'forgotPassword' => ForgotPasswordMutation::class, - 'resetPassword' => ResetPasswordMutation::class, - 'customerUpdate' => CustomerUpdateMutation::class, - 'createAddress' => CreateAddressMutation::class, - 'updateAddress' => UpdateAddressMutation::class, - 'deleteAddress' => DeleteAddressMutation::class, - 'placeOrder' => PlaceOrderMutation::class, - 'addToCart' => AddToCartMutation::class, - 'updateCart' => UpdateCartMutation::class, - 'deleteCart' => DeleteCartMutation::class, - 'CreateSubscriberMutation' => CreateSubscriberMutation::class, - ], - 'middleware' => [], - 'method' => ['GET', 'POST'], - ], - ], - - 'types' => [ - 'Category' => CategoryType::class, - 'Product' => ProductType::class, - 'Customer' => CustomerType::class, - 'Order' => OrderType::class, - 'Address' => AddressType::class, - 'Notification' => NotificationType::class, - 'CartProduct' => CartProductType::class, - 'Payment' => PaymentType::class, - 'Shipping' => ShippingType::class, - 'Subscriber' => SubscriberType::class, - 'Option' => OptionType::class, - ], - ], -]; diff --git a/database/factories/AddressFactory.php b/database/factories/AddressFactory.php deleted file mode 100644 index 928e288e3..000000000 --- a/database/factories/AddressFactory.php +++ /dev/null @@ -1,47 +0,0 @@ -create(); - $types = [ - 'SHIPPING', - 'BILLING' - ]; - $country = DB::table('countries')->get()->random(); - - return [ - 'type' => $types[rand(0, 1)], - 'customer_id' => $customer->id, - 'company_name' => $this->faker->company(), - 'first_name' => $this->faker->firstName(), - 'last_name' => $this->faker->lastName(), - 'address1' => $this->faker->streetSuffix . $this->faker->streetName(), - 'postcode' => $this->faker->postcode(), - 'city' => $this->faker->city(), - 'state' => $this->faker->stateAbbr(), - 'country_id' => $country->id, - 'phone' => $this->faker->phoneNumber(), - ]; - } -} diff --git a/database/factories/AdminUserFactory.php b/database/factories/AdminUserFactory.php deleted file mode 100644 index dc635c60b..000000000 --- a/database/factories/AdminUserFactory.php +++ /dev/null @@ -1,36 +0,0 @@ -create(); - - return [ - 'first_name' => $this->faker->firstName, - 'last_name' => $this->faker->lastName, - 'email' => $this->faker->email, - 'password' => Hash::make('secret'), - 'role_id' => $role->id, - 'is_super_admin' => rand(0, 1) - ]; - } -} diff --git a/database/factories/AttributeFactory.php b/database/factories/AttributeFactory.php deleted file mode 100644 index 02048e395..000000000 --- a/database/factories/AttributeFactory.php +++ /dev/null @@ -1,32 +0,0 @@ -faker->word; - return [ - 'name' => $name, - 'slug' => Str::slug($name), - 'display_as' => 'TEXT' - ]; - } -} diff --git a/database/factories/CategoryFactory.php b/database/factories/CategoryFactory.php deleted file mode 100644 index eb08c5825..000000000 --- a/database/factories/CategoryFactory.php +++ /dev/null @@ -1,35 +0,0 @@ -faker->word; - - return [ - 'parent_id' => null, - 'name' => $name, - 'slug' => Str::slug($name), - 'meta_title' => $this->faker->sentence, - 'meta_description' => $this->faker->sentence, - ]; - } -} diff --git a/database/factories/CustomerFactory.php b/database/factories/CustomerFactory.php deleted file mode 100644 index a3517331e..000000000 --- a/database/factories/CustomerFactory.php +++ /dev/null @@ -1,31 +0,0 @@ - $this->faker->name(), - 'last_name' => $this->faker->lastName(), - 'email' => $this->faker->unique()->safeEmail(), - 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password - ]; - } -} diff --git a/database/factories/DocumentFactory.php b/database/factories/DocumentFactory.php deleted file mode 100644 index 0e65a8453..000000000 --- a/database/factories/DocumentFactory.php +++ /dev/null @@ -1,33 +0,0 @@ -faker->word() . DIRECTORY_SEPARATOR . $this->faker->word(); - - return [ - 'path' => $path, - 'mine_type' => 'image/jpg', - 'size' => $this->faker->randomDigit(), - 'origional_name' => $this->faker->word() . '.' . 'jpg' - ]; - } -} diff --git a/database/factories/OrderFactory.php b/database/factories/OrderFactory.php deleted file mode 100644 index c1cefac14..000000000 --- a/database/factories/OrderFactory.php +++ /dev/null @@ -1,41 +0,0 @@ -create(['type' => 'SHIPPING']); - $billingAddress = Address::factory()->create(['type' => 'BILLING']); - $customer = Customer::factory()->create(); - $orderStatus = OrderStatus::factory()->create(); - return [ - 'shipping_option' => $this->faker->word, - 'payment_option' => $this->faker->word, - 'customer_id' => $customer->id, - 'order_status_id' => $orderStatus->id, - 'shipping_address_id' => $shippingAddress->id, - 'billing_address_id' => $billingAddress->id, - 'track_code' => rand(100000, 9999999), - ]; - } -} diff --git a/database/factories/OrderStatusFactory.php b/database/factories/OrderStatusFactory.php deleted file mode 100644 index b3317fa85..000000000 --- a/database/factories/OrderStatusFactory.php +++ /dev/null @@ -1,31 +0,0 @@ -faker->word; - - return [ - 'name' => $name, - 'is_default' => rand(0, 1), - ]; - } -} diff --git a/database/factories/PageFactory.php b/database/factories/PageFactory.php deleted file mode 100644 index daccb3292..000000000 --- a/database/factories/PageFactory.php +++ /dev/null @@ -1,35 +0,0 @@ -faker->word; - - return [ - 'name' => $name, - 'slug' => Str::slug($name), - 'content' => $this->faker->sentence, - 'meta_title' => $this->faker->sentence, - 'meta_description' => $this->faker->sentence, - ]; - } -} diff --git a/database/factories/ProductFactory.php b/database/factories/ProductFactory.php deleted file mode 100644 index 259ec791f..000000000 --- a/database/factories/ProductFactory.php +++ /dev/null @@ -1,49 +0,0 @@ -faker->sentence; - - return [ - 'name' => $name, - 'slug' => Str::slug($name), - 'type' => 'BASIC', - 'sku' => Str::slug($name), - 'barcode' => $this->faker->randomNumber(4), - 'description' => $this->faker->sentence(3000), - 'status' => 1, - 'in_stock' => 1, - 'track_stock' => 1, - 'qty' => rand(100, 300), - 'is_taxable' => 1, - 'price' => $this->faker->randomNumber(2), - 'cost_price' => $this->faker->randomNumber(2), - 'weight' => $this->faker->randomNumber(2), - 'height' => $this->faker->randomNumber(2), - 'width' => $this->faker->randomNumber(2), - 'length' => $this->faker->randomNumber(2), - 'meta_title' => $this->faker->sentence, - 'meta_description' => $this->faker->sentence, - ]; - } -} diff --git a/database/factories/PropertyFactory.php b/database/factories/PropertyFactory.php deleted file mode 100644 index b5faa810d..000000000 --- a/database/factories/PropertyFactory.php +++ /dev/null @@ -1,35 +0,0 @@ -faker->word; - return [ - 'name' => $name, - 'slug' => Str::slug($name), - 'data_type' => 'VARCHAR', - 'field_type' => 'TEXT', - 'use_for_all_products' => rand(0, 1), - 'sort_order' => rand(0, 100), - ]; - } -} diff --git a/database/factories/RoleFactory.php b/database/factories/RoleFactory.php deleted file mode 100644 index 242d5747d..000000000 --- a/database/factories/RoleFactory.php +++ /dev/null @@ -1,28 +0,0 @@ - $this->faker->name(), - ]; - } -} diff --git a/database/migrations/2016_06_01_000001_create_oauth_auth_codes_table.php b/database/migrations/2016_06_01_000001_create_oauth_auth_codes_table.php deleted file mode 100644 index 0eabf059c..000000000 --- a/database/migrations/2016_06_01_000001_create_oauth_auth_codes_table.php +++ /dev/null @@ -1,62 +0,0 @@ -schema = Schema::connection($this->getConnection()); - } - - /** - * Run the migrations. - * - * @return void - */ - public function up() - { - $this->schema->create('oauth_auth_codes', function (Blueprint $table) { - $table->string('id', 100)->primary(); - $table->unsignedBigInteger('user_id')->index(); - $table->unsignedBigInteger('client_id'); - $table->text('scopes')->nullable(); - $table->boolean('revoked'); - $table->dateTime('expires_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - $this->schema->dropIfExists('oauth_auth_codes'); - } - - /** - * Get the migration connection name. - * - * @return string|null - */ - public function getConnection() - { - return config('passport.storage.database.connection'); - } -} diff --git a/database/migrations/2016_06_01_000002_create_oauth_access_tokens_table.php b/database/migrations/2016_06_01_000002_create_oauth_access_tokens_table.php deleted file mode 100644 index 7fdffb848..000000000 --- a/database/migrations/2016_06_01_000002_create_oauth_access_tokens_table.php +++ /dev/null @@ -1,64 +0,0 @@ -schema = Schema::connection($this->getConnection()); - } - - /** - * Run the migrations. - * - * @return void - */ - public function up() - { - $this->schema->create('oauth_access_tokens', function (Blueprint $table) { - $table->string('id', 100)->primary(); - $table->uuid('user_id')->nullable()->index(); - $table->uuid('client_id'); - $table->string('name')->nullable(); - $table->text('scopes')->nullable(); - $table->boolean('revoked'); - $table->timestamps(); - $table->dateTime('expires_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - $this->schema->dropIfExists('oauth_access_tokens'); - } - - /** - * Get the migration connection name. - * - * @return string|null - */ - public function getConnection() - { - return config('passport.storage.database.connection'); - } -} diff --git a/database/migrations/2016_06_01_000003_create_oauth_refresh_tokens_table.php b/database/migrations/2016_06_01_000003_create_oauth_refresh_tokens_table.php deleted file mode 100644 index b4ac09544..000000000 --- a/database/migrations/2016_06_01_000003_create_oauth_refresh_tokens_table.php +++ /dev/null @@ -1,60 +0,0 @@ -schema = Schema::connection($this->getConnection()); - } - - /** - * Run the migrations. - * - * @return void - */ - public function up() - { - $this->schema->create('oauth_refresh_tokens', function (Blueprint $table) { - $table->string('id', 100)->primary(); - $table->string('access_token_id', 100)->index(); - $table->boolean('revoked'); - $table->dateTime('expires_at')->nullable(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - $this->schema->dropIfExists('oauth_refresh_tokens'); - } - - /** - * Get the migration connection name. - * - * @return string|null - */ - public function getConnection() - { - return config('passport.storage.database.connection'); - } -} diff --git a/database/migrations/2016_06_01_000004_create_oauth_clients_table.php b/database/migrations/2016_06_01_000004_create_oauth_clients_table.php deleted file mode 100644 index cf3c986fb..000000000 --- a/database/migrations/2016_06_01_000004_create_oauth_clients_table.php +++ /dev/null @@ -1,66 +0,0 @@ -schema = Schema::connection($this->getConnection()); - } - - /** - * Get the migration connection name. - * - * @return string|null - */ - public function getConnection() - { - return config('passport.storage.database.connection'); - } - - /** - * Run the migrations. - * - * @return void - */ - public function up() - { - $this->schema->create('oauth_clients', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->uuid('user_id')->nullable()->index(); - $table->string('name'); - $table->string('secret', 100)->nullable(); - $table->string('provider')->nullable(); - $table->text('redirect'); - $table->boolean('personal_access_client'); - $table->boolean('password_client'); - $table->boolean('revoked'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - $this->schema->dropIfExists('oauth_clients'); - } -} diff --git a/database/migrations/2016_06_01_000005_create_oauth_personal_access_clients_table.php b/database/migrations/2016_06_01_000005_create_oauth_personal_access_clients_table.php deleted file mode 100644 index 7bf284d41..000000000 --- a/database/migrations/2016_06_01_000005_create_oauth_personal_access_clients_table.php +++ /dev/null @@ -1,59 +0,0 @@ -schema = Schema::connection($this->getConnection()); - } - - /** - * Run the migrations. - * - * @return void - */ - public function up() - { - $this->schema->create('oauth_personal_access_clients', function (Blueprint $table) { - $table->bigIncrements('id'); - $table->uuid('client_id'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - $this->schema->dropIfExists('oauth_personal_access_clients'); - } - - /** - * Get the migration connection name. - * - * @return string|null - */ - public function getConnection() - { - return config('passport.storage.database.connection'); - } -} diff --git a/database/migrations/2017_03_29_000000_avored_framework_schema.php b/database/migrations/2017_03_29_000000_avored_framework_schema.php deleted file mode 100644 index d26bb9f93..000000000 --- a/database/migrations/2017_03_29_000000_avored_framework_schema.php +++ /dev/null @@ -1,332 +0,0 @@ -string('email')->index(); - $table->string('token')->index(); - $table->timestamp('created_at'); - }); - - Schema::create('customer_password_resets', function (Blueprint $table) { - $table->string('email')->index(); - $table->string('token')->index(); - $table->timestamp('created_at'); - }); - Schema::create('roles', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('name')->nullable()->default(null); - $table->text('description')->nullable()->default(null); - $table->timestamps(); - }); - - Schema::create('admin_users', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->tinyInteger('is_super_admin')->nullable()->default(null); - $table->uuid('role_id')->nullable()->default(null); - $table->string('first_name')->nullable(); - $table->string('last_name')->nullable(); - $table->string('email')->unique(); - $table->string('password'); - $table->string('language')->nullable()->default('en'); - $table->rememberToken(); - $table->timestamp('email_verified_at')->nullable(); - $table->timestamps(); - - $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade'); - }); - - Schema::create('categories', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('name')->nullable()->default(null); - $table->string('slug')->nullable()->default(null); - $table->text('description')->nullable()->default(null); - $table->string('meta_title')->nullable()->default(null); - $table->string('meta_description')->nullable()->default(null); - $table->timestamps(); - }); - - Schema::table('categories', function (Blueprint $table) { - $table->uuid('parent_id')->nullable(); - $table->foreign('parent_id')->references('id')->on('categories'); - }); - - Schema::create('permissions', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('name')->unique(); - $table->timestamps(); - }); - - Schema::create('permission_role', function (Blueprint $table) { - $table->uuid('permission_id')->nullable()->default(null); - $table->uuid('role_id')->nullable()->default(null); - $table->timestamps(); - $table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade'); - $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade'); - }); - - Schema::create('pages', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('name')->nullable()->default(null); - $table->string('slug')->nullable()->default(null); - $table->text('content')->nullable()->default(null); - $table->string('meta_title')->nullable()->default(null); - $table->string('meta_description')->nullable()->default(null); - $table->timestamps(); - }); - - Schema::create('order_statuses', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('name'); - $table->boolean('is_default')->default(0); - $table->timestamps(); - }); - - Schema::create('properties', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('name'); - $table->string('slug')->unique(); - $table->enum('data_type', ['INTEGER', 'DECIMAL', 'DATETIME', 'VARCHAR', 'BOOLEAN', 'TEXT']) - ->nullable() - ->default(null); - $table->enum( - 'field_type', - ['TEXT', 'TEXTAREA', 'CKEDITOR', 'SELECT', 'FILE', 'DATETIME', 'RADIO', 'SWITCH'] - ); - $table->tinyInteger('use_for_all_products')->default(0); - $table->tinyInteger('use_for_category_filter')->default(0); - $table->integer('sort_order')->nullable()->default(0); - $table->timestamps(); - }); - - Schema::create('property_dropdown_options', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->uuid('property_id'); - $table->string('display_text'); - $table->timestamps(); - $table->foreign('property_id') - ->references('id')->on('properties')->onDelete('cascade'); - }); - Schema::create('attributes', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('name'); - $table->string('slug')->unique(); - $table->enum('display_as', ['IMAGE', 'TEXT'])->default('TEXT'); - $table->timestamps(); - }); - Schema::create('attribute_dropdown_options', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->uuid('attribute_id'); - $table->string('display_text'); - $table->string('path')->nullable()->default(null); - $table->timestamps(); - $table->foreign('attribute_id') - ->references('id')->on('attributes')->onDelete('cascade'); - }); - Schema::create('configurations', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('code')->nullable()->default(null); - $table->text('value')->nullable()->default(null); - $table->timestamps(); - }); - - Schema::create('products', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->enum('type', ['BASIC', 'VARIATION', 'DOWNLOADABLE', 'VARIABLE_PRODUCT'])->default('BASIC'); - $table->string('name')->nullable()->default(null); - $table->string('slug')->nullable()->default(null); - $table->string('sku')->nullable()->default(null); - $table->string('barcode')->nullable()->default(null); - $table->text('description')->nullable()->default(null); - $table->tinyInteger('status')->nullable()->default(null); - $table->tinyInteger('in_stock')->nullable()->default(null); - $table->tinyInteger('track_stock')->nullable()->default(null); - $table->decimal('qty', 10, 6)->nullable(); - $table->tinyInteger('is_taxable')->nullable()->default(null); - $table->decimal('price', 10, 6)->nullable()->default(null); - $table->decimal('cost_price', 10, 6)->nullable()->default(null); - $table->float('weight')->nullable()->default(null); - $table->float('width')->nullable()->default(null); - $table->float('height')->nullable()->default(null); - $table->float('length')->nullable()->default(null); - $table->string('meta_title')->nullable()->default(null); - $table->string('meta_description')->nullable()->default(null); - $table->timestamps(); - }); - - Schema::create('customers', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('first_name')->nullable(); - $table->string('last_name')->nullable(); - $table->string('email')->unique(); - $table->string('password'); - $table->string('image_path')->nullable()->default(null); - $table->rememberToken(); - $table->timestamp('email_verified_at')->nullable(); - $table->timestamps(); - }); - - Schema::create('countries', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('name')->nullable()->default(null); - $table->string('code')->nullable()->default(null); - $table->string('phone_code')->nullable()->default(null); - $table->string('currency_code')->nullable()->default(null); - $table->string('currency_symbol')->nullable()->default(null); - $table->string('lang_code')->nullable()->default(null); - $table->timestamps(); - }); - - Schema::create('addresses', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->uuid('customer_id'); - $table->enum('type', ['SHIPPING', 'BILLING']); - $table->string('first_name')->nullable()->default(null); - $table->string('last_name')->nullable()->default(null); - $table->string('company_name')->nullable()->default(null); - $table->string('address1')->nullable()->default(null); - $table->string('address2')->nullable()->default(null); - $table->string('postcode')->nullable()->default(null); - $table->string('city')->nullable()->default(null); - $table->string('state')->nullable()->default(null); - $table->uuid('country_id')->nullable()->default(null); - $table->string('phone')->nullable()->default(null); - $table->timestamps(); - $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); - $table->foreign('country_id')->references('id')->on('countries')->onDelete('cascade'); - }); - - - Schema::create('orders', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('shipping_option'); - $table->string('payment_option'); - $table->uuid('order_status_id'); - $table->uuid('customer_id')->nullable(); - $table->uuid('shipping_address_id')->nullable(); - $table->uuid('billing_address_id')->nullable(); - $table->string('track_code')->nullable()->default(null); - $table->timestamps(); - - $table->foreign('shipping_address_id')->references('id')->on('addresses'); - $table->foreign('billing_address_id')->references('id')->on('addresses'); - $table->foreign('order_status_id')->references('id')->on('order_statuses'); - $table->foreign('customer_id')->references('id')->on('customers'); - }); - - Schema::create('order_products', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->uuid('product_id'); - $table->uuid('order_id'); - $table->decimal('qty', 11, 6); - $table->decimal('price', 11, 6); - $table->decimal('tax_amount', 11, 6); - $table->timestamps(); - $table->foreign('order_id')->references('id')->on('orders'); - $table->foreign('product_id')->references('id')->on('products'); - }); - - Schema::create('documents', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->string('path'); - $table->string('mime_type')->nullable(); - $table->integer('size')->nullable(); - $table->string('origional_name')->nullable(); - $table->nullableUuidMorphs('documentable'); - $table->timestamps(); - }); - - Schema::create('category_product', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->uuid('product_id'); - $table->uuid('category_id'); - $table->timestamps(); - $table->foreign('category_id')->references('id')->on('categories'); - $table->foreign('product_id')->references('id')->on('products'); - }); - - Schema::create('cart_products', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->uuid('visitor_id'); - $table->uuid('product_id'); - $table->decimal('qty', 10, 6)->nullable()->default(null); - $table->timestamps(); - $table->foreign('product_id')->references('id')->on('products'); - }); - - Schema::create('subscribers', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->uuid('customer_id')->nullable()->default(null); - $table->string('email')->nullable()->default(null)->unique(); - $table->enum('status', ['ENABLED', 'DISABLED'])->default('ENABLED'); - $table->timestamps(); - $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); - }); - - $path = __DIR__.'/../../assets/countries.json'; - $json = json_decode(file_get_contents($path), true); - foreach ($json as $country) { - $data['id'] = Uuid::uuid4()->toString(); - $data['code'] = strtolower(Arr::get($country, 'alpha2Code')); - $data['name'] = Arr::get($country, 'name'); - $data['phone_code'] = Arr::get($country, 'callingCodes.0'); - $data['currency_code'] = Arr::get($country, 'currencies.0.code'); - $data['currency_symbol'] = Arr::get($country, 'currencies.0.symbol'); - $data['lang_code'] = Arr::get($country, 'languages.0.name'); - $countries[] = $data; - } - - DB::table('countries')->insert($countries); - - } - - /** - * Uninstall the AvoRed Address Module Schema. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('subscribers'); - Schema::dropIfExists('category_product'); - Schema::dropIfExists('documents'); - Schema::dropIfExists('order_products'); - Schema::dropIfExists('orders'); - Schema::dropIfExists('addresses'); - Schema::dropIfExists('countries'); - Schema::dropIfExists('customers'); - Schema::dropIfExists('products'); - Schema::dropIfExists('configurations'); - Schema::dropIfExists('attribute_dropdown_options'); - Schema::dropIfExists('attributes'); - Schema::dropIfExists('property_dropdown_options'); - Schema::dropIfExists('properties'); - Schema::dropIfExists('order_statuses'); - Schema::dropIfExists('pages'); - Schema::dropIfExists('permission_role'); - Schema::dropIfExists('permissions'); - Schema::table('categories', function (Blueprint $table) { - $table->dropForeign('categories_parent_id_foreign'); - $table->dropColumn('parent_id'); - }); - Schema::dropIfExists('categories'); - Schema::dropIfExists('admin_users'); - Schema::dropIfExists('roles'); - Schema::dropIfExists('admin_password_resets'); - } -} diff --git a/database/migrations/2017_03_29_0000_avored_framework_schema501.php b/database/migrations/2017_03_29_0000_avored_framework_schema501.php deleted file mode 100644 index 42d5507e4..000000000 --- a/database/migrations/2017_03_29_0000_avored_framework_schema501.php +++ /dev/null @@ -1,37 +0,0 @@ -tinyInteger('status') - ->default(1); - }); - - } - - /** - * Uninstall the AvoRed Address Module Schema. - * - * @return void - */ - public function down() - { - Schema::table('cart_products', function (Blueprint $table) { - $table->dropColumn('status'); - }); - } -} diff --git a/dist/mix-manifest.json b/dist/mix-manifest.json deleted file mode 100644 index 7790e2013..000000000 --- a/dist/mix-manifest.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "/vendor/avored/js/app.js": "/vendor/avored/js/app.js", - "/vendor/avored/css/app.css": "/vendor/avored/css/app.css", - "/vendor/avored/images/avored_logo.ico": "/vendor/avored/images/avored_logo.ico", - "/vendor/avored/images/logo_only.svg": "/vendor/avored/images/logo_only.svg" -} diff --git a/dist/vendor/avored/css/app.css b/dist/vendor/avored/css/app.css deleted file mode 100644 index 55eeb5fb7..000000000 --- a/dist/vendor/avored/css/app.css +++ /dev/null @@ -1,4 +0,0 @@ -.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5)}.cm-animate-fat-cursor,.cm-fat-cursor-mark{-webkit-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{background-color:#7e7;border:0;width:auto}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:-50px}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:0;overflow:scroll!important;padding-bottom:50px;position:relative}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:0;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:0 0!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:0 0}.EasyMDEContainer{display:block}.EasyMDEContainer.sided--no-fullscreen{display:flex;flex-direction:row;flex-wrap:wrap}.EasyMDEContainer .CodeMirror{word-wrap:break-word;border:1px solid #ddd;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;font:inherit;height:auto;padding:10px;z-index:0}.EasyMDEContainer .CodeMirror-scroll{cursor:text}.EasyMDEContainer .CodeMirror-fullscreen{background:#fff;border-bottom-right-radius:0!important;border-right:none!important;bottom:0;height:auto;left:0;position:fixed!important;right:0;top:50px;z-index:8}.EasyMDEContainer .CodeMirror-sided{width:50%!important}.EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided{border-bottom-right-radius:0;border-right:none!important;flex:1 1 auto;position:relative}.EasyMDEContainer .CodeMirror-placeholder{opacity:.5}.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#d9d9d9}.editor-toolbar{border-left:1px solid #bbb;border-right:1px solid #bbb;border-top:1px solid #bbb;border-top-left-radius:4px;border-top-right-radius:4px;padding:9px 10px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.editor-toolbar.fullscreen{background:#fff;border:0;box-sizing:border-box;height:50px;left:0;opacity:1;padding-bottom:10px;padding-top:10px;position:fixed;top:0;width:100%;z-index:9}.editor-toolbar.fullscreen:before{background:linear-gradient(90deg,#fff 0,rgba(255,255,255,0));height:50px;left:0;margin:0;padding:0;position:fixed;top:0;width:20px}.editor-toolbar.fullscreen:after{background:linear-gradient(90deg,rgba(255,255,255,0) 0,#fff);height:50px;margin:0;padding:0;position:fixed;right:0;top:0;width:20px}.EasyMDEContainer.sided--no-fullscreen .editor-toolbar{width:100%}.editor-toolbar .easymde-dropdown,.editor-toolbar button{background:0 0;border:1px solid transparent;border-radius:3px;cursor:pointer;display:inline-block;height:30px;margin:0;padding:0;text-align:center;text-decoration:none!important}.editor-toolbar button{width:30px}.editor-toolbar button.active,.editor-toolbar button:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar i.separator{border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;display:inline-block;margin:0 6px;text-indent:-10px;width:0}.editor-toolbar button:after{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:65%;position:relative;top:2px;vertical-align:text-bottom}.editor-toolbar button.heading-1:after{content:"1"}.editor-toolbar button.heading-2:after{content:"2"}.editor-toolbar button.heading-3:after{content:"3"}.editor-toolbar button.heading-bigger:after{content:"▲"}.editor-toolbar button.heading-smaller:after{content:"▼"}.editor-toolbar.disabled-for-preview button:not(.no-disable){opacity:.6;pointer-events:none}@media only screen and (max-width:700px){.editor-toolbar i.no-mobile{display:none}}.editor-statusbar{color:#959694;font-size:12px;padding:8px 10px;text-align:right}.EasyMDEContainer.sided--no-fullscreen .editor-statusbar{width:100%}.editor-statusbar span{display:inline-block;margin-left:1em;min-width:4em}.editor-statusbar .lines:before{content:"lines: "}.editor-statusbar .words:before{content:"words: "}.editor-statusbar .characters:before{content:"characters: "}.editor-preview-full{height:100%;left:0;position:absolute;top:0;width:100%;z-index:7}.editor-preview-full,.editor-preview-side{box-sizing:border-box;display:none;overflow:auto}.editor-preview-side{word-wrap:break-word;border:1px solid #ddd;bottom:0;position:fixed;right:0;top:50px;width:50%;z-index:9}.editor-preview-active-side{display:block}.EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side{flex:1 1 auto;height:auto;position:static}.editor-preview-active{display:block}.editor-preview{background:#fafafa;padding:10px}.editor-preview>p{margin-top:0}.editor-preview pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th{border:1px solid #ddd;padding:5px}.cm-s-easymde .cm-tag{color:#63a35c}.cm-s-easymde .cm-attribute{color:#795da3}.cm-s-easymde .cm-string{color:#183691}.cm-s-easymde .cm-header-1{font-size:200%;line-height:200%}.cm-s-easymde .cm-header-2{font-size:160%;line-height:160%}.cm-s-easymde .cm-header-3{font-size:125%;line-height:125%}.cm-s-easymde .cm-header-4{font-size:110%;line-height:110%}.cm-s-easymde .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.cm-s-easymde .cm-link{color:#7f8c8d}.cm-s-easymde .cm-url{color:#aab2b3}.cm-s-easymde .cm-quote{color:#7f8c8d;font-style:italic}.editor-toolbar .easymde-dropdown{border:1px solid #fff;border-radius:0;position:relative}.editor-toolbar .easymde-dropdown,.editor-toolbar .easymde-dropdown:hover{background:linear-gradient(to bottom right,#fff 0,#fff 84%,#333 0,#333)}.easymde-dropdown-content{background-color:#f9f9f9;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);display:block;padding:8px;position:absolute;top:30px;visibility:hidden;z-index:2}.easymde-dropdown:active .easymde-dropdown-content,.easymde-dropdown:focus .easymde-dropdown-content{visibility:visible}span[data-img-src]:after{background-image:var(--bg-image);background-repeat:no-repeat;background-size:contain;content:"";display:block;height:0;max-height:100%;max-width:100%;padding-top:var(--height);width:var(--width)}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)} -/*! tailwindcss v2.2.15 | MIT License | https://tailwindcss.com*/ - -/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-webkit-text-size-adjust:100%;line-height:1.15;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;margin:0}hr{color:inherit;height:0}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{border:0 solid;box-sizing:border-box}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{color:inherit;line-height:inherit;padding:0}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{bottom:0;left:0;right:0;top:0}.top-0{top:0}.right-0{right:0}.right-10{right:2.5rem}.bottom-0{bottom:0}.bottom-10{bottom:2.5rem}.left-0{left:0}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-4{margin:1rem}.-m-1{margin:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.my-auto{margin-bottom:auto;margin-top:auto}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.mb-5{margin-bottom:1.25rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-auto{margin-left:auto}.-ml-px{margin-left:-1px}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-56{max-height:14rem}.min-h-screen{min-height:100vh}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-16{width:4rem}.w-48{width:12rem}.w-auto{width:auto}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-full{width:100%}.min-w-max{min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content}.max-w-md{max-width:28rem}.max-w-lg{max-width:32rem}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-initial{flex:0 1 auto}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@keyframes bounce{0%,to{-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.cursor-pointer{cursor:pointer}.cursor-move{cursor:move}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2rem*var(--tw-space-x-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-scroll{overflow-y:scroll}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-full{border-radius:9999px}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-r-md{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem}.rounded-l-lg{border-bottom-left-radius:.5rem;border-top-left-radius:.5rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border-2{border-width:2px}.border-4{border-width:4px}.border{border-width:1px}.border-r-0{border-right-width:0}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-l{border-left-width:1px}.border-dashed{border-style:dashed}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgba(243,244,246,var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(209,213,219,var(--tw-border-opacity))}.border-red-500{--tw-border-opacity:1;border-color:rgba(239,68,68,var(--tw-border-opacity))}.border-green-400{--tw-border-opacity:1;border-color:rgba(52,211,153,var(--tw-border-opacity))}.border-green-500{--tw-border-opacity:1;border-color:rgba(16,185,129,var(--tw-border-opacity))}.border-blue-400{--tw-border-opacity:1;border-color:rgba(96,165,250,var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity:1;border-color:rgba(37,99,235,var(--tw-border-opacity))}.focus\:border-red-700:focus{--tw-border-opacity:1;border-color:rgba(185,28,28,var(--tw-border-opacity))}.focus\:border-blue-300:focus{--tw-border-opacity:1;border-color:rgba(147,197,253,var(--tw-border-opacity))}.bg-transparent{background-color:transparent}.bg-black{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(249,250,251,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgba(107,114,128,var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgba(55,65,81,var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgba(220,38,38,var(--tw-bg-opacity))}.bg-red-700{--tw-bg-opacity:1;background-color:rgba(185,28,28,var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgba(245,158,11,var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgba(209,250,229,var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgba(16,185,129,var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity:1;background-color:rgba(191,219,254,var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgba(59,130,246,var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.hover\:bg-gray-400:hover{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.hover\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgba(220,38,38,var(--tw-bg-opacity))}.bg-opacity-80{--tw-bg-opacity:0.8}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-black{font-weight:900}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-normal{line-height:1.5}.tracking-wider{letter-spacing:.05em}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgba(248,113,113,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgba(16,185,129,var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgba(4,120,87,var(--tw-text-opacity))}.group:hover .group-hover\:text-red-400{--tw-text-opacity:1;color:rgba(248,113,113,var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}.focus\:underline:focus{text-decoration:underline}.opacity-0{opacity:0}.opacity-20{opacity:.2}*,:after,:before{--tw-shadow:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,0.05)}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04)}.hover\:shadow-lg:hover,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05)}.focus\:shadow:focus{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus,.outline-none{outline:2px solid transparent;outline-offset:2px}*,:after,:before{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-4{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-inset{--tw-ring-inset:inset}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(209,213,219,var(--tw-ring-opacity))}.ring-red-400{--tw-ring-opacity:1;--tw-ring-color:rgba(248,113,113,var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(239,68,68,var(--tw-ring-opacity))}.transition{transition-duration:.15s;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:background-color,border-color,color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-transform{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.avored-input{--tw-text-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,0.05);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(209,213,219,var(--tw-ring-opacity));-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(55,65,81,var(--tw-text-opacity));padding:.5rem .75rem;width:100%}.avored-input:active,.avored-input:focus,.avored-input:hover{--tw-ring-opacity:1;--tw-ring-color:rgba(239,68,68,var(--tw-ring-opacity));outline:2px solid transparent;outline-offset:2px}@media (min-width:640px){.sm\:inline{display:inline}.sm\:w-16{width:4rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width:768px){.md\:mb-0{margin-bottom:0}.md\:block{display:block}.md\:w-1\/4{width:25%}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}}@media (min-width:1024px){.lg\:static{position:static}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.5rem*var(--tw-space-x-reverse))}.lg\:px-8{padding-left:2rem;padding-right:2rem}} diff --git a/dist/vendor/avored/images/avored_logo.ico b/dist/vendor/avored/images/avored_logo.ico deleted file mode 100644 index 8fa84e1eae69c5fcc7af131760061c787ddf1e06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112436 zcmeD^2V9Na|F@x%7FlVjtfE0iOC>4|MH;U*S{hokHHcD_Xpja?nlwoB5<*)VN_+3U z$NirZd3$?{cK7}LJ)h5WpL?D&zUw^ae7|RW4+4RKz(K$Z1F;qHelG%{2L4-He-H1% z!$9oWhd}W1{s{9S5Rx1i2o{#_;V0V>2n!34bL)>V2?DXr4+B90p0GR(Yy=`B3IlQT zq?jNf{uX>tG@;P(V-heH-gpqSyulLybMI}TV@D)Sid(%+?@Q);_wxk1M}$N)U5tNx zCcY5|#=Vx{9k&NAoV79yZDzPD|1ui0YBJEH2eM$VHr;nx}B3z5iRtP?=%&AmgK4 zjs0703;6%~(M9rD)_RBeae8lF;zyi%8*&PVtXAca?ZVk&gHy3bZ@mdM8>SZt-Jq{}$m7`dVdYg@d#o~4|=;2_- z2@C5PH`(eXoaZHB!`8+*h{4Hn;z$Tp@D4)_tPh3(u8I{~l=rc$rN<58qtR{ouy#wi z#l4``lA9D9$6AW^uIud$xOzl|q4!laTcYAORn_%U(pAm*Yf!O;pDzsPeY!yu_#|qb zU113#kuVW2k${4fFF?v!DUUk_qlQL8*jiY52MZQGZg7^bv6tejyQkCLb7QV>KKB;I>~07V$}LgKb1FIWZG)xYmTN=X)!qM0%nm2j`CZar$9|5{4T2 z&0|8NyCd~lj8pu_++>am(w^Z-c^Tqx@pRD1!&(~yui;)JX~z=BNZH7TEu}<#q8a4f zd7R!H(`rqIn9pH3gO(K3L-DcZ6no2_wVzqE3#;`K8ZR}6_l$j#X)wq>{JGM|ieLmW zkVHZoGGul^_QpYLiZrwLzF1r?T*eV;&&x+{r1A{jWPg{9VVft^nDe-2m^oA~48FOjj{7%Lwn z+I|g(e{EGT()c<_y_8m-{1%YU-u3e;E}RiIqY;zAu}Dj|yxlSk51L+XRNsn}QbKWD zN$w=1;O8%~F-02D^awI;%54{Rq6s8G@bG_n5bVxKI-K0Kp(ESMz$OPsIn;?5%l&3HfbI%=PhBC}T5GU!QeE zY0frQpPysBx(?_+BK(#3uXUUTHA4!~>Uqyh4F&o-rK*A0`el;&Qmlq{rdD>2U=Dba z&<4qRygx?HOSCmG5#uk4!xnMnoTr1=6(`8V2Hc{hAPP~>Jcm3jUfE${iOa=gi}$o3 zFc;?$1%2%SWO^>0pqUOi54XC^V99L~$?W^Dk-nn@b|s?}EP~nCU#d?sKB7B+xSQF@ zm+Pz6uq*xb;o3vE>CekYokmg3Ry6lM+SyPar|%^^zPA{$o+hvdBYS(659L5xPb0Q* zyENm+jZPz79uz|bFYh$=$XKUHhX?!n6Y^q62;+7{3hXheFJrcP@IG8lN+im#!=k6= z9);=9g`FMD5}$IT5F0tWH|QV^p1)E=jkD3R!=L)*>D|&#+*MEqjt8<0Wa@r?W*SXA zaNuO1>}f%Mo@-xkxprw*+>RzcB%RE97E^%svFzP_BQi>vj1Lc0GchY+bM3J`9#Zfn zH-{BL?jjLygF1fTfK;2pvqwj*1~J~)5$RX7qo@Kb5GE&MeVptMBFrB!5LWwKLycq~ z;~qL5>+V(2plg}>AXaNt#}#_jK+VIHgaAF7z&%*Wmo0~l(sI>(r5JY_-?@8Doa+e3 z`gnX+b>8!I#fX;kFGP1lviG#=o_~93Bwc-VTk$);Bxqd=J-4)98ki7(6-^)xKk{k}O55ql=%v$BDsE@pVC3`)6}Ix_l}5 z=0Vq$E9hm~xZOG}EJDC@k3Zp7$G=WlDG7VAr#4E3N~V9j5@t)Ij9~dI*2~HIpmmD` z{w>aEvja~bF+C_>m!(rC+A^STLqrg@N(b>(b(chek9>U0){x<%BOL1i(h2AyDMCO`-)MH zMS>oeg+JDvPmr9qFK+GTqMp8zkjpicH;2qUB@IVtQks4o zq~t{4U>pi9koW+aR7{CaOh_yNF0q=?eyQ}2B3IQ^Rd%w-$Pj#@Dn>-5syq_pSVv_$0vQY?zrNfOf1voDqBv|o+nOYTDYJi zcp$v?Yuwrl4hMfJErw$tjr%@jvjI1mtyJwD2T;Y=T#j3xy;GFnQDaBVVZ$Epa=Z>8 za)!$NspJ`rMu`B|2BV@@K>=D@=?Lum*q3C&gL6Q$N)r~>8($=+>%w8S{(&g%x1r~; z;dn2}DTq||37KSWQQ6;wp%z*or2*JMan!{?1C+!_I8|?CBhk*J9`>zZVBvta~5%~J@IH) z$61VwJV%=cN6C5BOisQ(rx5mz0U?p*T-`I+(bE9RQk3`>Oxzf>!w?6dyxCUKVy!Yk zj(BV`AE?uu&p%r>pVLh_(R5Fod(^bc-&xOuYkhy7Z~hCC%`DbEoz)+*drsm-Dmdzo zfzS5X_guqd*U!pR%g6UHTi)ls;@R`c(3OzPPgY4$!mRrCHX^DKN8i9~FPeB$RwSLo zCu_~y*FhccW92lhvESVn%rp9qIPdoD04J)zyiAUVv9WRK>7D)U;uigF*`rJ`+GP9O zny@TR#b)vG0tD|!NMn$uY87l{4jVeZ`K@uwBkch_uXkqkAqQNYDQ@1mJK%HJcUZxq zkm+uFN;^`XK$7u5doE56H1u~px#4m`l$=Jnh1>etwks%!_tVG6D2V6}Sx7pO z3-f4G zWEb@Td|hX%V+9dOHCmt5v)3JPVwHQ%sE!A^g42bYt$xEfa*vG2r9hX{# zYp?V_b@v{|JJRd#ysjM7-dul=D^FDurS5OIwqFPILnTjecG${<^S!V3xN_Dao2tsZ zFDE*JsM6qRfp^}3rsfk0PWKP-mz6hrT+yjY>bHM*8LPgD`>GE3>`P3J?O11%6QwF+ z8F-e&V$2k<#ZM(?Yks_;X9yXqUR6!_i)9JPy#k7qAS;on@zayHs~;HbnW{QUDD z1OZF0*2R?9q)~HLwI}9fO*3?i<#Nxi+(M<`pa?NR97W!*Ck~xDsJ;31CdIg_s`BgG`daCp zTk+gKfYn?7%B^8d0Y|cm7mw1GSvM!8emS1)5Ps zEE$YP;x=p!Gutx=l&FogfjyX)b2A?b`Euk3o!{2iLi1dgI@Xyd!i;kxz2Vz6$XC2T-r~9w;o9bug1#h z&J|qSxc{+KXt4!>|8tj)(8#M_PsH78+FMInjF7e7pv%pyUtvv``-wkf&CQEtqC-6w zH0!e4J9;s_-@WSz3#E%Xiv>_Fxg7TF)#joN(aioq*Fgm*OR|0r*cG{X(0Kc;llC1U zQavUOG!6{ArJP0R71Es3WaLCT2J1^o`4|VshTj^ueK~+7ck`gN``$vl>+&uek3EUC zt#D+n>M?oZ!+yFq&XwldMF4ka@_F2w{bgGHo!q2kCc7UUWsWLH@gX$wGpMKPxS8wrkngkYlGCjn>CS#>*4!>}?9fGRCtCR@dA4$ZtGf-E zCHms!i*-X??pCZ}J_#Byh4)TUhqumMwez9v*bz(5Ky9kH@G;AVGwC>DjvtIXHT& z!>sQzUoVV!_aO(=yv>hEK)ch(t%_gPq?v#8#q|i%omHU`2dl@TkE!JCkO&rgWo;Ug z_OMw4D{g=P$76mw63_8Vi?36R#Sc#B&rc-|rPA$N`zB*3x_~F@I{2s}6$x2R2|qQD zRsa}odX2yBfk#n_(%a~PBdd;6atid^KGeXjPDJD^*qakA9Q^R2UtUM0?MCK{mk+9H zt&Ti%?Uq1--zF?($Ai|6hFC1LF&69rd0!9Ti{0K38Xnj@fEl4nZ~LIvxNBP`~+`7{OdRvbdt_IGV~eZa-ek|vQDFIE;#GOsh-V#Pw1-Sro6!{&eiKRDsz0I z)vNW`JPrGGUN;rB2r%O)uG2yI*3*1$bSU^Tl8)`t+brbEel+s>nl(%!IZ_gQy%`T| z3nO&&Y4SytZBuQ-KJd~9IuRt|6(hK>0oxsbp}NWgqO2N*t{=(SScpDJhR$U|&z?&rCGk z7KTG_bdST*tDztq;VewQ#{6L*AT$3Rg(g$I0u`R;^lB~=+2?+x{5-`+HF9Z3t_(|@*?Q(` z?3#_rUkc9`I(>R)pWKP_v^s5-ny21b#%D34ItVMZDA8?Zwow$|Yd*(meAlG?u;!*c zABGu^DCsb|Ri}~4z91mG`GmBq{tS}sk#z6nkK4P3N!@{&bny{Wvf<8;#M~!$@9^Fc zr?J-i;;ZYQnJtd=242`C#i~|ui48CEjK8b{8QJEWmoUeKW8LNX$gMxJ1Wxi8Bw@2kEu)5yWe$vFS?-cCn9oeQEat8R7I zgL-z<8J9ZXiIz;hLGiJd!|iEuQv4dZeqJn6NCLinx0B(*+n;7G(cPQTj*H_ilP1E4?^*$!yO+S>e#NM7XhQHmxg<-5m;GZhxUe{xQ|g8)=a*YjB-N7lAyw zZ)51Q&w_?GzI0X}JEY^M*7hwiechf|e9Ie(CN#|;&yn}le>o=h1KT;Y;NF@`pj8wb zzMa%f1j><0e|6I93|ow`E<@Vw)8Rq2ct={_Tn`ZQ*%o!-p5_5xx+o*Y_k-OS6>9-F z8zLP9k`bvKdM7}W(U&gS{7`3-`BQHm9$kDpv(V7SgBR|;>fPiBC}5Y^DZZ{WYSkrA zmK+;GWc+aU2}&L&Ki%Y~vRUthf>$#tiVn8EJZ&)A8ttW8^C%Q?zK|y=@@m_g#sH(& znCpi7Nz0SuV60-&7P8xBHffStr-bbGBP!Gg&g-$HwU1>6I8o5VtFAdrZB7te9x0o} zPfvdER@B+ljIb06`IAW`uy-5kMdSs#28Q%L@k=GMcI)Fj1k`+1_fYuRspzaWB4ZVZ zb#;_rHD-GMHTu{gU1`R^cea`F#4=bw??1(F$BKA_vw4$jGFSDL#wa163$DW@%4zOQ zlM)%E@Cjjv7xxy{c<12d5R|y?xpDdS!PmH%jy9D0PQ=k|LGGtpAMz~zLmlD12m7P3 zb(0R%M`4?D5ADLlieNLDQL=EY*$ zQ%d5Q-(H0TS~#RO2iCWIJ$CS7hU2RIH8&Icwg4q@*Gl+ zLSMDjVh;sQ0TY)UamkwnLn+(G*2jvQIr2h$vdT5d|coGI*?%wMxHI_EewP+nT!3- z!q1j+w_UM)t*ES0EH9msXNxha&VOpixndaqZfYZ`KlUbThAE zjnbvOATOs=y7ZltoX08H9_<&&DGc4Duv2tvoQja5POzfG2dzk#iyC^EhN@H%sxfXv zXAwwmamyM}C2)K5Esms*2ZjeX53G+%Buc1zD`g z1lU@#uNU_`*a5mhF=sm}qrP?PuNH$*l(%I`+t&9Cr87tzJj9YjxcP~!6Xp6C&{~OD z3;K~CEGl*{X7Y^2)>6xU5w52ZT$xIr(75BO8p09wZswNd*}}AcfDt;-ORqMtcbi_mW)1 zybWAgl;Y0Zkf+lnk2bO6Vz)d6xtJMnq4 zd-GzcaMRnHv=yiFWut_SY(cQBO?|@9^R!8QbN z*a3RhOm-sBSg3~dsyJR{MTC~5e;X)EqU|g*52-B@Xd2M>dwA&dVZ$9+ylQ#H={E=- z=P|y#Z^J`b(N-?1@eW^wL5gU^O_TAfUj+f80rwlF>~qWqq9Fz6cE9F#>`=OLK%p&} z(?2cz!J+J1Zihk}j5dSMkF?|kp|a6q0i2C~7#RonXk@l!YmTX2EqbA|jhJ%ZCM?Pa zrdmk{4qQq?Sw>&INMwBS6Mo|*L-OZx)-)ltD%Y;=L(r?TcgR$FD89i1oy>FU)UBY; zt)&w<>Hhf5<9yiPa;y%Q4K%wXY=5!rn-`zr9k*+1J|V32_ql}-GAc#L+U=u_OuCU< zbl+vq5xZ=`>@+IY=&`P6_L@8Hbh6Q~)|#%%IT7n4dYT1CnQ<&rsHI%|Tse2Xf$Q1* z2iAgdsCb?ZgwMs+;Y6c{EEu|%W4|^>Vlj>>95<;IR-rw$TJ%)-_Pq6=4Y+14w0EsOj5?sdv1%!pZ9`C7Z0gYa5oy9tEZL+uB8s zWbF(j1f58(j9vzvl7`{OXP?P+M`9|}1xrr6+WeT`5y^5xnF((r!K$+eU#78eIlJ61 z0kTeJVRz30)vKY{ea{h^hTef{(AOR#4-x9gJOpg;I?TE!1$Tw;-yp1o_PI1D?&@va zcLcQVRl|L;7dBRehxnD$e6*DbYcP?s^57Nl|BGLB$8q{lspgOCO?43k1sRE;E2P!$ zc%;eBeob@-tW+CbmWwGXH#?L_X5P2SYu>I@99+Ub5a_`|>w;fFlP|lEzle4u55FHqn{s#>`9#wrH-$H2^u-k0_Cbco%Z)7y9kZHs)zu+1DQvFL!H3aB`0kjsK~uBJMd?KCMs8XM7lI^s1i9Au>Ls0^d^2w$9T=k5cXFVB*e5 zLPP_$=$e!fgCjCeE)ZANrt5Fmly`opXLqtRn|ED7`Pk@sgAIXwBqhn-HI=DE_$nLk zwBvMaZM;3?^60kGtgg&rJ$lB8A0DFCjDBR;Am`**D(Qq+stPTLcGNJ zX2l|9TdX(SIkm~Wp7JiWRhX=p7^!^X{VMJ&4g1tGRFz~v-zsnvEB7|Jlt|VEJ~fp` z)Ea^TQWx*M#6f(scTK%qQ|@+Cw_L1iwEw9>T*uwW&i%Th;fmqZ!4bSe8DwDxf*(i- z$1-}B2yv4m6T#5eZohVEnPWTdskv8taB(GiWg@Kw^m8!I#Ro^29}XYC5VV^7eJ}Dj zPzH}GZn1Wa!e!YTW3YW6l?>xfW_!?g!U2YihyAb0*&Q67c=Px+)MZj0Y>tdQR&M#Q z#)a-GmpEyb2o@sfgGP*;Nv~!;M;8tlKJ4&3AbG-9>{NZ0Rc8XQt31zGQHIsXBpeTZ zz9s7x#?TY@Jn611MA&E1==1H#BEXgbqp`a|H&LaR0FW6i*tdVps{|&C zNR68e%hlKWlsz>Wb+)$?AmTRA>*6I1_$AB5-u?3YJkUmhK&Q`kg&QG!G0vvzls~Zi zT+6{rChAjNGc27Sf}&AaDQ-g?DoGB z^k@WFioOwx=Lv_sLnb3PNoieJW2%af_!NP}syv{@p_Z9K0Bgb9$49}i%W-{Q?n?n2IU# z<*PdHAi@tOUe8`#<`57zb<;c?zFn7qSGW;JP3}4wV1^d3$7rq{0ZoSWnTD!+;*uht zwBA4yji>#c{F;-D!BRE1F%Wdt|$R1VPjL0FqU$nO5 ziYit%(q_GaF(on=S@Thci6Uf>wezs~GqY1!(ZXNqR}G#+&w2|e4v##P9A&53CzEU_j{Zi3*W`yFtAfh zk}+~C9;4h1(H+CeJ66|nvFiYNawCg!x@tKj7_rtXm^1n`N8*|Y;N{Bm4eoljk42x> z@5!ThMS2=wP29x7MQp4&>ZvCNTBK4otK|Jr7riwpR~=FQw4S62yW>JWF^w(8$eYrH zLuPwfur>=AYQMwFuykWTkp({WL77dZ@orykl7gv@!&yuU9i{rX$Vi(tp-;4V?XPXW zxAWSE!H3dWq@^)8FI~B^m*sS<`)-$L9KSO`s<&c_>eUjh}of{bf(f4&Skl9{PH z>O9f_WxEy6vX z5Iiq2EoI-FQa1hQO3!hE4QpG*J6@JN+tQF;`Qs5}NIHS@=k;syWu%%vSlMn>#_3DM zjfu1JjNLqND_Tn?RhBa+hBVZ6RIfrHUzTZ`I{3cN;B!%YjdSVw8vUb2>^ew?vLrqx z3x@lwTWvnxd+owX?UJ}1jM_iV3wE^TfEhi?O3i`Bq_sf`l!uDbx32;fPb>FRhoaWr zjzeV+b>B-Vgq!U$bzY0V*0gqmHNC_q;e0c05wXqIvHbgZfKuiJv}OqKP4hb*ORoDu zJUWbzN6agY>@fSwBhA=W9r>=PQr-`fO;`W88VgC_8h1EG<>p0kHw><$H%@+uRN7(^ zA8U-t&cPdbZPlK{hKZ4X^pp8IYKxr2Xt&d)wr=Fsm-{0{d=Ja5|5{WP%a9pJa`i6# zX#~;Pjbj?sXR(pY3Q|%+?e=R!1l>@ZZ+sQVkjG2pkM&Y>B}Y`?svRqcOv`bxY6X5(sNE3$Ns?y9eHGn{DW0BZxYOSZsaNyj-(Sak4?6J8NUy9q@V4|B$W}NLK zBRs6LfzLh9NLckLTw-? zn=xD>Bj;L0p&CP2HkGQZ?Iw4Y^g7^XVi`a)9 zVa6R5;tw4(i=9MwJm>DO#t3}uE=+)AaM{oNTwUCd@bU>x5-MVw)uhNvwpCShash^bUH)8=onu_n6lLYUdg1^wAOhOG-n zLB({uu3}xp*?wna;QS^QK{p&ZLZrj6)yW;}Hh|G{soSp}bvRQycbJje)R(vnqV%q5&t-o65wRM;1AXq;W5+2LM&?-J^_)dw&NLj7*>qlL0Z%#oA z-L?;jNm__@<<0q`G8O&PrSar(?~j^E%{0(0Tn@q2#sy2lw=>K92V#r z^7)XTR}V4mM52Hb#B=9ruwz6z!)Qz82#POD7^%p0x)4o zGgPd#Rh2qJ5ToSTJ7749RlF$bYXzMT&X3N=Tx%?L4b3sS4!f%7=k;A(pCoTH71yp8 zQ=!FB*7_8vz-mo}jD4ak$w4^{=3I_EJ zd29HPWb-S`x^oo)LL4XJZnNQkLEL@Q9IGXI{Tj(YCUf4|t@Yhc9%|vlYiR`<7qNgo ze_gY{g%bBO1%yZjY5n*4v7rj*88%aF-=67WWrgi2*?fWKp&nab^9N)BorB{;b0&(H z&0a?Qm{bP&1;qz~uD<3`BXIisd4Go}QQN4JD;OrND$y-;u?c^hAG`ZaH3pkXA$u#U zbqIs^-U9q%r`C>ryoaIq-r_~pPM-}_;`>?j{lHp^>(S=MwrS@P)J2!YN(hjZ-IZUQ zF&Kk1kO;0qMJ?s`qxC~zcE}6UeK76zQRcB16vjG?_w}jNTVaKKCOBY0Z=7OjbbELE zYEd5oqO?=Wv6_tG?_>!^0*6CFKbL{wdr&K18>SK>1b6Xb4Uo`q=k88rO#K?WJNcA9 z!g9B*{nLUxfrDG$9!c6<#Al1-ytE5R&S!6{5FGmsVM|hPqf_=!o7vpQV}1GMO<7%C zEFI?gvc(Ru!`-{vJ1R519S?ZCE=@4*_G>ib%+^wus)z-x$L0GC8%UTu*hlSp`RuWP zUVM*-ZDh=FY`E=oI9+|`?adfOg4oYuwVb?hI_~Om939(xzJ)@mtdeXWcE6O&0psCJ zV<*hrSpB7TMA!)gVmqZ7uiv&-I823MPFTVAEZHPua}uQq8RoqmH1ZMGkXj+JF`IT9 zRmwy(HMzFC%K>}k%(nvvOd?XKD%eA_{B(-c5Czf&C=(n4WPYfJ_xTKR@GVs&R1>lA z;K2dMq{N%4&skY6hiFo=JA!6dkK-B=KOtMk*f7V9jp8_t^%}otW(yu>uv!u)t2?e5EhjT6O;G zQN(=i7cea=sW~^wI8%kh))2g@_phn6!ze(sKgm(Ss>QPUwU?&mf7OXK~I6abe zJ`pBhug<|Je;hP%A+beH{sFdGr~zj@4=v7)0E5F0*{B^I;hzPm9)s2>zwnJTm(l>H z>gCH@-=0Q_g!C3&k1gswVOO5w-+d_MW@@_(cyia?8JC|Jlu5xSO3On=8V0^UFD8GP<}I0WNP@VpzneJsnP-8i z$Mp9qB=;ZY!ou~z4Z@?*4jpyZ`b){W9J8DuH1ytf;=_{9nt78s+a9IAOu5}*=7DMT zP{c-&{VW2(XP<<0^|KsxGQQF!1ZqgAyXz^6z(C2d2EhRVCxUZjgD;;J1Z-(`?7*UM z^7XJ9Z5C*}MYie?X-BEqZntt2_nT$~LM~0I6Io;iO`38_4j1?fGGIWpmUrBy_=?EjJyIYOaW34-LMl$4r?IEd%A4sS=S!A&e0B<875S&9jI4Q6 zZ%%msg4Fv@^adBRwg+NwCK}lb29MiW%SU!}ww6exYqGY5M);*0r-`jaY-sVm8D*HoZr5}K5J9W@1dHuzHgGWp<2^{ra82jl0 zTd?*Vy!x6vdo<08L^he?^C!$8S!a^<<@&fA#JOyu{i?7sm{BDmsf(C$@m`X=)s*!VgI61ClX>|BetF~x13VY1HBgd=tDog6~rJwb!eQEnay zn5b4kj`TISkiN70j)WP@rV}Y{7qwfy_H_G_g2f4R+H(CZ>9kx_Bh~Lu9aJZZ2npHR zp>*Fyf&FEX@yESSHs)*rYrB!_D>(OUOyG#p_s8Szr?@#f?7~ohOF{JQ%Fsy;oh_io z1AV4teFtU5ncam)?qLMD9zYu3F_7)5cE0j>lhU?CHNr-m1C69kRp%_gXl^5&^T|uC zu|gD19yV6kMm4DlsOTCG*){a4J0B4ZkUtRXcS;$3fybmM3a0H?Xup=LZQ!O(eyF=c z4>f8ccu-lEu#Kt;4rT{DgXY8+IM1k6bl|bKl8z0~qXqbGpwN<&Il)U~GOM zXKdKpU}HR>2RjbXPy0RDwL0wWNR@78zhGkGL2I=DS0?3MER^@{U9YHeiJe1Po-28= zw&eM>o{#qevb`?2(1V^zUs}4VrGOBCH?bp3W!1Rz^&6l4`THB>t%ws>1$65a%i#UR zdKJvNm|(||rgi`gHlyF7pV z<~_h3!`>4$Mw!{qJQkcP&A9cRMcvW8BynrvNH^QMma1|wsq7Jmf4&wNS+|a3lil1} zt#4cC=pVNkC_TIAU!PHQ>M&c&&%e&jpQ;E~``K74VoR?FxA8M02Q$RWbIJ8|Hp%XW)!#B**IGh+c?|gy-M~C9b_#yr!St- zAMe~7iQhfiCx`lWzuox5knxu8!ze`e6&_mK54T%!e!IWn=N1S@6me8U@(uUnrYNvK z10lpOb}WKV`RXq4-x|IEn>XO@j_()T$?@m_``ue9Qeb5KOFeOfj=Dh!+}2> z_``vv;{XbULV$ZMxKE6Yp&a}B$D-@&hqJ$Z8~RpMG+0?#IaJWzKKgcec+4N9(FZpR zxWRt(|NaH&zyLP|xaCGiQSLoGqwzI0!=Fn^hRVKv9jvIX9{$qRHJS|K9)dLIz)cJ8 z{|Q44(18i=69WTd&)>f7>$`os4J9jEhdO+?3bk)v#Xs)-`zug_g4HN}{YF$!P!|f+ zi87G)I=HF-i?smYjSp@WAluZqxSo-#S6fi0PSv8=*(?7+H{`>iLzSo#Cu&d@7R{*V z&%4K3T1GNKUITCw|3_(ub^avy#`E0V+EM)c)&HV-s{E&hVSP|jYd|F>^$rXUj`@P} zDE|w*0C?hp+pw^3unx+6y1G7<)~R7Own~(-aT6*hXP^zVmsX%Wg8u^T5J!OPmcG8R z7%#7mF>daEf9F$aolW@6nL1QPMt?gfTMOK1+cpB+4mLE5rw;CBS{X^l``Q)yXf81ll|xeW#SlBWO;Av!Sv-~-z`jg*w$ z0Y1LPsq>Th1;3-1n4S^P7FYu~nCL|N1TFwCnbg$2ejc91r++dp)YThMZEYiI0N(lu z*em&j@&LNq4cOknIyxEG#r)68`n~=G9oZMaT(y!kPlXNeISKmdL8!+pCe1UIB`;rx z0ywR0RD23IxQRkpBU&S#Yc}WZJR$6 zFK*r(=Y!$2$Sv_pKs!TPT7UOq=y@~IH`9CA7XUkP7~lYW{H@$IGJr%?HQabkCpf@ zAyJD0_U1Ey&je~q{sgcT?%Y|vK7S^@Ub@r-`vLPMCwK|~$ZIer3 zo?0e=BX4HbjF$3;_W01ySO~yzD%uMUgEFNZ9b3_oZaBvb#zLPhn8;Za0Qhhj&dblY zt}b;xB(k?3;7B$LQf8e5)+eC%B_27lGUJ@H;aPL@$j4a|w19+w7uE_2=+_5M@JLs; z5uk`NSpbRu$_mQc1;<+_V4&j@te49F7vf9s0^Q|*@L(leJN6CWxoGPL!5G^uWo7iO z^RPaGd6?yrzu`)b`OoItb9aYJg;2*Aqxyq#R_EsrHld^5H<=f3O~hi*`@1p#Kct|& zF&Q?x{Xc%Z8tOxl0N3A<^V@h(hOC_(dg^@>e201o7>|GYTVfU=0pJJIgP~NI;|VwQJ~K$8X&luj7*Q zp>e)>U|j=k<9!(!^lux%-Yd9HZtGlVh4i(yj-<_J@6K|3^Aj*&9|z_npz?=17y1?> zEr7`y9NdNWx)B_!2G_N@&#-Tw=18<_WpHZI*_$#kye0NCfyeJlvpNhhcAJ`$W{{`(8i zLHHgv4ZlW~H2A6WPL0^s|5qLwHHfK3SYsJ5cJ9te2_=I>t3h7EuwRZC0s*Zbi5 zV{nPjhNh)V1KP^Fa8Li_x`~ee!Tw382X6lrFF-s7m`Bav;#%IlOmpQI+;akaXH)@v zS9~8Jz=1I=tZUi#K+TnB=g-#zR8jW7k^h09pyl7sHCI~T{2REee?`l3#Q{7JVEt(- zx{r}VJrMY0fP=y_>Vd$f^^%lCk39{)suS_?y@P-b>gAI0@8AGjREaPq<$Y zTr$(q1KyK-`qbZv?z#;0kpuL;=hM-!Qttro)_nOg*z~J9iw<$HjRJaLGQjs=tOD;e z(RE$pWZt>Dj<0PH`WFE!`~v8Kx0RI8dyNd_HahI-nk?(7 z|DoPjQ882s@Lh4eZ!-Vje}L02z+1G}17RHn{rv68_ygQIR$?FjRQdictfMnNr@id^ zJty;OrvHG42Qs;3floQ>-+feg_}ws^C)iA^){$X??xF%d^t)A|f?#OjP1L{e}K>7hu0N+|#xZ9ppP3900DT z;GFAX$Y`m`fO|!&s|UvChL;M)Vw5W;Hom7d2!2=pl?&jy3a+_W3Eyb5}>odLLu-n)lBzS1CX&z-9WI$zmO*+cnraJ&a+j-c0`M(EQH%u_s` z58u%x50F20S=mqpI_ZHiG2JM7`q%%EKQ8V|RD66Z3Z2%lz&*C$;y@Q!&KD0rgN3#> zdgxbhUwA}B!#`vXzkhhk%jclb#lH{KPr-b24&dE<*^V~(01XuIY=FuA+DiS0HsA5% zpQe>RA>k{a7j!Mkxh)H&53WN2mnPZ>ae;_{{fXf#=_?z`1AbF)-gKZ~TR-v5PklmL z5YDkLRDKK1pPt?i8~?QnWINhq2eb%yc&w}*2-oy$X??f(rpkRHOhuIp&Kp}T z^j4;AozCW)D)))-O4@?Zmoqrm=o8@8viWjeu1W%E+VuK$-@roq#`)x*&gPqt_tYoU z4-yhuQHynU;au>A-&P z-~jn!)z%IdEZ2Ig$@6?uW&FD^v;~)Q+zR-c7+;UJ5^`Bin4k_AT)wn$xUn}5#p z{Z8IfnAp86Z58yP0oJ3w1HAd4)BC2@EkNUXcwXdO+VJ_Ng*M;%^}o0IrpkUI z3~fPpzSw->&o&?QGX*ZCsl57M4a2jVPM%y^JrMe9c6KhGajb7b#=m+lhb;)lCV-zg zxFKPDKg$2A%qPyWg3xy>SciOPGJpQp z{{#7B*4GbzUaI|;LPFK3@bKy9`KFWeuiimh5bhhFZCgIqbiltX+>g5Fe_iHN=>s%t z!?Ww=%CFg^_w<~*%{NmWfVSXL%?rZy2Ee~G67XUwd;aIcfaY}{KlXRcMxJv?1KSiN zvK_U0b=-pb{>k-Wscb=e`|*8<%W`fPI#wvKzR7#B_3JBFpv{-RXtIa(fSNiPtPfgT zTM+7f;9Lo~p?ftt%4Rum0<<3t3|zc*caW!V-pp>EZ}Rs&oBw`(HK@hhBYyVmxIZd~ z<=`{A!hro=Q`1NmocEeb8$VN8=-c7WorT$aGu4H~wgsc2#`V6P=qj7#!VA;^b=YRl zB-6RPhx2?3wfSa}|6`NY=NjukhzM14a(|aPKS705{!uAV79i_N<5FXfyht4utPTT-5_C9?& ze;=Z7pBxg|v8XoROm$$PwjlJ`4zBCV$zODb1^5Ad$*0ZNm%N3=;@f;P$$z1?;LDdi zqkvu-beG9;;|F+hc0OkcP1t;s_w&spyTy7BZ9%v{YdSsTSMT6nNZ^0+#d7oZzW@)& zpCC7P?!M%q&9~5bzPZ*5PR{qJ`HWlq@Yyc*Uy#R2;0VS8??S&kzxsxz#sNDT#lWzz zdA_;IAEt-<1?Ms^2>nl&mJU^ddOq*-=vG1|%LxR9;@Z#=YI_rkUs|SA^K*v=WaotcuQ^b%~UVuY6~VLjGsqK^g~ zT^_Xz#ldUFrki)vo8y zyGJH}@00(pgv~dT{Glxv5HRx`_Qi|iKHJUEg}46&JYYWw^uVNU#$e<7i9-<@df zvmKpeJ{cDve>`}$@l-t!&hrTir!VUIu7%bSXbYyK{QJCMh%2~`PNwV6|Jic@@a`YJ zlj~L*2dmx6f+>gK^)TmzI`8|NEtb`LeiU$EwHsR_Igw^yy5rls`Ux94apE z?>-R$lf&6j7 zyjc|-^MQVQ*Q{B*eH{~R_hLPLeQU;jh{7{Pz{UOlLqbbWCE(?_FZp-xy3qF9hjj@0 z6^45Rz}`mavmI;cIrIMm0^lW8e0Ac#A1HvQqCGt$Xx;w@1i)q8s7L>Qq_TXJ0=}*q9UUv% zu>*be|FpDr=);M9`MC1`3liY1jih82TJ{0ZF6rzX&ILIB8Sh)7Y6*DD>gtM~1|C;4yVlQp*5bcd=OC?n29f=L&%9f7WmFO3QpId|(H-iHM*_8?bI& zJlNOKTLR?&XFu;$K`l`j@OsmiFI_Eg-Niz`-G%1Ad9xIL`=^(P)IY_}zyZK>xx07E z#}+ETh2-bs`+yo47<~$G`P1*uAg85z4S0?i85wgwdp37P+5k8YU0&W-2=E|TDjNTk z`)dvW-sAN5kG_x$YIB?G5iy|)EodZSOew-Vq|2NXIyamb|fk{ zw-XNZ|FQL#TDY?;AGQNSLt|c07lZy<7t*KyD({IC8DLFke;$BGJ4@95BwHp90GVKb zTj}G+_BQCN?^kl1YaAI_66*f_%2A+iJOD5Vmx-i5VCKOAARkJglLrI^)q?$FZ-05- z=kMylrcH?`3yZH{J4VcIojSn^cs{S3GP2@xmH4mivSbIjtI(daB$S8prHF(NJ!lfT&Ja@laGQvJk-_m z#=mhNpX$+f@7kKXx`tywdOdK{fcuYKzX&owmm;7%!Mz^btl&NYZUu0k1~)gjsldGo zU2y$_#~%*-;lLjb{NcbK4*cQ39}fKCz#k4Q1qXo6yVRF8RJy^1z#4yyArMyZ&&c?K zJ``#IfuM%r4g`Yd#}gMmD-a0cAJ6fO)(FJ-dn5ueULfGc#Cy0h5ET3KJp=&56YpUd zfcrblGY)nfk@5G`e}@4&;|KwC#u1t}3=pe;@e}zbg~#&&L?_}W!pI-#$HM^esbT9W z@&5<|f~SUIatMFCJV5A_@HqLC;(vz6=|Nac4UeCRzKu`pq@bU2cpCkh!{h9m6#pZP9ES~lriRDa^`j=k zG*iRl?3xt+Bm9#=Q^VBX@%_oLsbQWe@jt@fYaD<-HEi`g{Z9r?4S$dRn}I*V6Ab*p zo*y;vC%b+!=x4k&B>pFRe#ZY`*N+TegnzQogr zMBX?-lgJxyLnfg&-bPFU2TK0YH~xfC@sH#`UoZU6F2Gt|a9e{L1F;qSf{S8o3vh~8CZ1OK( z291ILvBc}wTdS?DTiR`HTWUN!+EcQ#2h2hI)_IUMt1JTpWBa|lIzEVt&wRc+FK-nJ z;8hF!qACJhW>xNN5`nUafWO7NIy#Mm&{x=0e|#_u{mEUp&@h~s*y{<>uboY~vrPle zby87NYZ#mk?sV^jg=>KS;9g&V$Aae_z}X43_wKb9LVvT&~ozO-Tg#7826+3i`*H4Xo+XJbKjm9+We$Ic|^- z5fs$*e7bVy@(#3*&7drTDdhb&*w!{8CL%I(TQeIRjvlRszWNk?3v8MM0B2eim4>m| z!1+}g4vtFHw{Jt*(}0-q73BTHhaInfRqkx#K--ZH%bV*3d~_Ntr0z||&&8!}PJ8G8 zzPo`h=mqm0;-IeH0Qc@w&Xs=P`#E4T4GZ}X{YQfKm~*x`fIjTbV(}if!$4;dpDpZ( zbilWL(n4sSnl~b%+i#-mUp;}W@GUKyTc_ql&|M`7Wh{;yyH{vd!Z`+mMK zrppI?je~Dbl2)l{SDBJIe`yo_x1xDb5ZNr*|YVq-GjrR3%WoV zTfn%(&|GQ!ReEUGfODhxClHH?>3R68^z(@WV>QVWIGKggJ&_;yDC8FvU6?I8l?GU+VBG>fa5bTgI5mDD;cM4g;Ndij zb{-`t3ln^^B@4l6YF^l;fH6x8;9EUsYTQD?u-$w6w$FY-c8m1{XO|f*wmt~j{7z}< zxt}-uEB=6U$YHxjw^(#flmp7#sIT8N@GIDJjk|H94t4Qj!=l!GU*C>b0M`k$7xf8s zx4F_dQ+jxIptyJ@%D|v>(ddWgP`9^_N-QeTlL~`#AHN#^pNZD#-kX`#ji2`c_w+4R z-w)20g!^|FJmx-$;=}fSxd1ng4xgQ`O>LnogA4LKfq;M=}COl^I zUQe&&C+(02aBs7zY5jtD>gU%P{SQQ!Fc2Bp{dhKXPL~Fr@wazx>Obg*Jh*V75H(*r z1Gc5$TshGtB>5jjgLaVP^y&Ha+eSu}|Dqkz4}DMQ=*+J#1ZR|0fO8P z2f>(r?sW3~)w_v4Z{oY3`kYT+2Wb z|DS!{RJtd^bLk7=I0CRu1s9#LSr!Q9*AL8AchlAVXP-Ag@6;#k3r$RB*B64d0sk0B znkCwcmJECY2v^tk%*k?|?!Tg9-L!q)RN5!P8XCXv3!yEVn>%2E(YKP*KM>-)Byzr*yp{SbGtW{7gPH}u#Uuk z)<`XLLa=VfWrF^>_IXq3o(RLfP)qB(T?p3^0bf;I%S_g+!GSt3zHSSyIg*vlS+MLU zc%ZFaHa<22Y)^aYeT!NBZ71+!-Z~#1K;7TlyBf}AW1};Tzr(G!cVw@o=9jv;oa+K@MlY|b z7l8KvYwv1+qPni|Dn>F|h1ibOXu8olc8pV-mWZ`%U877KP-Im^VKkb>Ofj7%jQ?62 zFg4@E{4`@HR@(^v!JnUGBU4es@=h z9Ut>J@4k2MJ?Gy0?tS;3`<=6Wjq<-Ao}(Ot3JR(|7(f1??(Z7V?_XtRo@~VL4X!|% zF5A!Psyc+<&bS>rs^5W+#tW&b$2;QVOC*Qm5S95ZzHx_9?o}vv5H_@{sO&SsD^Lg| zJA>e;o$^C%iquK>spkDOmngLeQ3xaxDNhyyH6XJ?Mo!;-#eV`wKZ$c8&VZkY5ePgu z?yDL=quQW*NqG0&`VGMU?t=aE9^gwi!TxwUo`pS!L>@6ECCyoHzFC(KUCh1>8*cn< z*RIBut*sqlzb&x+c;eMpYxk4AF4LbfO4#V-%dee>{$mQ2(dvOTQG53`<^UI4PZ&9t zFQd?@w!=m!AN%Mb`3yL7rX^wF!kU2Io8>Fgl$5G(uurzgiu{nhXMTQtKIv1%{P-|o zp4YCuex|;@eUO#>Vc$M5JNwENJ}!DzD55f( zEd$!^9hTlK&CRVnWQGUc>+hpoZ<)=P;yD}@(y?QAW}A^8GW3N{3Cnh_*iY`jp1WZi zeE8w5Rci0MQF$Diy1MrGP%)d(Ow6xH??FpLML zeJqJ(dg-OBUerOfmAd!WTMyU?d&K93pf61aeR>QDq7=ih{Wj|kOX;l*ac4AV}2`LmiR?PD* zqVB`ibyNFc-TS$fdZ)Mx7oL~*X=7qOlicp$^`~Bb)Nk><{;k!z){2j{Lzxa zu;w@%*k?{pFO~h^>B-DL!#wE@d^`-*lE>vmU5v9ZAzjrjP364~kKwHrMH4)H&z`(BZfo6iS6Bn$QUQ~P9Olm*@!_Wm$xG?r3& z=q8r)JR^BsR@ORQuOH8v;2SeVxmnmZ zmTLE7_!3a{ffLC#fd8sowSFv)nM`JpYK^6&qlE33Gm^5Z<<-#8{sY+71likXWhuu@ zQEnEdv2@Oy;5JyX;u@`+!~Wi?$;{uQaT#`rd-!*V^bTrcCX-pD;#f-Q(Qk8jKKJq( zzIKzyhY~A;)|e^E&B8R6lKlru58Ky9^jkySPNd3&Hh5^sl56J~|G9Iu$4n-(NVBp! z=cRAIT~`n(+05pHJ%%+TztNZ}%FV*b$tNVz^Cc!$k}s@ZnB^O(cxZz`unlQ-yDw;d zub8ZA^pQvYA^d+L@l->90UdPQ7~z7F?9z+wIrgAv^KJJS*|J z=SoAWe=67OuU9reFEyaMxWM_OgZSwx!3I>dohcJ|9 z&o)kE`E(bpt-U)kF77}plglj4$T&$pAMcq@5-atwb!)|Igex>F`|#mkwjVf97q)J} zii~=3QIEaz^3MIee}CgLz;32}+qO!DpFO?2yXqM*aJ})H^RJ8>SJI-^4zwOlNjZMy zhqA>vcGRJ{|Di3 zR}G*|aWH5RD0UorAlyOFu3Vd~jebhZX|uHu{L4-ha4*pM0FCzAVkj(9z`f-ApmI9E zzGT`%rfmfGa#H>{7|kWVI5;X%82@-m@&PXfv=~P{1j9m@Q7^%;5awtMg=H9)lG^FM z49D_OCxvAg7Dr_m7Q!6$)f?_n{J=@@ED962j;O~^>wyBJu(G}hr}a3_i8uo|tyl!^ zgM(h2qet(I#d`2X=ysOCFX=?wGmY~=+~_@f8dIR(T?YKoV(hp4$ZWBJR~ZbQWD&nV zGIlK4W!Ic4D!Og>8yWCZIVm&q@+DrEK)SottFONYztVm52H*MnwbIdj(t!eJqB%cs zyK74H($h2S+ccpbF#;$L=)!+ugnOd&*l+%`GG%9I-n`4E_M)+_4O*LEU(yt|2pAqs zzgt;ZHN{5dr{}0A#o7)ShVKBEX37^d^mKpfEV1$m>$W9k_*38Tcy0&Q#+x_aeBMkt zzdmM)l51zEsj26vor^i^fy0f(ER~Ta)W^qQ)i{_wDoAL#mlvLSz<3?KmyP(cpuFoFug{(OS z@#VqqoqX+bRh#nZgfVre7Ekd$_LqOd^U=CaOZ%@hV}`L$E%E^YEaha8k5(9ao3X$s z+}7et_i21jNH_*P(dmG`PAfk2c(nJSIqs^-0X6sr_NC= z4aW7QYCQDr?cd)#PH%s9^5oNjbzyRHxn>Kz7G1oVMh6c^ZboBE=+?z*lWBDq$h^|gmc@sSN$}cyv?SCF00@A^aVW>t(-W zv{uD>a0|}^zeO{h{}$3U^a8(Pe6Vk~mVZt>po19Co?{*uG@rn4f68Me)^Jf+yI1h( z=^DSOG>fH&{mL-RDHNDHDht*Xe$=QVav4ychQ4>8FPJ)E!g++EDo>my&gIHiWkFz{Rk1qZKq$54KU?h3E8}c)+HC&=T@xZ8 diff --git a/dist/vendor/avored/images/logo_only.svg b/dist/vendor/avored/images/logo_only.svg deleted file mode 100644 index 9e9e9910f..000000000 --- a/dist/vendor/avored/images/logo_only.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/dist/vendor/avored/js/app.js b/dist/vendor/avored/js/app.js deleted file mode 100644 index dc321c8fd..000000000 --- a/dist/vendor/avored/js/app.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see app.js.LICENSE.txt */ -(()=>{var e,t={9669:(e,t,n)=>{e.exports=n(1609)},5448:(e,t,n)=>{"use strict";var r=n(4867),i=n(6026),o=n(4372),a=n(5327),l=n(4097),s=n(4109),u=n(7985),c=n(5061);e.exports=function(e){return new Promise((function(t,n){var f=e.data,d=e.headers,p=e.responseType;r.isFormData(f)&&delete d["Content-Type"];var h=new XMLHttpRequest;if(e.auth){var m=e.auth.username||"",g=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";d.Authorization="Basic "+btoa(m+":"+g)}var v=l(e.baseURL,e.url);function y(){if(h){var r="getAllResponseHeaders"in h?s(h.getAllResponseHeaders()):null,o={data:p&&"text"!==p&&"json"!==p?h.response:h.responseText,status:h.status,statusText:h.statusText,headers:r,config:e,request:h};i(t,n,o),h=null}}if(h.open(e.method.toUpperCase(),a(v,e.params,e.paramsSerializer),!0),h.timeout=e.timeout,"onloadend"in h?h.onloadend=y:h.onreadystatechange=function(){h&&4===h.readyState&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))&&setTimeout(y)},h.onabort=function(){h&&(n(c("Request aborted",e,"ECONNABORTED",h)),h=null)},h.onerror=function(){n(c("Network Error",e,null,h)),h=null},h.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(c(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",h)),h=null},r.isStandardBrowserEnv()){var x=(e.withCredentials||u(v))&&e.xsrfCookieName?o.read(e.xsrfCookieName):void 0;x&&(d[e.xsrfHeaderName]=x)}"setRequestHeader"in h&&r.forEach(d,(function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete d[t]:h.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(h.withCredentials=!!e.withCredentials),p&&"json"!==p&&(h.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&h.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&h.upload&&h.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){h&&(h.abort(),n(e),h=null)})),f||(f=null),h.send(f)}))}},1609:(e,t,n)=>{"use strict";var r=n(4867),i=n(1849),o=n(321),a=n(7185);function l(e){var t=new o(e),n=i(o.prototype.request,t);return r.extend(n,o.prototype,t),r.extend(n,t),n}var s=l(n(5655));s.Axios=o,s.create=function(e){return l(a(s.defaults,e))},s.Cancel=n(5263),s.CancelToken=n(4972),s.isCancel=n(6502),s.all=function(e){return Promise.all(e)},s.spread=n(8713),s.isAxiosError=n(6268),e.exports=s,e.exports.default=s},5263:e=>{"use strict";function t(e){this.message=e}t.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},t.prototype.__CANCEL__=!0,e.exports=t},4972:(e,t,n)=>{"use strict";var r=n(5263);function i(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;e((function(e){n.reason||(n.reason=new r(e),t(n.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var e;return{token:new i((function(t){e=t})),cancel:e}},e.exports=i},6502:e=>{"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},321:(e,t,n)=>{"use strict";var r=n(4867),i=n(5327),o=n(782),a=n(3572),l=n(7185),s=n(4875),u=s.validators;function c(e){this.defaults=e,this.interceptors={request:new o,response:new o}}c.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=l(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&s.assertOptions(t,{silentJSONParsing:u.transitional(u.boolean,"1.0.0"),forcedJSONParsing:u.transitional(u.boolean,"1.0.0"),clarifyTimeoutError:u.transitional(u.boolean,"1.0.0")},!1);var n=[],r=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(r=r&&t.synchronous,n.unshift(t.fulfilled,t.rejected))}));var i,o=[];if(this.interceptors.response.forEach((function(e){o.push(e.fulfilled,e.rejected)})),!r){var c=[a,void 0];for(Array.prototype.unshift.apply(c,n),c=c.concat(o),i=Promise.resolve(e);c.length;)i=i.then(c.shift(),c.shift());return i}for(var f=e;n.length;){var d=n.shift(),p=n.shift();try{f=d(f)}catch(e){p(e);break}}try{i=a(f)}catch(e){return Promise.reject(e)}for(;o.length;)i=i.then(o.shift(),o.shift());return i},c.prototype.getUri=function(e){return e=l(this.defaults,e),i(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(e){c.prototype[e]=function(t,n){return this.request(l(n||{},{method:e,url:t,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(e){c.prototype[e]=function(t,n,r){return this.request(l(r||{},{method:e,url:t,data:n}))}})),e.exports=c},782:(e,t,n)=>{"use strict";var r=n(4867);function i(){this.handlers=[]}i.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(e){r.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=i},4097:(e,t,n)=>{"use strict";var r=n(1793),i=n(7303);e.exports=function(e,t){return e&&!r(t)?i(e,t):t}},5061:(e,t,n)=>{"use strict";var r=n(481);e.exports=function(e,t,n,i,o){var a=new Error(e);return r(a,t,n,i,o)}},3572:(e,t,n)=>{"use strict";var r=n(4867),i=n(8527),o=n(6502),a=n(5655);function l(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return l(e),e.headers=e.headers||{},e.data=i.call(e,e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||a.adapter)(e).then((function(t){return l(e),t.data=i.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return o(t)||(l(e),t&&t.response&&(t.response.data=i.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},481:e=>{"use strict";e.exports=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},7185:(e,t,n)=>{"use strict";var r=n(4867);e.exports=function(e,t){t=t||{};var n={},i=["url","method","data"],o=["headers","auth","proxy","params"],a=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],l=["validateStatus"];function s(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function u(i){r.isUndefined(t[i])?r.isUndefined(e[i])||(n[i]=s(void 0,e[i])):n[i]=s(e[i],t[i])}r.forEach(i,(function(e){r.isUndefined(t[e])||(n[e]=s(void 0,t[e]))})),r.forEach(o,u),r.forEach(a,(function(i){r.isUndefined(t[i])?r.isUndefined(e[i])||(n[i]=s(void 0,e[i])):n[i]=s(void 0,t[i])})),r.forEach(l,(function(r){r in t?n[r]=s(e[r],t[r]):r in e&&(n[r]=s(void 0,e[r]))}));var c=i.concat(o).concat(a).concat(l),f=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===c.indexOf(e)}));return r.forEach(f,u),n}},6026:(e,t,n)=>{"use strict";var r=n(5061);e.exports=function(e,t,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},8527:(e,t,n)=>{"use strict";var r=n(4867),i=n(5655);e.exports=function(e,t,n){var o=this||i;return r.forEach(n,(function(n){e=n.call(o,e,t)})),e}},5655:(e,t,n)=>{"use strict";var r=n(4155),i=n(4867),o=n(6016),a=n(481),l={"Content-Type":"application/x-www-form-urlencoded"};function s(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var u,c={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==r&&"[object process]"===Object.prototype.toString.call(r))&&(u=n(5448)),u),transformRequest:[function(e,t){return o(t,"Accept"),o(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(s(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)||t&&"application/json"===t["Content-Type"]?(s(t,"application/json"),function(e,t,n){if(i.isString(e))try{return(t||JSON.parse)(e),i.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,o=!n&&"json"===this.responseType;if(o||r&&i.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw a(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};c.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],(function(e){c.headers[e]={}})),i.forEach(["post","put","patch"],(function(e){c.headers[e]=i.merge(l)})),e.exports=c},1849:e=>{"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r{"use strict";var r=n(4867);function i(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var o;if(n)o=n(t);else if(r.isURLSearchParams(t))o=t.toString();else{var a=[];r.forEach(t,(function(e,t){null!=e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,(function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),a.push(i(t)+"="+i(e))})))})),o=a.join("&")}if(o){var l=e.indexOf("#");-1!==l&&(e=e.slice(0,l)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}},7303:e=>{"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},4372:(e,t,n)=>{"use strict";var r=n(4867);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,i,o,a){var l=[];l.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&l.push("expires="+new Date(n).toGMTString()),r.isString(i)&&l.push("path="+i),r.isString(o)&&l.push("domain="+o),!0===a&&l.push("secure"),document.cookie=l.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},1793:e=>{"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},6268:e=>{"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}},7985:(e,t,n)=>{"use strict";var r=n(4867);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=i(window.location.href),function(t){var n=r.isString(t)?i(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},6016:(e,t,n)=>{"use strict";var r=n(4867);e.exports=function(e,t){r.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))}},4109:(e,t,n)=>{"use strict";var r=n(4867),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),(function(e){if(o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t){if(a[t]&&i.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}})),a):a}},8713:e=>{"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},4875:(e,t,n)=>{"use strict";var r=n(8593),i={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){i[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var o={},a=r.version.split(".");function l(e,t){for(var n=t?t.split("."):a,r=e.split("."),i=0;i<3;i++){if(n[i]>r[i])return!0;if(n[i]0;){var o=r[i],a=t[o];if(a){var l=e[o],s=void 0===l||a(l,o,e);if(!0!==s)throw new TypeError("option "+o+" must be "+s)}else if(!0!==n)throw Error("Unknown option "+o)}},validators:i}},4867:(e,t,n)=>{"use strict";var r=n(1849),i=Object.prototype.toString;function o(e){return"[object Array]"===i.call(e)}function a(e){return void 0===e}function l(e){return null!==e&&"object"==typeof e}function s(e){if("[object Object]"!==i.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function u(e){return"[object Function]"===i.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),o(e))for(var n=0,r=e.length;n{n(3225)},3225:(e,t,n)=>{"use strict";n.r(t);var r,i,o,a,l=n(8508),s=n.n(l),u=n(9669),c=n.n(u),f=(n(6486),n(4442)),d=n.n(f),p=Object.create,h=Object.defineProperty,m=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty,v=Object.getOwnPropertyNames,y=Object.getOwnPropertyDescriptor,x=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),b=x((e=>{function t(e,t){const n=Object.create(null),r=e.split(",");for(let e=0;e!!n[e.toLowerCase()]:e=>!!n[e]}Object.defineProperty(e,"__esModule",{value:!0});var r={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"HYDRATE_EVENTS",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},i={1:"STABLE",2:"DYNAMIC",3:"FORWARDED"},o=t("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt");var a="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",l=t(a),s=t(a+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected"),u=/[>/="'\u0009\u000a\u000c\u0020]/,c={};var f=t("animation-iteration-count,border-image-outset,border-image-slice,border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,stroke-miterlimit,stroke-opacity,stroke-width"),d=t("accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap");var p=/;(?![^(]*\))/g,h=/:(.+)/;function m(e){const t={};return e.split(p).forEach((e=>{if(e){const n=e.split(h);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}var g=t("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"),v=t("svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"),y=t("area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"),x=/["'&<>]/;var b=/^-?>||--!>|M(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:F(t)?{[`Set(${t.size})`]:[...t.values()]}:!N(t)||E(t)||I(t)?t:String(t),D=Object.freeze({}),_=Object.freeze([]),S=/^on[^a-z]/,A=Object.assign,j=Object.prototype.hasOwnProperty,E=Array.isArray,M=e=>"[object Map]"===z(e),F=e=>"[object Set]"===z(e),T=e=>e instanceof Date,L=e=>"function"==typeof e,O=e=>"string"==typeof e,N=e=>null!==e&&"object"==typeof e,B=Object.prototype.toString,z=e=>B.call(e),I=e=>"[object Object]"===z(e),R=t(",key,ref,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),P=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},H=/-(\w)/g,W=P((e=>e.replace(H,((e,t)=>t?t.toUpperCase():"")))),q=/\B([A-Z])/g,U=P((e=>e.replace(q,"-$1").toLowerCase())),$=P((e=>e.charAt(0).toUpperCase()+e.slice(1))),V=P((e=>e?`on${$(e)}`:""));e.EMPTY_ARR=_,e.EMPTY_OBJ=D,e.NO=()=>!1,e.NOOP=()=>{},e.PatchFlagNames=r,e.babelParserDefaultPlugins=["bigInt","optionalChaining","nullishCoalescingOperator"],e.camelize=W,e.capitalize=$,e.def=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},e.escapeHtml=function(e){const t=""+e,n=x.exec(t);if(!n)return t;let r,i,o="",a=0;for(i=n.index;i=t){for(let a=e-2;a<=e+2||n>i;a++){if(a<0||a>=r.length)continue;const l=a+1;o.push(`${l}${" ".repeat(Math.max(3-String(l).length,0))}| ${r[a]}`);const s=r[a].length;if(a===e){const e=t-(i-s)+1,r=Math.max(1,n>i?s-e:n-t);o.push(" | "+" ".repeat(e)+"^".repeat(r))}else if(a>e){if(n>i){const e=Math.max(Math.min(n-i,s),1);o.push(" | "+"^".repeat(e))}i+=s+1}}break}return o.join("\n")},e.getGlobalThis=()=>k||(k="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{}),e.hasChanged=(e,t)=>e!==t&&(e==e||t==t),e.hasOwn=(e,t)=>j.call(e,t),e.hyphenate=U,e.invokeArrayFns=(e,t)=>{for(let n=0;nO(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,e.isKnownAttr=d,e.isMap=M,e.isModelListener=e=>e.startsWith("onUpdate:"),e.isNoUnitNumericStyleProp=f,e.isObject=N,e.isOn=e=>S.test(e),e.isPlainObject=I,e.isPromise=e=>N(e)&&L(e.then)&&L(e.catch),e.isReservedProp=R,e.isSSRSafeAttrName=function(e){if(c.hasOwnProperty(e))return c[e];const t=u.test(e);return t&&console.error(`unsafe attribute name: ${e}`),c[e]=!t},e.isSVGTag=v,e.isSet=F,e.isSpecialBooleanAttr=l,e.isString=O,e.isSymbol=e=>"symbol"==typeof e,e.isVoidTag=y,e.looseEqual=w,e.looseIndexOf=function(e,t){return e.findIndex((e=>w(e,t)))},e.makeMap=t,e.normalizeClass=function e(t){let n="";if(O(t))n=t;else if(E(t))for(let r=0;r{const n=e.indexOf(t);n>-1&&e.splice(n,1)},e.slotFlagsText=i,e.stringifyStyle=function(e){let t="";if(!e)return t;for(const n in e){const r=e[n],i=n.startsWith("--")?n:U(n);(O(r)||"number"==typeof r&&f(i))&&(t+=`${i}:${r};`)}return t},e.toDisplayString=e=>null==e?"":N(e)?JSON.stringify(e,C,2):String(e),e.toHandlerKey=V,e.toNumber=e=>{const t=parseFloat(e);return isNaN(t)?e:t},e.toRawType=e=>z(e).slice(8,-1),e.toTypeString=z})),w=x(((e,t)=>{t.exports=b()})),k=x((e=>{Object.defineProperty(e,"__esModule",{value:!0});var t,n=w(),r=new WeakMap,i=[],o=Symbol("iterate"),a=Symbol("Map key iterate");function l(e,r=n.EMPTY_OBJ){(function(e){return e&&!0===e._isEffect})(e)&&(e=e.raw);const o=function(e,n){const r=function(){if(!r.active)return e();if(!i.includes(r)){u(r);try{return p(),i.push(r),t=r,e()}finally{i.pop(),h(),t=i[i.length-1]}}};return r.id=s++,r.allowRecurse=!!n.allowRecurse,r._isEffect=!0,r.active=!0,r.raw=e,r.deps=[],r.options=n,r}(e,r);return r.lazy||o(),o}var s=0;function u(e){const{deps:t}=e;if(t.length){for(let n=0;n{e&&e.forEach((e=>{(e!==t||e.allowRecurse)&&d.add(e)}))};if("clear"===i)f.forEach(p);else if("length"===l&&n.isArray(e))f.forEach(((e,t)=>{("length"===t||t>=s)&&p(e)}));else switch(void 0!==l&&p(f.get(l)),i){case"add":n.isArray(e)?n.isIntegerKey(l)&&p(f.get("length")):(p(f.get(o)),n.isMap(e)&&p(f.get(a)));break;case"delete":n.isArray(e)||(p(f.get(o)),n.isMap(e)&&p(f.get(a)));break;case"set":n.isMap(e)&&p(f.get(o))}d.forEach((t=>{t.options.onTrigger&&t.options.onTrigger({effect:t,target:e,key:l,type:i,newValue:s,oldValue:u,oldTarget:c}),t.options.scheduler?t.options.scheduler(t):t()}))}var v=n.makeMap("__proto__,__v_isRef,__isVue"),y=new Set(Object.getOwnPropertyNames(Symbol).map((e=>Symbol[e])).filter(n.isSymbol)),x=_(),b=_(!1,!0),k=_(!0),C=_(!0,!0),D={};function _(e=!1,t=!1){return function(r,i,o){if("__v_isReactive"===i)return!e;if("__v_isReadonly"===i)return e;if("__v_raw"===i&&o===(e?t?ae:oe:t?ie:re).get(r))return r;const a=n.isArray(r);if(!e&&a&&n.hasOwn(D,i))return Reflect.get(D,i,o);const l=Reflect.get(r,i,o);if(n.isSymbol(i)?y.has(i):v(i))return l;if(e||m(r,"get",i),t)return l;if(me(l)){return!a||!n.isIntegerKey(i)?l.value:l}return n.isObject(l)?e?se(l):le(l):l}}["includes","indexOf","lastIndexOf"].forEach((e=>{const t=Array.prototype[e];D[e]=function(...e){const n=pe(this);for(let e=0,t=this.length;e{const t=Array.prototype[e];D[e]=function(...e){d();const n=t.apply(this,e);return h(),n}}));var S=j(),A=j(!0);function j(e=!1){return function(t,r,i,o){let a=t[r];if(!e&&(i=pe(i),a=pe(a),!n.isArray(t)&&me(a)&&!me(i)))return a.value=i,!0;const l=n.isArray(t)&&n.isIntegerKey(r)?Number(r)(console.warn(`Set operation on key "${String(t)}" failed: target is readonly.`,e),!0),deleteProperty:(e,t)=>(console.warn(`Delete operation on key "${String(t)}" failed: target is readonly.`,e),!0)},F=n.extend({},E,{get:b,set:A}),T=n.extend({},M,{get:C}),L=e=>n.isObject(e)?le(e):e,O=e=>n.isObject(e)?se(e):e,N=e=>e,B=e=>Reflect.getPrototypeOf(e);function z(e,t,n=!1,r=!1){const i=pe(e=e.__v_raw),o=pe(t);t!==o&&!n&&m(i,"get",t),!n&&m(i,"get",o);const{has:a}=B(i),l=r?N:n?O:L;return a.call(i,t)?l(e.get(t)):a.call(i,o)?l(e.get(o)):void(e!==i&&e.get(t))}function I(e,t=!1){const n=this.__v_raw,r=pe(n),i=pe(e);return e!==i&&!t&&m(r,"has",e),!t&&m(r,"has",i),e===i?n.has(e):n.has(e)||n.has(i)}function R(e,t=!1){return e=e.__v_raw,!t&&m(pe(e),"iterate",o),Reflect.get(e,"size",e)}function P(e){e=pe(e);const t=pe(this);return B(t).has.call(t,e)||(t.add(e),g(t,"add",e,e)),this}function H(e,t){t=pe(t);const r=pe(this),{has:i,get:o}=B(r);let a=i.call(r,e);a?ne(r,i,e):(e=pe(e),a=i.call(r,e));const l=o.call(r,e);return r.set(e,t),a?n.hasChanged(t,l)&&g(r,"set",e,t,l):g(r,"add",e,t),this}function W(e){const t=pe(this),{has:n,get:r}=B(t);let i=n.call(t,e);i?ne(t,n,e):(e=pe(e),i=n.call(t,e));const o=r?r.call(t,e):void 0,a=t.delete(e);return i&&g(t,"delete",e,void 0,o),a}function q(){const e=pe(this),t=0!==e.size,r=n.isMap(e)?new Map(e):new Set(e),i=e.clear();return t&&g(e,"clear",void 0,void 0,r),i}function U(e,t){return function(n,r){const i=this,a=i.__v_raw,l=pe(a),s=t?N:e?O:L;return!e&&m(l,"iterate",o),a.forEach(((e,t)=>n.call(r,s(e),s(t),i)))}}function $(e,t,r){return function(...i){const l=this.__v_raw,s=pe(l),u=n.isMap(s),c="entries"===e||e===Symbol.iterator&&u,f="keys"===e&&u,d=l[e](...i),p=r?N:t?O:L;return!t&&m(s,"iterate",f?a:o),{next(){const{value:e,done:t}=d.next();return t?{value:e,done:t}:{value:c?[p(e[0]),p(e[1])]:p(e),done:t}},[Symbol.iterator](){return this}}}}function V(e){return function(...t){{const r=t[0]?`on key "${t[0]}" `:"";console.warn(`${n.capitalize(e)} operation ${r}failed: target is readonly.`,pe(this))}return"delete"!==e&&this}}var G={get(e){return z(this,e)},get size(){return R(this)},has:I,add:P,set:H,delete:W,clear:q,forEach:U(!1,!1)},K={get(e){return z(this,e,!1,!0)},get size(){return R(this)},has:I,add:P,set:H,delete:W,clear:q,forEach:U(!1,!0)},X={get(e){return z(this,e,!0)},get size(){return R(this,!0)},has(e){return I.call(this,e,!0)},add:V("add"),set:V("set"),delete:V("delete"),clear:V("clear"),forEach:U(!0,!1)},Z={get(e){return z(this,e,!0,!0)},get size(){return R(this,!0)},has(e){return I.call(this,e,!0)},add:V("add"),set:V("set"),delete:V("delete"),clear:V("clear"),forEach:U(!0,!0)};function Y(e,t){const r=t?e?Z:K:e?X:G;return(t,i,o)=>"__v_isReactive"===i?!e:"__v_isReadonly"===i?e:"__v_raw"===i?t:Reflect.get(n.hasOwn(r,i)&&i in t?r:t,i,o)}["keys","values","entries",Symbol.iterator].forEach((e=>{G[e]=$(e,!1,!1),X[e]=$(e,!0,!1),K[e]=$(e,!1,!0),Z[e]=$(e,!0,!0)}));var J={get:Y(!1,!1)},Q={get:Y(!1,!0)},ee={get:Y(!0,!1)},te={get:Y(!0,!0)};function ne(e,t,r){const i=pe(r);if(i!==r&&t.call(e,i)){const t=n.toRawType(e);console.warn(`Reactive ${t} contains both the raw and reactive versions of the same object${"Map"===t?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}var re=new WeakMap,ie=new WeakMap,oe=new WeakMap,ae=new WeakMap;function le(e){return e&&e.__v_isReadonly?e:ue(e,!1,E,J,re)}function se(e){return ue(e,!0,M,ee,oe)}function ue(e,t,r,i,o){if(!n.isObject(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const a=o.get(e);if(a)return a;const l=(s=e).__v_skip||!Object.isExtensible(s)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(n.toRawType(s));var s;if(0===l)return e;const u=new Proxy(e,2===l?i:r);return o.set(e,u),u}function ce(e){return fe(e)?ce(e.__v_raw):!(!e||!e.__v_isReactive)}function fe(e){return!(!e||!e.__v_isReadonly)}function de(e){return ce(e)||fe(e)}function pe(e){return e&&pe(e.__v_raw)||e}var he=e=>n.isObject(e)?le(e):e;function me(e){return Boolean(e&&!0===e.__v_isRef)}function ge(e,t=!1){return me(e)?e:new class{constructor(e,t=!1){this._rawValue=e,this._shallow=t,this.__v_isRef=!0,this._value=t?e:he(e)}get value(){return m(pe(this),"get","value"),this._value}set value(e){n.hasChanged(pe(e),this._rawValue)&&(this._rawValue=e,this._value=this._shallow?e:he(e),g(pe(this),"set","value",e))}}(e,t)}function ve(e){return me(e)?e.value:e}var ye={get:(e,t,n)=>ve(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const i=e[t];return me(i)&&!me(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function xe(e,t){return me(e[t])?e[t]:new class{constructor(e,t){this._object=e,this._key=t,this.__v_isRef=!0}get value(){return this._object[this._key]}set value(e){this._object[this._key]=e}}(e,t)}e.ITERATE_KEY=o,e.computed=function(e){let t,r;return n.isFunction(e)?(t=e,r=()=>{console.warn("Write operation failed: computed value is readonly")}):(t=e.get,r=e.set),new class{constructor(e,t,n){this._setter=t,this._dirty=!0,this.__v_isRef=!0,this.effect=l(e,{lazy:!0,scheduler:()=>{this._dirty||(this._dirty=!0,g(pe(this),"set","value"))}}),this.__v_isReadonly=n}get value(){const e=pe(this);return e._dirty&&(e._value=this.effect(),e._dirty=!1),m(e,"get","value"),e._value}set value(e){this._setter(e)}}(t,r,n.isFunction(e)||!e.set)},e.customRef=function(e){return new class{constructor(e){this.__v_isRef=!0;const{get:t,set:n}=e((()=>m(this,"get","value")),(()=>g(this,"set","value")));this._get=t,this._set=n}get value(){return this._get()}set value(e){this._set(e)}}(e)},e.effect=l,e.enableTracking=p,e.isProxy=de,e.isReactive=ce,e.isReadonly=fe,e.isRef=me,e.markRaw=function(e){return n.def(e,"__v_skip",!0),e},e.pauseTracking=d,e.proxyRefs=function(e){return ce(e)?e:new Proxy(e,ye)},e.reactive=le,e.readonly=se,e.ref=function(e){return ge(e)},e.resetTracking=h,e.shallowReactive=function(e){return ue(e,!1,F,Q,ie)},e.shallowReadonly=function(e){return ue(e,!0,T,te,ae)},e.shallowRef=function(e){return ge(e,!0)},e.stop=function(e){e.active&&(u(e),e.options.onStop&&e.options.onStop(),e.active=!1)},e.toRaw=pe,e.toRef=xe,e.toRefs=function(e){de(e)||console.warn("toRefs() expects a reactive object but received a plain one.");const t=n.isArray(e)?new Array(e.length):{};for(const n in e)t[n]=xe(e,n);return t},e.track=m,e.trigger=g,e.triggerRef=function(e){g(pe(e),"set","value",e.value)},e.unref=ve})),C=x(((e,t)=>{t.exports=k()})),D=!1,_=!1,S=[];function A(e){!function(e){S.includes(e)||S.push(e);_||D||(D=!0,queueMicrotask(j))}(e)}function j(){D=!1,_=!0;for(let e=0;e{(void 0===t||t.includes(n))&&r.forEach((e=>e())),delete e._x_attributeCleanups[n]}))}var N=new MutationObserver(W),B=!1;function z(){N.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),B=!0}var I=[],R=!1;function P(){(I=I.concat(N.takeRecords())).length&&!R&&(R=!0,queueMicrotask((()=>{W(I),I.length=0,R=!1})))}function H(e){if(!B)return e();P(),N.disconnect(),B=!1;let t=e();return z(),t}function W(e){let t=[],n=[],r=new Map,i=new Map;for(let o=0;o1===e.nodeType&&t.push(e))),e[o].removedNodes.forEach((e=>1===e.nodeType&&n.push(e)))),"attributes"===e[o].type)){let t=e[o].target,n=e[o].attributeName,a=e[o].oldValue,l=()=>{r.has(t)||r.set(t,[]),r.get(t).push({name:n,value:t.getAttribute(n)})},s=()=>{i.has(t)||i.set(t,[]),i.get(t).push(n)};t.hasAttribute(n)&&null===a?l():t.hasAttribute(n)?(s(),l()):s()}i.forEach(((e,t)=>{O(t,e)})),r.forEach(((e,t)=>{F.forEach((n=>n(t,e)))}));for(let e of t)n.includes(e)||L.forEach((t=>t(e)));for(let e of n)t.includes(e)||T.forEach((t=>t(e)));t=null,n=null,r=null,i=null}function q(e,t,n){return e._x_dataStack=[t,...$(n||e)],()=>{e._x_dataStack=e._x_dataStack.filter((e=>e!==t))}}function U(e,t){let n=e._x_dataStack[0];Object.entries(t).forEach((([e,t])=>{n[e]=t}))}function $(e){return e._x_dataStack?e._x_dataStack:"function"==typeof ShadowRoot&&e instanceof ShadowRoot?$(e.host):e.parentNode?$(e.parentNode):[]}function V(e){return new Proxy({},{ownKeys:()=>Array.from(new Set(e.flatMap((e=>Object.keys(e))))),has:(t,n)=>e.some((e=>e.hasOwnProperty(n))),get:(t,n)=>(e.find((e=>e.hasOwnProperty(n)))||{})[n],set:(t,n,r)=>{let i=e.find((e=>e.hasOwnProperty(n)));return i?i[n]=r:e[e.length-1][n]=r,!0}})}function G(e){let t=(n,r="")=>{Object.entries(n).forEach((([i,o])=>{let a=""===r?i:`${r}.${i}`;var l;"object"==typeof o&&null!==o&&o._x_interceptor?n[i]=o.initialize(e,a,i):"object"!=typeof(l=o)||Array.isArray(l)||null===l||o===n||o instanceof Element||t(o,a)}))};return t(e)}function K(e,t=(()=>{})){let n={initialValue:void 0,_x_interceptor:!0,initialize(t,n,r){return e(this.initialValue,(()=>function(e,t){return t.split(".").reduce(((e,t)=>e[t]),e)}(t,n)),(e=>X(t,n,e)),n,r)}};return t(n),e=>{if("object"==typeof e&&null!==e&&e._x_interceptor){let t=n.initialize.bind(n);n.initialize=(r,i,o)=>{let a=e.initialize(r,i,o);return n.initialValue=a,t(r,i,o)}}else n.initialValue=e;return n}}function X(e,t,n){if("string"==typeof t&&(t=t.split(".")),1!==t.length){if(0===t.length)throw error;return e[t[0]]||(e[t[0]]={}),X(e[t[0]],t.slice(1),n)}e[t[0]]=n}var Z={};function Y(e,t){Z[e]=t}function J(e,t){return Object.entries(Z).forEach((([n,r])=>{Object.defineProperty(e,`$${n}`,{get:()=>r(t,{Alpine:$e,interceptor:K}),enumerable:!1})})),e}function Q(e,t,n={}){let r;return ee(e,t)((e=>r=e),n),r}function ee(...e){return te(...e)}var te=ne;function ne(e,t){let n={};J(n,e);let r=[n,...$(e)];if("function"==typeof t)return function(e,t){return(n=(()=>{}),{scope:r={},params:i=[]}={})=>{ie(n,t.apply(V([r,...e]),i))}}(r,t);let i=function(e,t){let n=function(e){if(re[e])return re[e];let t=Object.getPrototypeOf((async function(){})).constructor,n=/^[\n\s]*if.*\(.*\)/.test(e)||/^(let|const)/.test(e)?`(() => { ${e} })()`:e,r=new t(["__self","scope"],`with (scope) { __self.result = ${n} }; __self.finished = true; return __self.result;`);return re[e]=r,r}(t);return(t=(()=>{}),{scope:r={},params:i=[]}={})=>{n.result=void 0,n.finished=!1;let o=V([r,...e]),a=n(n,o);n.finished?ie(t,n.result,o,i):a.then((e=>{ie(t,e,o,i)}))}}(r,t);return oe.bind(null,e,t,i)}var re={};function ie(e,t,n,r){if("function"==typeof t){let i=t.apply(n,r);i instanceof Promise?i.then((t=>ie(e,t,n,r))):e(i)}else e(t)}function oe(e,t,n,...r){try{return n(...r)}catch(n){throw console.warn(`Alpine Expression Error: ${n.message}\n\nExpression: "${t}"\n\n`,e),n}}var ae="x-";function le(e=""){return ae+e}var se={};function ue(e,t){se[e]=t}function ce(e,t,n){let r={};return Array.from(t).map(me(((e,t)=>r[e]=t))).filter(ye).map(function(e,t){return({name:n,value:r})=>{let i=n.match(xe()),o=n.match(/:([a-zA-Z0-9\-:]+)/),a=n.match(/\.[^.\]]+(?=[^\]]*$)/g)||[],l=t||e[n]||n;return{type:i?i[1]:null,value:o?o[1]:null,modifiers:a.map((e=>e.replace(".",""))),expression:r,original:l}}}(r,n)).sort(ke).map((t=>function(e,t){let n=()=>{},r=se[t.type]||n,a=[],l=e=>a.push(e),[s,u]=function(e){let t=()=>{};return[n=>{let r=i(n);e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach((e=>e()))}),e._x_effects.add(r),t=()=>{void 0!==r&&(e._x_effects.delete(r),o(r))}},()=>{t()}]}(e);a.push(u);let c={Alpine:$e,effect:s,cleanup:l,evaluateLater:ee.bind(ee,e),evaluate:Q.bind(Q,e)},f=()=>a.forEach((e=>e()));!function(e,t,n){e._x_attributeCleanups||(e._x_attributeCleanups={}),e._x_attributeCleanups[t]||(e._x_attributeCleanups[t]=[]),e._x_attributeCleanups[t].push(n)}(e,t.original,f);let d=()=>{e._x_ignore||e._x_ignoreSelf||(r.inline&&r.inline(e,t,c),r=r.bind(r,e,t,c),fe?de.get(pe).push(r):r())};return d.runCleanups=f,d}(e,t)))}var fe=!1,de=new Map,pe=Symbol();var he=(e,t)=>({name:n,value:r})=>(n.startsWith(e)&&(n=n.replace(e,t)),{name:n,value:r});function me(e=(()=>{})){return({name:t,value:n})=>{let{name:r,value:i}=ge.reduce(((e,t)=>t(e)),{name:t,value:n});return r!==t&&e(r,t),{name:r,value:i}}}var ge=[];function ve(e){ge.push(e)}function ye({name:e}){return xe().test(e)}var xe=()=>new RegExp(`^${ae}([^:^.]+)\\b`);var be="DEFAULT",we=["ignore","ref","data","bind","init","for","model","transition","show","if",be,"element"];function ke(e,t){let n=-1===we.indexOf(e.type)?be:e.type,r=-1===we.indexOf(t.type)?be:t.type;return we.indexOf(n)-we.indexOf(r)}function Ce(e,t,n={}){e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0,cancelable:!0}))}var De=[],_e=!1;function Se(e){De.push(e),queueMicrotask((()=>{_e||setTimeout((()=>{Ae()}))}))}function Ae(){for(_e=!1;De.length;)De.shift()()}function je(e,t){if("function"==typeof ShadowRoot&&e instanceof ShadowRoot)return void Array.from(e.children).forEach((e=>je(e,t)));let n=!1;if(t(e,(()=>n=!0)),n)return;let r=e.firstElementChild;for(;r;)je(r,t),r=r.nextElementSibling}function Ee(e,...t){console.warn(`Alpine Warning: ${e}`,...t)}var Me=[],Fe=[];function Te(){return Me.map((e=>e()))}function Le(e){Me.push(e)}function Oe(e){if(e){if(Te().some((t=>e.matches(t))))return e;if(e.parentElement)return Oe(e.parentElement)}}function Ne(e,t=je){!function(e){fe=!0;let t=Symbol();pe=t,de.set(t,[]);let n=()=>{for(;de.get(t).length;)de.get(t).shift()();de.delete(t)};e(n),fe=!1,n()}((()=>{t(e,((e,t)=>{ce(e,e.attributes).forEach((e=>e())),e._x_ignore&&t()}))}))}function Be(e,t){var n;return function(){var r=this,i=arguments,o=function(){n=null,e.apply(r,i)};clearTimeout(n),n=setTimeout(o,t)}}function ze(e,t){let n;return function(){let r=this,i=arguments;n||(e.apply(r,i),n=!0,setTimeout((()=>n=!1),t))}}var Ie={},Re=!1;var Pe=!1;function He(e){return(...t)=>Pe||e(...t)}var We={};var qe,Ue,$e={get reactive(){return r},get release(){return o},get effect(){return i},get raw(){return a},version:"3.3.3",disableEffectScheduling:function(e){E=!1,e(),E=!0},setReactivityEngine:function(e){r=e.reactive,o=e.release,i=t=>e.effect(t,{scheduler:e=>{E?A(e):e()}}),a=e.raw},addRootSelector:Le,mapAttributes:ve,evaluateLater:ee,setEvaluator:function(e){te=e},closestRoot:Oe,interceptor:K,mutateDom:H,directive:ue,throttle:ze,debounce:Be,evaluate:Q,initTree:Ne,nextTick:Se,prefix:function(e){ae=e},plugin:function(e){e($e)},magic:Y,store:function(e,t){if(Re||(Ie=r(Ie),Re=!0),void 0===t)return Ie[e];Ie[e]=t,"object"==typeof t&&null!==t&&t.hasOwnProperty("init")&&"function"==typeof t.init&&Ie[e].init()},start:function(){var e;document.body||Ee("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's ` -@endpush diff --git a/resources/views/catalog/attribute/create.blade.php b/resources/views/catalog/attribute/create.blade.php deleted file mode 100644 index f4c54dbad..000000000 --- a/resources/views/catalog/attribute/create.blade.php +++ /dev/null @@ -1,53 +0,0 @@ - -
-
-
-

- {{ __('avored::system.create') }} {{ __('avored::system.attribute') }} -

- -
- -
- - - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - {{ __('avored::system.cancel') }} - -
-
-
-
- -
- -
diff --git a/resources/views/catalog/attribute/edit.blade.php b/resources/views/catalog/attribute/edit.blade.php deleted file mode 100644 index 07c23b03f..000000000 --- a/resources/views/catalog/attribute/edit.blade.php +++ /dev/null @@ -1,50 +0,0 @@ - -
-
-
-

- {{ __('avored::system.edit') }} {{ __('avored::system.attribute') }} -

- -
- -
- - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - {{ __('avored::system.cancel') }} - -
-
-
-
-
-
diff --git a/resources/views/catalog/attribute/index.blade.php b/resources/views/catalog/attribute/index.blade.php deleted file mode 100644 index 75a36443e..000000000 --- a/resources/views/catalog/attribute/index.blade.php +++ /dev/null @@ -1,143 +0,0 @@ - -
-
-
-

- {{ __('avored::system.attribute') }} {{ __('avored::system.list') }} -

- - - {{ __('avored::system.create') }} - - -
- -
- -
- - - - - - {{ __('avored::system.name') }} - - - {{ __('avored::system.slug') }} - - - {{ __('avored::system.display_as') }} - - - - {{ __('avored::system.actions') }} - - - - - @foreach ($attributes as $attribute) - - - {{ $attribute->name ?? '' }} - - - {{ $attribute->slug ?? '' }} - - - {{ $attribute->display_as ?? '' }} - - - - -
- - - - | - - - - - -
-
-
- @endforeach -
-
-
- {{ $attributes->render() }} -
-
-
-
- - -
-
diff --git a/resources/views/catalog/category/_fields.blade.php b/resources/views/catalog/category/_fields.blade.php deleted file mode 100644 index 5ec1f2b3c..000000000 --- a/resources/views/catalog/category/_fields.blade.php +++ /dev/null @@ -1,68 +0,0 @@ -
- - - - @foreach ($options as $optionValue => $optionLabel) - - @endforeach - - -
- -
-
-
- -
-
-
-
- -
-
-
- - -
- -
- -
-
-
- -
-
- -
-
- -
-
-
diff --git a/resources/views/catalog/category/create.blade.php b/resources/views/catalog/category/create.blade.php deleted file mode 100644 index 626448b1f..000000000 --- a/resources/views/catalog/category/create.blade.php +++ /dev/null @@ -1,53 +0,0 @@ - -
-
-
-

- {{ __('avored::system.create') }} {{ __('avored::system.category') }} -

- -
- -
- - - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - Cancel - -
-
-
-
- -
- -
diff --git a/resources/views/catalog/category/edit.blade.php b/resources/views/catalog/category/edit.blade.php deleted file mode 100644 index 0bffdaa51..000000000 --- a/resources/views/catalog/category/edit.blade.php +++ /dev/null @@ -1,50 +0,0 @@ - -
-
-
-

- {{ __('avored::system.edit') }} {{ __('avored::system.category') }} -

- -
- -
- - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - {{ __('avored::system.cancel') }} - -
-
-
-
-
-
diff --git a/resources/views/catalog/category/index.blade.php b/resources/views/catalog/category/index.blade.php deleted file mode 100644 index fd6ea3f94..000000000 --- a/resources/views/catalog/category/index.blade.php +++ /dev/null @@ -1,152 +0,0 @@ - -
-
-
-

- {{ __('avored::system.category') }} {{ __('avored::system.list') }} -

- - - {{ __('avored::system.create') }} - - -
- -
- -
- - - - - {{ __('avored::system.parent') }} - - - - {{ __('avored::system.name') }} - - - {{ __('avored::system.slug') }} - - - {{ __('avored::system.meta_title') }} - - - {{ __('avored::system.meta_description') }} - - - {{ __('avored::system.actions') }} - - - - - @foreach ($categories as $category) - - - {{ $category->parent->name ?? '' }} - - - {{ $category->name ?? '' }} - - - {{ $category->slug ?? '' }} - - - {{ $category->meta_title ?? '' }} - - - {{ $category->meta_description ?? '' }} - - -
- - - - | - - - - - -
-
-
- @endforeach -
-
-
- {{ $categories->render() }} -
-
-
-
- - -
-
diff --git a/resources/views/catalog/product/_fields.blade.php b/resources/views/catalog/product/_fields.blade.php deleted file mode 100644 index 9f6cd34db..000000000 --- a/resources/views/catalog/product/_fields.blade.php +++ /dev/null @@ -1,188 +0,0 @@ -
-
-
- -
-
-
-
- -
-
-
- -
- - @foreach ($options as $optionValue => $optionLabel) - - @endforeach - - -
-
-
-
- -
-
-
-
- -
-
-
- - -
- -
- -
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
- - - -
-
-
- -
-
- -
-
- -
-
-
diff --git a/resources/views/catalog/product/create.blade.php b/resources/views/catalog/product/create.blade.php deleted file mode 100644 index 71c7175aa..000000000 --- a/resources/views/catalog/product/create.blade.php +++ /dev/null @@ -1,83 +0,0 @@ - -
-
-
-

- {{ __('avored::system.create') }} {{ __('avored::system.product') }} -

- -
- -
- - -
-
-
- - {{ __('avored::system.basic_info') }} - - - - -
- -
-
-
-
-
- -
-
-
-
- -
-
-
- -
-
- - - - @foreach ($typeOptions as $typeValue => $typeLabel) - - @endforeach - - -
-
-
-
- -
- - - - Cancel - -
-
-
-
- -
- -
diff --git a/resources/views/catalog/product/edit.blade.php b/resources/views/catalog/product/edit.blade.php deleted file mode 100644 index 59cd5fbbc..000000000 --- a/resources/views/catalog/product/edit.blade.php +++ /dev/null @@ -1,50 +0,0 @@ - -
-
-
-

- {{ __('avored::system.edit') }} {{ __('avored::system.product') }} -

- -
- -
- - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - {{ __('avored::system.cancel') }} - -
-
-
-
-
-
diff --git a/resources/views/catalog/product/index.blade.php b/resources/views/catalog/product/index.blade.php deleted file mode 100644 index 434a08b0d..000000000 --- a/resources/views/catalog/product/index.blade.php +++ /dev/null @@ -1,146 +0,0 @@ - -
-
-
-

- {{ __('avored::system.product') }} {{ __('avored::system.list') }} -

- - - {{ __('avored::system.create') }} - - -
- -
- -
- - - - - - {{ __('avored::system.name') }} - - - {{ __('avored::system.slug') }} - - - {{ __('avored::system.meta_title') }} - - - {{ __('avored::system.meta_description') }} - - - {{ __('avored::system.actions') }} - - - - - @foreach ($products as $product) - - - {{ $product->name ?? '' }} - - - {{ $product->slug ?? '' }} - - - {{ $product->meta_title ?? '' }} - - - {{ $product->meta_description ?? '' }} - - -
- - - - | - - - - - -
-
-
- @endforeach -
-
-
- {{ $products->render() }} -
-
-
-
- - -
-
diff --git a/resources/views/catalog/property/_fields.blade.php b/resources/views/catalog/property/_fields.blade.php deleted file mode 100644 index 19a00c3c3..000000000 --- a/resources/views/catalog/property/_fields.blade.php +++ /dev/null @@ -1,186 +0,0 @@ -
-
-
-
- -
-
-
-
- -
-
-
- - -
-
-
- - - @foreach ($fieldTypeOptions as $fieldTypeValue => $fieldTypeLabel) - - @endforeach - - -
- -
-
-
- - - - @foreach ($dataTypeOptions as $dataTypeValue => $dataTypeLabel) - - @endforeach - - -
-
- -
- -
- -
-
- -
-
- -
- - - - - -
- -@push('scripts') - -@endpush diff --git a/resources/views/catalog/property/create.blade.php b/resources/views/catalog/property/create.blade.php deleted file mode 100644 index d9841227a..000000000 --- a/resources/views/catalog/property/create.blade.php +++ /dev/null @@ -1,53 +0,0 @@ - -
-
-
-

- {{ __('avored::system.create') }} {{ __('avored::system.property') }} -

- -
- -
- - - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - {{ __('avored::system.cancel') }} - -
-
-
-
- -
- -
diff --git a/resources/views/catalog/property/edit.blade.php b/resources/views/catalog/property/edit.blade.php deleted file mode 100644 index 886a63aa9..000000000 --- a/resources/views/catalog/property/edit.blade.php +++ /dev/null @@ -1,50 +0,0 @@ - -
-
-
-

- {{ __('avored::system.edit') }} {{ __('avored::system.property') }} -

- -
- -
- - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - {{ __('avored::system.cancel') }} - -
-
-
-
-
-
diff --git a/resources/views/catalog/property/index.blade.php b/resources/views/catalog/property/index.blade.php deleted file mode 100644 index f89e90097..000000000 --- a/resources/views/catalog/property/index.blade.php +++ /dev/null @@ -1,143 +0,0 @@ - -
-
-
-

- {{ __('avored::system.property') }} {{ __('avored::system.list') }} -

- - - {{ __('avored::system.create') }} - - -
- -
- -
- - - - - - {{ __('avored::system.name') }} - - - {{ __('avored::system.slug') }} - - - {{ __('avored::system.data_type') }} - - - - {{ __('avored::system.actions') }} - - - - - @foreach ($properties as $property) - - - {{ $property->name ?? '' }} - - - {{ $property->slug ?? '' }} - - - {{ $property->data_type ?? '' }} - - - - -
- - - - | - - - - - -
-
-
- @endforeach -
-
-
- {{ $properties->render() }} -
-
-
-
- - -
-
diff --git a/resources/views/cms/page/_fields.blade.php b/resources/views/cms/page/_fields.blade.php deleted file mode 100644 index 1abf04a3e..000000000 --- a/resources/views/cms/page/_fields.blade.php +++ /dev/null @@ -1,51 +0,0 @@ -
-
-
- -
-
-
-
- -
-
-
- - -
- -
- -
-
-
- -
-
- -
-
- -
-
-
diff --git a/resources/views/cms/page/create.blade.php b/resources/views/cms/page/create.blade.php deleted file mode 100644 index 351d74379..000000000 --- a/resources/views/cms/page/create.blade.php +++ /dev/null @@ -1,53 +0,0 @@ - -
-
-
-

- {{ __('avored::system.create') }} {{ __('avored::system.page') }} -

- -
- -
- - - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - Cancel - -
-
-
-
- -
- -
diff --git a/resources/views/cms/page/edit.blade.php b/resources/views/cms/page/edit.blade.php deleted file mode 100644 index fe55f0a8f..000000000 --- a/resources/views/cms/page/edit.blade.php +++ /dev/null @@ -1,50 +0,0 @@ - -
-
-
-

- {{ __('avored::system.edit') }} {{ __('avored::system.page') }} -

- -
- -
- - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - {{ __('avored::system.cancel') }} - -
-
-
-
-
-
diff --git a/resources/views/cms/page/index.blade.php b/resources/views/cms/page/index.blade.php deleted file mode 100644 index 93e492587..000000000 --- a/resources/views/cms/page/index.blade.php +++ /dev/null @@ -1,132 +0,0 @@ - -
-
-
-

- {{ __('avored::system.page') }} {{ __('avored::system.list') }} -

- - - {{ __('avored::system.create') }} - - -
- -
- -
- - - - - {{ __('avored::system.name') }} - - - {{ __('avored::system.slug') }} - - - {{ __('avored::system.meta_title') }} - - - {{ __('avored::system.meta_description') }} - - - {{ __('avored::system.actions') }} - - - - - @foreach ($pages as $page) - - - {{ $page->name ?? '' }} - - - {{ $page->slug ?? '' }} - - - {{ $page->meta_title ?? '' }} - - - {{ $page->meta_description ?? '' }} - - - -
- - - - | - - - - - - - - -
-
-
- @endforeach -
-
-
- {{ $pages->render() }} -
-
-
-
-
-
- - - Close - -
-
- -
-
diff --git a/resources/views/order/order-status/_fields.blade.php b/resources/views/order/order-status/_fields.blade.php deleted file mode 100644 index a8b2222f3..000000000 --- a/resources/views/order/order-status/_fields.blade.php +++ /dev/null @@ -1,17 +0,0 @@ -
- -
- - -
- -
diff --git a/resources/views/order/order-status/create.blade.php b/resources/views/order/order-status/create.blade.php deleted file mode 100644 index 3f77b8a92..000000000 --- a/resources/views/order/order-status/create.blade.php +++ /dev/null @@ -1,53 +0,0 @@ - -
-
-
-

- {{ __('avored::system.create') }} {{ __('avored::system.order-status') }} -

- -
- -
- - - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - Cancel - -
-
-
-
- -
- -
diff --git a/resources/views/order/order-status/edit.blade.php b/resources/views/order/order-status/edit.blade.php deleted file mode 100644 index 667c4b979..000000000 --- a/resources/views/order/order-status/edit.blade.php +++ /dev/null @@ -1,50 +0,0 @@ - -
-
-
-

- {{ __('avored::system.edit') }} {{ __('avored::system.order-status') }} -

- -
- -
- - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - {{ __('avored::system.cancel') }} - -
-
-
-
-
-
diff --git a/resources/views/order/order-status/index.blade.php b/resources/views/order/order-status/index.blade.php deleted file mode 100644 index 2b97c0f68..000000000 --- a/resources/views/order/order-status/index.blade.php +++ /dev/null @@ -1,136 +0,0 @@ - -
-
-
-

- {{ __('avored::system.order-status') }} {{ __('avored::system.list') }} -

- - - {{ __('avored::system.create') }} - - -
- -
- -
- - - - - - {{ __('avored::system.name') }} - - - {{ __('avored::system.is_default') }} - - - - {{ __('avored::system.actions') }} - - - - - @foreach ($orderStatuses as $orderStatus) - - - {{ $orderStatus->name ?? '' }} - - - {{ $orderStatus->is_default ? 'Default' : '' }} - - - -
- - - - | - - - - - -
-
-
- @endforeach -
-
-
- {{ $orderStatuses->render() }} -
-
-
-
- - -
-
diff --git a/resources/views/order/order/index.blade.php b/resources/views/order/order/index.blade.php deleted file mode 100644 index f52c39c2e..000000000 --- a/resources/views/order/order/index.blade.php +++ /dev/null @@ -1,62 +0,0 @@ - -
-
-
-

- {{ __('avored::system.order') }} {{ __('avored::system.list') }} -

- -
- -
- -
- - - - - - {{ __('avored::system.shipping_option') }} - - - {{ __('avored::system.payment_option') }} - - - - - {{ __('avored::system.actions') }} - - - - - @foreach ($orders as $order) - - - {{ $order->shipping_option ?? '' }} - - - - {{ $order->payment_option ?? '' }} - - - - -
- - - - -
-
-
- @endforeach -
-
-
- {{ $orders->render() }} -
-
-
-
-
-
diff --git a/resources/views/partials/header.blade.php b/resources/views/partials/header.blade.php deleted file mode 100644 index b14a3f8a1..000000000 --- a/resources/views/partials/header.blade.php +++ /dev/null @@ -1,44 +0,0 @@ -
diff --git a/resources/views/partials/sidebar.blade.php b/resources/views/partials/sidebar.blade.php deleted file mode 100644 index 5322e5a31..000000000 --- a/resources/views/partials/sidebar.blade.php +++ /dev/null @@ -1,42 +0,0 @@ -
-
- AvoRed Ecommerce - AvoRed -
- -
- -
-
diff --git a/resources/views/system/components/form/alert.blade.php b/resources/views/system/components/form/alert.blade.php deleted file mode 100644 index 7fef19b04..000000000 --- a/resources/views/system/components/form/alert.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@if (!empty($message)) -
-

{{ $message }}

-
-@endif diff --git a/resources/views/system/components/form/checkbox.blade.php b/resources/views/system/components/form/checkbox.blade.php deleted file mode 100644 index 8b8e2b7ae..000000000 --- a/resources/views/system/components/form/checkbox.blade.php +++ /dev/null @@ -1,10 +0,0 @@ - - diff --git a/resources/views/system/components/form/easymde.blade.php b/resources/views/system/components/form/easymde.blade.php deleted file mode 100644 index 2c1eb81b3..000000000 --- a/resources/views/system/components/form/easymde.blade.php +++ /dev/null @@ -1,21 +0,0 @@ -
- @if ($label) - - @endif -
- - - @if ($errors->has($name)) -
- {{ $errors->first($name) }} -
- @endif -
-
diff --git a/resources/views/system/components/form/form.blade.php b/resources/views/system/components/form/form.blade.php deleted file mode 100644 index 9fd1cd2c5..000000000 --- a/resources/views/system/components/form/form.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -
- @csrf - @if (strtoupper($method) === 'PUT') - @method('put') - @endif - @if (strtoupper($method) === 'DELETE') - @method('delete') - @endif - - {{ $slot }} -
diff --git a/resources/views/system/components/form/input.blade.php b/resources/views/system/components/form/input.blade.php deleted file mode 100644 index c49442848..000000000 --- a/resources/views/system/components/form/input.blade.php +++ /dev/null @@ -1,19 +0,0 @@ -
- @if ($label) - - @endif -
- merge([ - 'autofocus' => false, - ]) }} class="avored-input {{ ($errors->has($name)) ? 'ring-red-400' : '' }} {{ $class }}" /> - @if ($errors->has($name)) -
- {{ $errors->first($name) }} -
- @endif -
-
- -{{-- ring-1 ring-gray-300 px-3 py-2 w-full rounded focus:outline-none focus:ring-red-500 --}} diff --git a/resources/views/system/components/form/link.blade.php b/resources/views/system/components/form/link.blade.php deleted file mode 100644 index 0bb4b15de..000000000 --- a/resources/views/system/components/form/link.blade.php +++ /dev/null @@ -1,24 +0,0 @@ -@switch($style) - @case('normal') - - {{ $slot }} - - @break - @case('button-primary') - - {{ $slot }} - - @break - @case('button-default') - - {{ $slot }} - - @break - @default - -@endswitch diff --git a/resources/views/system/components/form/select.blade.php b/resources/views/system/components/form/select.blade.php deleted file mode 100644 index 5de1ed1da..000000000 --- a/resources/views/system/components/form/select.blade.php +++ /dev/null @@ -1,22 +0,0 @@ -
- @if ($label) - - @endif -
- - - @if ($errors->has($name)) -
- {{ $errors->first($name) }} -
- @endif -
-
diff --git a/resources/views/system/components/form/select2.blade.php b/resources/views/system/components/form/select2.blade.php deleted file mode 100644 index 08b2fe4ab..000000000 --- a/resources/views/system/components/form/select2.blade.php +++ /dev/null @@ -1,92 +0,0 @@ -
- - -
- -
- -
-
-
-
- -
- -
-
-
- - - -
-
-
-
-
-
- -
-
-
-
-
-
-
diff --git a/resources/views/system/components/form/toggle.blade.php b/resources/views/system/components/form/toggle.blade.php deleted file mode 100644 index cfb06e3e8..000000000 --- a/resources/views/system/components/form/toggle.blade.php +++ /dev/null @@ -1,18 +0,0 @@ - - -
-
-
-
- {{ $label }} - -
diff --git a/resources/views/system/components/form/upload.blade.php b/resources/views/system/components/form/upload.blade.php deleted file mode 100644 index 47864d260..000000000 --- a/resources/views/system/components/form/upload.blade.php +++ /dev/null @@ -1,138 +0,0 @@ -
-
- - -
- -

Drag your files here or click in this area.

-
-
- - -
- - - - diff --git a/resources/views/system/components/layouts/app.blade.php b/resources/views/system/components/layouts/app.blade.php deleted file mode 100644 index 51c62420f..000000000 --- a/resources/views/system/components/layouts/app.blade.php +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - @yield('meta_title', 'AvoRed E commerce') - - - - - - -
- @include('avored::partials.sidebar') - -
- @include('avored::partials.header') - - {!! Breadcrumb::render(Route::currentRouteName()) !!} - {{ $slot }} -
-
- - @stack('scripts') - - - diff --git a/resources/views/system/components/table.blade.php b/resources/views/system/components/table.blade.php deleted file mode 100644 index 122c5c797..000000000 --- a/resources/views/system/components/table.blade.php +++ /dev/null @@ -1,20 +0,0 @@ -@props([ - 'header', - 'body', -]) - -
-
-
- - - {{ $header }} - - - {{ $body }} - -
-
-
-
diff --git a/resources/views/system/components/table/cell.blade.php b/resources/views/system/components/table/cell.blade.php deleted file mode 100644 index 5648f7285..000000000 --- a/resources/views/system/components/table/cell.blade.php +++ /dev/null @@ -1,3 +0,0 @@ - - {{ $slot }} - diff --git a/resources/views/system/components/table/header.blade.php b/resources/views/system/components/table/header.blade.php deleted file mode 100644 index 1c5ab0d89..000000000 --- a/resources/views/system/components/table/header.blade.php +++ /dev/null @@ -1,3 +0,0 @@ - - {{ $slot }} - diff --git a/resources/views/system/components/table/row.blade.php b/resources/views/system/components/table/row.blade.php deleted file mode 100644 index 14b26c028..000000000 --- a/resources/views/system/components/table/row.blade.php +++ /dev/null @@ -1,3 +0,0 @@ - - {{ $slot }} - diff --git a/resources/views/system/configuration/cards/basic.blade.php b/resources/views/system/configuration/cards/basic.blade.php deleted file mode 100644 index a60eabcd9..000000000 --- a/resources/views/system/configuration/cards/basic.blade.php +++ /dev/null @@ -1,23 +0,0 @@ - -
- -
-
- -
-
- -
diff --git a/resources/views/system/configuration/cards/tax.blade.php b/resources/views/system/configuration/cards/tax.blade.php deleted file mode 100644 index e69de29bb..000000000 diff --git a/resources/views/system/configuration/index.blade.php b/resources/views/system/configuration/index.blade.php deleted file mode 100644 index f6cc84bb7..000000000 --- a/resources/views/system/configuration/index.blade.php +++ /dev/null @@ -1,53 +0,0 @@ - -
-
-
-

- {{ __('avored::system.system_configuration') }} -

- -
- -
- - - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - {{ __('avored::system.cancel') }} - -
-
-
-
- -
- -
diff --git a/resources/views/system/role/_fields.blade.php b/resources/views/system/role/_fields.blade.php deleted file mode 100644 index cbae3595a..000000000 --- a/resources/views/system/role/_fields.blade.php +++ /dev/null @@ -1,33 +0,0 @@ - -
- -
- -
- @foreach ($permissions as $group) -
-
-
- {{ $group->label() }} -
-
- @foreach ($group->permissionList as $permission) -
- - -
- @endforeach -
-
-
- @endforeach -
diff --git a/resources/views/system/role/create.blade.php b/resources/views/system/role/create.blade.php deleted file mode 100644 index 71cbc039f..000000000 --- a/resources/views/system/role/create.blade.php +++ /dev/null @@ -1,53 +0,0 @@ - -
-
-
-

- {{ __('avored::system.create') }} {{ __('avored::system.role') }} -

- -
- -
- - - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - Cancel - -
-
-
-
- -
- -
diff --git a/resources/views/system/role/edit.blade.php b/resources/views/system/role/edit.blade.php deleted file mode 100644 index c191a658d..000000000 --- a/resources/views/system/role/edit.blade.php +++ /dev/null @@ -1,50 +0,0 @@ - -
-
-
-

- {{ __('avored::system.edit') }} {{ __('avored::system.role') }} -

- -
- -
- - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - {{ __('avored::system.cancel') }} - -
-
-
-
-
-
diff --git a/resources/views/system/role/index.blade.php b/resources/views/system/role/index.blade.php deleted file mode 100644 index c998a6cc1..000000000 --- a/resources/views/system/role/index.blade.php +++ /dev/null @@ -1,114 +0,0 @@ - -
-
-
-

- {{ __('avored::system.role') }} {{ __('avored::system.list') }} -

- - - {{ __('avored::system.create') }} - - -
- -
- -
- - - - - {{ __('avored::system.name') }} - - - {{ __('avored::system.actions') }} - - - - - @foreach ($roles as $role) - - - {{ $role->name ?? '' }} - - - -
- - - - | - - - - - - - - -
-
-
- @endforeach -
-
-
- {{ $roles->render() }} -
-
-
-
- - -
-
diff --git a/resources/views/user/auth/login-form.blade.php b/resources/views/user/auth/login-form.blade.php deleted file mode 100644 index 520f0bd72..000000000 --- a/resources/views/user/auth/login-form.blade.php +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - @yield('meta_title', 'AvoRed E commerce') - - - - -
-
-
-
- - AvoRed Ecommerce - -

- {{ __('avored::system.login_to_avored_admin') }} -

-

-

-
- - -
- -
- -
- -
- -
-
- - -
- - -
- -
- -
-
-
-
-
- - diff --git a/resources/views/user/auth/password/new.blade.php b/resources/views/user/auth/password/new.blade.php deleted file mode 100644 index c60dc8819..000000000 --- a/resources/views/user/auth/password/new.blade.php +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - @yield('meta_title', 'AvoRed E commerce') - - - - -
-
-
-
- - AvoRed Ecommerce - -

- {{ __('avored::system.reset_your_avored_admin') }} -

-

-

-
- - - - - - -
- -
-
- -
-
- -
- - -
- -
-
-
-
-
- - diff --git a/resources/views/user/auth/reset.blade.php b/resources/views/user/auth/reset.blade.php deleted file mode 100644 index a9b1a7acf..000000000 --- a/resources/views/user/auth/reset.blade.php +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - @yield('meta_title', 'AvoRed E commerce') - - - - -
-
-
-
- - AvoRed Ecommerce - -

- {{ __('avored::system.reset_your_avored_admin') }} -

-

-

-
- - - - - - -
- -
- -
- -
-
-
-
-
- - diff --git a/resources/views/user/staff/_fields.blade.php b/resources/views/user/staff/_fields.blade.php deleted file mode 100644 index 6c364fc5f..000000000 --- a/resources/views/user/staff/_fields.blade.php +++ /dev/null @@ -1,88 +0,0 @@ -
-
-
- -
-
-
-
- -
-
-
- -
- @if (!isset($staff)) - - @else - - @endif -
- - -
- -
- - -
- - - @foreach ($options as $optionValue => $optionLabel) - - @endforeach - - -
- -@if (!isset($staff)) -
-
-
- -
-
- -
-
- -
-
-
-@endif diff --git a/resources/views/user/staff/create.blade.php b/resources/views/user/staff/create.blade.php deleted file mode 100644 index 018285271..000000000 --- a/resources/views/user/staff/create.blade.php +++ /dev/null @@ -1,53 +0,0 @@ - -
-
-
-

- {{ __('avored::system.create') }} {{ __('avored::system.staff') }} -

- -
- -
- - - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - Cancel - -
-
-
-
- -
- -
diff --git a/resources/views/user/staff/edit.blade.php b/resources/views/user/staff/edit.blade.php deleted file mode 100644 index f7ef79ed5..000000000 --- a/resources/views/user/staff/edit.blade.php +++ /dev/null @@ -1,50 +0,0 @@ - -
-
-
-

- {{ __('avored::system.edit') }} {{ __('avored::system.staff') }} -

- -
- -
- - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - Cancel - -
-
-
-
-
-
diff --git a/resources/views/user/staff/index.blade.php b/resources/views/user/staff/index.blade.php deleted file mode 100644 index 4021b09a7..000000000 --- a/resources/views/user/staff/index.blade.php +++ /dev/null @@ -1,122 +0,0 @@ - -
-
-
-

- {{ __('avored::system.staff') }} {{ __('avored::system.list') }} -

- - - {{ __('avored::system.create') }} - - -
- -
- -
- - - - - {{ __('avored::system.first_name') }} - - - {{ __('avored::system.last_name') }} - - - {{ __('avored::system.email') }} - - - {{ __('avored::system.actions') }} - - - - - @foreach ($staffs as $staff) - - - {{ $staff->first_name ?? '' }} - - - {{ $staff->last_name ?? '' }} - - - {{ $staff->email ?? '' }} - - -
- - - - | - - - - - -
-
-
- @endforeach -
-
-
- {{ $staffs->render() }} -
-
-
-
- - -
-
diff --git a/resources/views/user/subscriber/_fields.blade.php b/resources/views/user/subscriber/_fields.blade.php deleted file mode 100644 index 9f2a99fdb..000000000 --- a/resources/views/user/subscriber/_fields.blade.php +++ /dev/null @@ -1,24 +0,0 @@ -
- -
- - -
- - - - - -
diff --git a/resources/views/user/subscriber/create.blade.php b/resources/views/user/subscriber/create.blade.php deleted file mode 100644 index 63beabccf..000000000 --- a/resources/views/user/subscriber/create.blade.php +++ /dev/null @@ -1,53 +0,0 @@ - -
-
-
-

- {{ __('avored::system.create') }} {{ __('avored::system.subscriber') }} -

- -
- -
- - - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - Cancel - -
-
-
-
- -
- -
diff --git a/resources/views/user/subscriber/edit.blade.php b/resources/views/user/subscriber/edit.blade.php deleted file mode 100644 index 4cae30434..000000000 --- a/resources/views/user/subscriber/edit.blade.php +++ /dev/null @@ -1,50 +0,0 @@ - -
-
-
-

- {{ __('avored::system.edit') }} {{ __('avored::system.subscriber') }} -

- -
- -
- - @foreach ($tabs as $tab) -
-
-
- - {{ $tab->label() }} - - - - -
- -
-
- @php - $path = $tab->view(); - @endphp - @include($path) -
-
- @endforeach - -
- - - - {{ __('avored::system.cancel') }} - -
-
-
-
-
-
diff --git a/resources/views/user/subscriber/index.blade.php b/resources/views/user/subscriber/index.blade.php deleted file mode 100644 index eaaa41552..000000000 --- a/resources/views/user/subscriber/index.blade.php +++ /dev/null @@ -1,132 +0,0 @@ - -
-
-
-

- {{ __('avored::system.subscriber') }} {{ __('avored::system.list') }} -

- - - {{ __('avored::system.create') }} - - -
- -
-
- - - - - {{ __('avored::system.email') }} - - - {{ __('avored::system.status') }} - - - {{ __('avored::system.actions') }} - - - - - @foreach ($subscribers as $subscriber) - - - {{ $subscriber->email ?? '' }} - - - {{ $subscriber->status ?? '' }} - - -
- - - - | - - - - - -
-
-
- @endforeach -
-
-
- {{ $subscribers->render() }} -
-
-
-
- - -
-
diff --git a/routes/web.php b/routes/web.php deleted file mode 100644 index c20473149..000000000 --- a/routes/web.php +++ /dev/null @@ -1,100 +0,0 @@ -prefix($baseAdminUrl) - ->namespace('AvoRed\\Framework') - ->name('admin.') - ->group(function () { - - /***************** LOGIN ROUTE *****************/ - Route::get('login', [LoginController::class, 'loginForm']) - ->name('login'); - Route::post('login', [LoginController::class, 'login']) - ->name('login.post'); - Route::post('logout', [LoginController::class, 'logout']) - ->name('logout'); - - /***************** PASSWORD RESET *****************/ - Route::get( - 'password/reset', - [\AvoRed\Framework\User\Controllers\ForgotPasswordController::class, 'linkRequestForm'] - )->name('password.request'); - Route::post( - 'password/email', - [\AvoRed\Framework\User\Controllers\ForgotPasswordController::class, 'sendResetLinkEmail'] - )->name('password.email'); - - Route::get( - 'password/reset/{token}', - [\AvoRed\Framework\User\Controllers\ResetPasswordController::class, 'showResetForm'] - )->name('password.reset'); - Route::post('password/reset', [\AvoRed\Framework\User\Controllers\ResetPasswordController::class, 'reset']) - ->name('password.update'); - }); - -Route::middleware(['web', 'admin.auth:admin', 'permission']) - ->prefix($baseAdminUrl) - ->name('admin.') - ->group(function () { - - Route::get('', [DashboardController::class, 'index']) - ->name('dashboard'); - - - /***************** CATALOG ROUTES *****************/ - Route::resource('category', CategoryController::class); - Route::resource('property', PropertyController::class); - Route::resource('attribute', AttributeController::class); - Route::resource('product', ProductController::class); - - - /***************** USER ROUTES *****************/ - Route::resource('staff', StaffController::class); - Route::resource('subscriber', SubscriberController::class); - - - /***************** ORDER ROUTES *****************/ - Route::resource('order-status', OrderStatusController::class); - Route::get('order', [OrderController::class, 'index'])->name('order.index'); - Route::get('order/{order}', [OrderController::class, 'show'])->name('order.show'); - - - /***************** CMS ROUTES *****************/ - Route::resource('page', PageController::class); - - - /***************** SYSTEM ROUTES *****************/ - Route::resource('role', RoleController::class); - Route::get('configuration', [\AvoRed\Framework\System\Controllers\ConfigurationController::class, 'index']) - ->name('configuration.index'); - Route::post('configuration', [\AvoRed\Framework\System\Controllers\ConfigurationController::class, 'store']) - ->name('configuration.store'); - }); diff --git a/src/AvoRedServiceProvider.php b/src/AvoRedServiceProvider.php deleted file mode 100644 index f853115f3..000000000 --- a/src/AvoRedServiceProvider.php +++ /dev/null @@ -1,238 +0,0 @@ -ignorePassport(); - $this->registerProviders(); - $this->registerConfigData(); - $this->registerRoutePath(); - $this->registerMiddleware(); - // $this->registerViewComposerData(); - $this->registerConsoleCommands(); - $this->registerMigrationPath(); - $this->registerViewPath(); - $this->registerAssets(); - - } - - /** - * Bootstrap services. - * @return void - */ - public function boot() - { - $this->registerTranslationPath(); - $this->setupPublishFiles(); - } - - /** - * Register Route Path. - * @return void - */ - public function ignorePassport() - { - Passport::ignoreMigrations(); - Passport::setClientUuids(true); - Passport::useClientModel(OauthClient::class); - } - - /** - * Register Route Path. - * @return void - */ - public function registerRoutePath() - { - $this->loadRoutesFrom(__DIR__ . '/../routes/web.php'); - } - - /** - * Register Console Commands. - * @return void - */ - public function registerConsoleCommands() - { - $this->commands([InstallCommand::class]); - $this->commands([AdminMakeCommand::class]); - } - - /** - * Register Migration Path. - * @return void - */ - public function registerMigrationPath() - { - $this->loadMigrationsFrom(__DIR__ . '/../database/migrations'); - } - - /** - * Register View Path. - * @return void - */ - public function registerViewPath() - { - $this->loadViewsFrom(__DIR__ . '/../resources/views', 'avored'); - } - - /** - * Register Translation Path. - * @return void - */ - public function registerTranslationPath() - { - $this->loadTranslationsFrom(__DIR__ . '/../resources/lang', 'avored'); - } - - /** - * Registering AvoRed E commerce Service Provider. - * @return void - */ - protected function registerProviders() - { - foreach ($this->providers as $provider) { - App::register($provider); - } - } - - /** - * Registering AvoRed E commerce Middleware. - * @return void - */ - protected function registerMiddleware() - { - $router = $this->app['router']; - $router->aliasMiddleware('admin.auth', AdminAuth::class); - $router->aliasMiddleware('admin.guest', RedirectIfAdminAuth::class); - $router->aliasMiddleware('permission', MiddlewarePermission::class); - // $router->aliasMiddleware('avored', AvoRedCore::class); - } - - /** - * Register config data for AvoRed E commerce Framework. - * @return void - */ - public function registerConfigData() - { - $this->mergeConfigFrom( - __DIR__ . '/../config/avored.php', - 'avored' - ); - $avoredConfigData = include __DIR__ . '/../config/avored.php'; - $authConfig = $this->app['config']->get('auth', []); - - // $this->app['config']->set( - // 'passport.client_uuids', - // true - // ); - - $this->app['config']->set( - 'auth.guards', - array_merge($authConfig['guards'], $avoredConfigData['auth']['guards']) - ); - $this->app['config']->set( - 'auth.providers', - array_merge($authConfig['providers'], $avoredConfigData['auth']['providers']) - ); - $this->app['config']->set( - 'auth.passwords', - array_merge($authConfig['passwords'], $avoredConfigData['auth']['passwords']) - ); - } - - /** - * Registering Class Based View Composer. - * @return void - */ - public function registerViewComposerData() - { - View::composer('avored::layouts.app', LayoutComposer::class); - } - - /** - * Registering AvoRed Assets. - * @return void - */ - public function registerAssets() - { - // Asset::registerJS(function (AssetItem $item) { - // $item->key('avored.avored.js') - // ->path(__DIR__ . '/../dist/js/avored.js'); - // }); - // Asset::registerJS(function (AssetItem $item) { - // $item->key('avored.app.js') - // ->path(__DIR__ . '/../dist/js/app.js'); - // }); - // Asset::registerCSS(function (AssetItem $item) { - // $item->key('avored.app.css') - // ->path(__DIR__ . '/../dist/css/app.css'); - // }); - } - - /** - * Set up the file which can be published to use the package. - * @return void - */ - public function setupPublishFiles() - { - $this->publishes([ - __DIR__ . '/../config/avored.php' => config_path('avored.php'), - ], 'avored-config'); - - $this->publishes([ - __DIR__ . '/../dist' => public_path(), - ], 'avored-public'); - } - - -} diff --git a/src/Breadcrumb/Breadcrumb.php b/src/Breadcrumb/Breadcrumb.php deleted file mode 100644 index d3dae2ae3..000000000 --- a/src/Breadcrumb/Breadcrumb.php +++ /dev/null @@ -1,18 +0,0 @@ -parents = new Collection(); - - $callable($this); - } - - /** - * Get/Set AvoRed BreakCrumb Label. - * - * @var string|null - * @return mixed - */ - public function label($label = null) - { - if (null === $label) { - return $this->label; - } - $this->label = $label; - - return $this; - } - - /** - * Get/Set AvoRed BreakCrumb Route. - * - * @var string|null - * @return mixed - */ - public function route($route = null) - { - if (null === $route) { - return $this->route; - } - $this->route = $route; - - return $this; - } - - /** - * Set AvoRed BreakCrumb Parents. - * - * @var string - * @return \AvoRed\Framework\Breadcrumb\Breadcrumb - */ - public function parent($key): self - { - $breadcrumb = Breadcrumb::get($key); - $this->parents->put($key, $breadcrumb); - - return $this; - } -} diff --git a/src/Breadcrumb/BreadcrumbProvider.php b/src/Breadcrumb/BreadcrumbProvider.php deleted file mode 100644 index 5b9adcc86..000000000 --- a/src/Breadcrumb/BreadcrumbProvider.php +++ /dev/null @@ -1,641 +0,0 @@ -registerBreadcrumb(); - } - - /** - * Register the service provider. - * @return void - */ - public function register() - { - $this->registerServices(); - $this->app->alias('breadcrumb', 'AvoRed\Framework\Breadcrumb\Builder'); - } - - /** - * Register the Admin Menu instance. - * - * @return void - */ - protected function registerServices() - { - $this->app->singleton( - 'breadcrumb', - function () { - return new Builder(); - } - ); - } - - /** - * Get the services provided by the provider. - * - * @return array - */ - public function provides() - { - return ['breadcrumb', 'AvoRed\Framework\Breadcrumb\Builder']; - } - - /** - * Register the Menus. - * - * @return void - */ - protected function registerBreadcrumb() - { - Breadcrumb::make( - 'admin.dashboard', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.dashboard'); - } - ); - - Breadcrumb::make( - 'admin.category.index', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.category') - ->parent('admin.dashboard'); - } - ); - - Breadcrumb::make( - 'admin.category.create', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.create') - ->parent('admin.dashboard') - ->parent('admin.category.index'); - } - ); - - Breadcrumb::make( - 'admin.category.edit', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.edit') - ->parent('admin.dashboard') - ->parent('admin.category.index'); - } - ); - - // Breadcrumb::make( - // 'admin.promotion-code.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.promotion-code.index') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.promotion-code.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.promotion-code.create') - // ->parent('admin.dashboard') - // ->parent('admin.promotion-code.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.promotion-code.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.promotion-code.edit') - // ->parent('admin.dashboard') - // ->parent('admin.promotion-code.index'); - // } - // ); - - Breadcrumb::make( - 'admin.role.index', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.role') - ->parent('admin.dashboard'); - } - ); - - Breadcrumb::make( - 'admin.role.create', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.create') - ->parent('admin.dashboard') - ->parent('admin.role.index'); - } - ); - - Breadcrumb::make( - 'admin.role.edit', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.edit') - ->parent('admin.dashboard') - ->parent('admin.role.index'); - } - ); - - Breadcrumb::make( - 'admin.subscriber.index', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.subscriber') - ->parent('admin.dashboard'); - } - ); - - Breadcrumb::make( - 'admin.subscriber.create', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.create') - ->parent('admin.dashboard') - ->parent('admin.subscriber.index'); - } - ); - - Breadcrumb::make( - 'admin.subscriber.edit', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.edit') - ->parent('admin.dashboard') - ->parent('admin.subscriber.index'); - } - ); - - Breadcrumb::make( - 'admin.staff.index', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.staff') - ->parent('admin.dashboard'); - } - ); - - Breadcrumb::make( - 'admin.staff.create', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.create') - ->parent('admin.dashboard') - ->parent('admin.staff.index'); - } - ); - - Breadcrumb::make( - 'admin.staff.edit', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.edit') - ->parent('admin.dashboard') - ->parent('admin.staff.index'); - } - ); - - // Breadcrumb::make( - // 'admin.language.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.language.index') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.language.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.language.create') - // ->parent('admin.dashboard') - // ->parent('admin.language.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.language.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.language.edit') - // ->parent('admin.dashboard') - // ->parent('admin.language.index'); - // } - // ); - - Breadcrumb::make( - 'admin.property.index', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.property') - ->parent('admin.dashboard'); - } - ); - - Breadcrumb::make( - 'admin.property.create', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.create') - ->parent('admin.dashboard') - ->parent('admin.property.index'); - } - ); - - Breadcrumb::make( - 'admin.property.edit', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.edit') - ->parent('admin.dashboard') - ->parent('admin.property.index'); - } - ); - - Breadcrumb::make( - 'admin.order-status.index', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.order-status') - ->parent('admin.dashboard'); - } - ); - - Breadcrumb::make( - 'admin.order-status.create', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.create') - ->parent('admin.dashboard') - ->parent('admin.order-status.index'); - } - ); - - Breadcrumb::make( - 'admin.order-status.edit', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.edit') - ->parent('admin.dashboard') - ->parent('admin.order-status.index'); - } - ); - // Breadcrumb::make( - // 'admin.status.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.status.index') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.status.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.status.create') - // ->parent('admin.dashboard') - // ->parent('admin.status.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.status.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.status.edit') - // ->parent('admin.dashboard') - // ->parent('admin.status.index'); - // } - // ); - // Breadcrumb::make( - // 'admin.admin-user.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.admin-user.index') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.admin-user.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.admin-user.create') - // ->parent('admin.dashboard') - // ->parent('admin.admin-user.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.admin-user.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.admin-user.edit') - // ->parent('admin.dashboard') - // ->parent('admin.admin-user.index'); - // } - // ); - // Breadcrumb::make( - // 'admin.currency.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.currency.index') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.currency.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.currency.create') - // ->parent('admin.dashboard') - // ->parent('admin.currency.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.currency.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.currency.edit') - // ->parent('admin.dashboard') - // ->parent('admin.currency.index'); - // } - // ); - - Breadcrumb::make( - 'admin.page.index', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.page') - ->parent('admin.dashboard'); - } - ); - - Breadcrumb::make( - 'admin.page.create', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.create') - ->parent('admin.dashboard') - ->parent('admin.page.index'); - } - ); - - Breadcrumb::make( - 'admin.page.edit', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.edit') - ->parent('admin.dashboard') - ->parent('admin.page.index'); - } - ); - Breadcrumb::make( - 'admin.attribute.index', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.attribute') - ->parent('admin.dashboard'); - } - ); - - Breadcrumb::make( - 'admin.attribute.create', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.create') - ->parent('admin.dashboard') - ->parent('admin.attribute.index'); - } - ); - - Breadcrumb::make( - 'admin.attribute.edit', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.edit') - ->parent('admin.dashboard') - ->parent('admin.attribute.index'); - } - ); - // Breadcrumb::make( - // 'admin.user-group.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.user-group.index') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.user-group.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.user-group.create') - // ->parent('admin.dashboard') - // ->parent('admin.user-group.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.user-group.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.user-group.edit') - // ->parent('admin.dashboard') - // ->parent('admin.user-group.index'); - // } - // ); - // Breadcrumb::make( - // 'admin.tax-group.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.tax-group.index') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.tax-group.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.tax-group.create') - // ->parent('admin.dashboard') - // ->parent('admin.tax-group.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.tax-group.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.tax-group.edit') - // ->parent('admin.dashboard') - // ->parent('admin.user-group.index'); - // } - // ); - // Breadcrumb::make( - // 'admin.tax-rate.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.tax-rate.index') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.tax-rate.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.tax-rate.create') - // ->parent('admin.dashboard') - // ->parent('admin.tax-rate.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.tax-rate.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.tax-rate.edit') - // ->parent('admin.dashboard') - // ->parent('admin.tax-rate.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.configuration.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.configuration') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.order.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.order.index') - // ->parent('admin.dashboard'); - // } - // ); - // Breadcrumb::make( - // 'admin.order.show', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.order.show') - // ->parent('admin.dashboard') - // ->parent('admin.order.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.menu-group.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.menu.index') - // ->parent('admin.dashboard'); - // } - // ); - // Breadcrumb::make( - // 'admin.menu-group.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.menu.create') - // ->parent('admin.dashboard') - // ->parent('admin.menu-group.index'); - // } - // ); - // Breadcrumb::make( - // 'admin.menu-group.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.menu.edit') - // ->parent('admin.dashboard'); - // } - // ); - // Breadcrumb::make( - // 'admin.menu.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.menu.index') - // ->parent('admin.dashboard'); - // } - // ); - // Breadcrumb::make( - // 'admin.menu.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.menu.create') - // ->parent('admin.dashboard'); - // } - // ); - // Breadcrumb::make( - // 'admin.menu.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.menu.edit') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.customer.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.customer.index') - // ->parent('admin.dashboard'); - // } - // ); - // Breadcrumb::make( - // 'admin.customer.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.customer.create') - // ->parent('admin.dashboard'); - // } - // ); - // Breadcrumb::make( - // 'admin.customer.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.customer.edit') - // ->parent('admin.dashboard'); - // } - // ); - - Breadcrumb::make( - 'admin.product.index', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.product') - ->parent('admin.dashboard'); - } - ); - - Breadcrumb::make( - 'admin.product.create', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.create') - ->parent('admin.dashboard') - ->parent('admin.product.index'); - } - ); - - Breadcrumb::make( - 'admin.product.edit', - function (BreadcrumbItem $breadcrumb) { - $breadcrumb->label('avored::system.edit') - ->parent('admin.dashboard') - ->parent('admin.product.index'); - } - ); - - // Breadcrumb::make( - // 'admin.state.index', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.state.index') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.state.create', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.state.create') - // ->parent('admin.dashboard') - // ->parent('admin.state.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.state.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.state.edit') - // ->parent('admin.dashboard') - // ->parent('admin.state.index'); - // } - // ); - - // Breadcrumb::make( - // 'admin.promotion.code.table', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.promotion-code.index') - // ->parent('admin.dashboard'); - // } - // ); - - // Breadcrumb::make( - // 'admin.promotion.code.edit', - // function (BreadcrumbItem $breadcrumb) { - // $breadcrumb->label('avored::system.breadcrumb.promotion-code.edit') - // ->parent('admin.dashboard') - // ->parent('admin.promotion.code.table'); - // } - // ); - } -} diff --git a/src/Breadcrumb/Builder.php b/src/Breadcrumb/Builder.php deleted file mode 100644 index 62a383179..000000000 --- a/src/Breadcrumb/Builder.php +++ /dev/null @@ -1,71 +0,0 @@ -collection = new Collection(); - } - - /** - * Breadcrumb Make an Object. - * - * @param string $name - * @param callable $callable - * @return void - */ - public function make($name, callable $callable) - { - $breadcrumb = new BreadcrumbItem($callable); - $breadcrumb->route($name); - - $this->collection->put($name, $breadcrumb); - } - - /** - * Render BreakCrumb for the Route Name. - * - * @param string $routeName - * @return string|\Illuminate\View\View - */ - public function render($routeName) - { - $breadcrumb = $this->collection->get($routeName); - - if (null === $breadcrumb) { - return ''; - } - return view('avored::breadcrumb.index') - ->with(compact('breadcrumb')); - } - - /** - * Get Breadcrum from collection. - * - * @param string $key - * @return mixed $route - */ - public function get($key) - { - return $this->collection->get($key); - } -} diff --git a/src/Cart/Cart.php b/src/Cart/Cart.php deleted file mode 100644 index 239c2e4a2..000000000 --- a/src/Cart/Cart.php +++ /dev/null @@ -1,17 +0,0 @@ -productRepository = $productRepository; - $this->cartProductRepository = $cartProductRepository; - } - - /** - * Destroy Product from Cart By Given Slug. - * @param string $slug - * @return self - */ - public function destroy(string $slug) - { - $product = $this->getProductBySlug($slug); - $this->cartProductRepository->query()->where('product_id', $product->id)->where('visitor_id', $this->visitor())->delete(); - } - /** - * update Product from Cart By Given Slug. - * @param string $slug - * @return self - */ - public function update(string $slug, $qty) - { - /** @var Product $product */ - $product = $this->productRepository->findBySlug($slug); - $cartProduct = $this->getCartProduct($product->id); - - $cartProduct->qty = $qty; - $cartProduct->save(); - return $this; - } - /** - * Add Product to Cart By Given Slug. - * @param string $slug - * @param int $qty - * @param array $attributes - * @return CartProduct - */ - public function add(string $slug, float $qty = 1, array $attributes = []): CartProduct - { - /** @var Product $product */ - $product = $this->productRepository->findBySlug($slug); - $cartProduct = $this->getCartProduct($product->id); - - if ($cartProduct !== null) { - $cartProduct->qty = $cartProduct->qty + $qty; - $cartProduct->save(); - } else { - $data = [ - 'visitor_id' => $this->visitor, - 'product_id' => $product->id, - 'qty' => $qty - ]; - $cartProduct = $this->cartProductRepository->create($data); - } - - return $cartProduct; - } - - public function getProductBySlug(string $slug): Product - { - return $this->productRepository->findBySlug($slug); - } - /** - * - * @param string $productId - * @return CartProduct|null $cartProduct - */ - public function getCartProduct(string $productId): ?CartProduct - { - return $this->cartProductRepository - ->query() - ->where('visitor_id', $this->visitor()) - ->where('product_id', $productId) - ->first(); - } - /** - * To check if the Product Existing in the Cart - * @param string $slug - * @return boolean - */ - protected function exist($slug): bool - { - return $this->getSession()->has($slug); - } - - /** - * Clear the All Cart Products. - * @return void - */ - public function clear() - { - - } - - /** - * Get the Current Collection for the Prophetoducts. - * @return \Illuminate\Support\Collection - */ - public function getSession() - { - - } - - /** - * Get the Session Key for the Session Manager. - * @return string $sessionKey - */ - public function visitor($visitor = null) - { - if ($visitor) { - $this->visitor = $visitor; - return $this; - } - - return $this->visitor; - } - - - /** - * Update the Session Collection. - * @return self $this - */ - protected function updateSessionCollection() - { - - return $this; - } - - /** - * Get the List of All the Current Session Cart Products. - * @return \Illuminate\Support\Collection - */ - public function all() - { - return $this->cartProductRepository - ->query() - ->where('visitor_id', $this->visitor()) - ->where('status', CartProduct::WAITING_TO_BE_PLACED_ORDER) - ->get(); - } - - /** - * Get the List of All the Current Session Cart Products. - * @return \Illuminate\Support\Collection - */ - public function toArray() - { - $products = $this->all(); - $items = Collection::make([]); - foreach ($products as $product) { - $items->push([ - 'slug' => $product->slug(), - 'image' => $product->image(), - 'price' => $product->price(), - 'qty' => $product->qty(), - 'name' => $product->name(), - 'tax' => $product->taxAmount(), - 'attributes' => $product->attributes(), - ]); - } - - return $items; - } - - /** - * Get the List of All the Current Session Cart Products. - * @return mixed $cartTotal - */ - public function total($format = true) - { - $products = $this->all(); - $total = 0; - foreach ($products as $product) { - $total += $product->total(); - } - $total = $total - $this->discount(); - - if ($format === true) { - return number_format($total, 2); - } - - return $total; - } - - /** - * Get the Total Number of Products into the Cart. - * @return int $count - */ - public function count() - { - return $this->getSession()->count(); - } -} diff --git a/src/Cart/CartProduct.php b/src/Cart/CartProduct.php deleted file mode 100644 index 7a712091a..000000000 --- a/src/Cart/CartProduct.php +++ /dev/null @@ -1,196 +0,0 @@ -name; - } else { - $this->name = $name; - - return $this; - } - } - - /** - * Set/Get Cart Product id. - * @param mixed $id - * @return mixed $id - */ - public function id($id = null) - { - if ($id === null) { - return $this->id; - } else { - $this->id = $id; - - return $this; - } - } - - /** - * Set/Get Cart Product Tax Amount. - * @param mixed $taxAmount - * @return mixed $taxAmount - */ - public function taxAmount($taxAmount = null) - { - if ($taxAmount === null) { - return $this->taxAmount; - } else { - $this->taxAmount = $taxAmount; - - return $this; - } - } - - /** - * Set/Get Cart Product Name. - * @param mixed $attributes - * @return mixed $attributes - */ - public function attributes($attributes = null) - { - if ($attributes === null) { - return $this->attributes; - } else { - $this->attributes = $attributes; - - return $this; - } - } - - /** - * Set/Get Cart Product Image. - * @param mixed $image - * @return mixed $image - */ - public function image($image = null) - { - if ($image === null) { - return $this->image; - } else { - $this->image = $image; - - return $this; - } - } - - /** - * Set/Get Cart Product Slug. - * @param mixed $slug - * @return mixed $slug - */ - public function slug($slug = null) - { - if ($slug === null) { - return $this->slug; - } else { - $this->slug = $slug; - - return $this; - } - } - - /** - * Set/Get Cart Product Qty. - * @param mixed $qty - * @return mixed $qty - */ - public function qty($qty = null) - { - if ($qty === null) { - return $this->qty; - } else { - $this->qty = $qty; - - return $this; - } - } - - /** - * Set/Get Cart Product Price. - * @param mixed $price - * @return mixed $price - */ - public function price($price = null) - { - if ($price === null) { - return $this->formattedPrice(); - } else { - $this->price = $price; - - return $this; - } - } - public function formattedPrice() - { - return number_format((float) $this->price, 2); - } - - /** - * Get Cart Product Totla. - * @return float $total - */ - public function total(): float - { - return ($this->qty() * $this->price()) + $this->taxAmount(); - } -} diff --git a/src/Cart/CartProvider.php b/src/Cart/CartProvider.php deleted file mode 100644 index 44028fe3f..000000000 --- a/src/Cart/CartProvider.php +++ /dev/null @@ -1,50 +0,0 @@ -registerServices(); - } - - /** - * Register the Admin Menu instance. - * - * @return void - */ - protected function registerServices() - { - $this->app->singleton('cart', CartManager::class ); - } - - /** - * Get the services provided by the provider. - * - * @return array - */ - public function provides() - { - return ['cart', CartManager::class]; - } -} diff --git a/src/Catalog/Controllers/AttributeController.php b/src/Catalog/Controllers/AttributeController.php deleted file mode 100644 index 546573c11..000000000 --- a/src/Catalog/Controllers/AttributeController.php +++ /dev/null @@ -1,121 +0,0 @@ -attributeRepository = $repository; - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index() - { - $attributes = $this->attributeRepository->paginate(); - - return view('avored::catalog.attribute.index') - ->with('attributes', $attributes); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - $displayAsOptions = Attribute::DISPLAY_AS; - $tabs = Tab::get('catalog.attribute'); - - return view('avored::catalog.attribute.create') - ->with('displayAsOptions', $displayAsOptions) - ->with('tabs', $tabs); - } - - /** - * Store a newly created resource in storage. - * - * @param AttributeRequest $request - * @return \Illuminate\Http\Response - */ - public function store(AttributeRequest $request) - { - $attribute = $this->attributeRepository->create($request->all()); - $this->attributeRepository->saveAttributeDropdownOptions($request, $attribute); - - return redirect(route('admin.attribute.index')); - } - - /** - * Show the form for editing the specified resource. - * - * @param Attribute $attribute - * @return \Illuminate\Http\Response - */ - public function edit(Attribute $attribute) - { - $tabs = Tab::get('catalog.attribute'); - - $displayAsOptions = Attribute::DISPLAY_AS; - $tabs = Tab::get('catalog.attribute'); - - $attribute->load('dropdownOptions'); - - return view('avored::catalog.attribute.edit') - ->with('displayAsOptions', $displayAsOptions) - ->with('tabs', $tabs) - ->with('attribute', $attribute); - } - - /** - * Update the specified resource in storage. - * - * @param AttributeRequest $request - * @param Attribute $attribute - * @return \Illuminate\Http\Response - */ - public function update(AttributeRequest $request, Attribute $attribute) - { - $attribute->update($request->all()); - $this->attributeRepository->saveAttributeDropdownOptions($request, $attribute); - return redirect(route('admin.attribute.index')); - } - - /** - * Remove the specified resource from storage. - * - * @param Attribute $attribute - * @return \Illuminate\Http\Response - */ - public function destroy(Attribute $attribute) - { - $attribute->delete(); - - return new JsonResponse([ - 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.attribute')]) - ]); - } -} diff --git a/src/Catalog/Controllers/CategoryController.php b/src/Catalog/Controllers/CategoryController.php deleted file mode 100644 index e1ae8119e..000000000 --- a/src/Catalog/Controllers/CategoryController.php +++ /dev/null @@ -1,118 +0,0 @@ -categoryRepository = $repository; - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index() - { - $categories = $this->categoryRepository->paginate(); - - return view('avored::catalog.category.index') - ->with('categories', $categories); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - $options = $this->categoryRepository->options(); - $tabs = Tab::get('catalog.category'); - - return view('avored::catalog.category.create') - ->with('options', $options) - ->with('tabs', $tabs); - } - - /** - * Store a newly created resource in storage. - * - * @param CategoryRequest $request - * @return \Illuminate\Http\Response - */ - public function store(CategoryRequest $request) - { - $this->categoryRepository->create($request->all()); - - return redirect(route('admin.category.index')); - } - - /** - * Show the form for editing the specified resource. - * - * @param Category $category - * @return \Illuminate\Http\Response - */ - public function edit(Category $category) - { - $tabs = Tab::get('catalog.category'); - - $options = $this->categoryRepository - ->options(); - $options->pull($category->id); - return view('avored::catalog.category.edit') - ->with('category', $category) - ->with('options', $options) - ->with('tabs', $tabs); - } - - /** - * Update the specified resource in storage. - * - * @param CategoryRequest $request - * @param Category $category - * @return \Illuminate\Http\Response - */ - public function update(CategoryRequest $request, Category $category) - { - $category->update($request->all()); - - return redirect(route('admin.category.index')); - } - - /** - * Remove the specified resource from storage. - * - * @param Category $category - * @return \Illuminate\Http\Response - */ - public function destroy(Category $category) - { - $category->delete(); - - return new JsonResponse([ - 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.category')]) - ]); - } -} diff --git a/src/Catalog/Controllers/ProductController.php b/src/Catalog/Controllers/ProductController.php deleted file mode 100644 index 59fd7bd08..000000000 --- a/src/Catalog/Controllers/ProductController.php +++ /dev/null @@ -1,131 +0,0 @@ -productRepository = $repository; - $this->categoryRepository = $categoryRepository; - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index() - { - $products = $this->productRepository->paginate(); - - return view('avored::catalog.product.index') - ->with('products', $products); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - $typeOptions = Product::PRODUCT_TYPES; - $options = $this->categoryRepository->options(); - $tabs = Tab::get('catalog.product'); - - return view('avored::catalog.product.create') - ->with('typeOptions', $typeOptions) - ->with('tabs', $tabs) - ->with('options', $options); - } - - /** - * Store a newly created resource in storage. - * - * @param ProductRequest $request - * @return \Illuminate\Http\Response - */ - public function store(ProductRequest $request) - { - $product = $this->productRepository->create($request->all()); - // $this->productRepository->saveProductDropdownOptions($request, $product); - - return redirect(route('admin.product.index')); - } - - /** - * Show the form for editing the specified resource. - * - * @param Product $product - * @return \Illuminate\Http\Response - */ - public function edit(Product $product) - { - $tabs = Tab::get('catalog.product'); - $options = $this->categoryRepository->options(); - // $displayAsOptions = Product::DISPLAY_AS; - $tabs = Tab::get('catalog.product'); - - return view('avored::catalog.product.edit') - // ->with('displayAsOptions', $displayAsOptions) - ->with('tabs', $tabs) - ->with('options', $options) - ->with('product', $product); - } - - /** - * Update the specified resource in storage. - * - * @param ProductRequest $request - * @param Product $product - * @return \Illuminate\Http\Response - */ - public function update(ProductRequest $request, Product $product) - { - $product->update($request->all()); - $this->productRepository->saveProductCategories($product, $request); - return redirect(route('admin.product.index')); - } - - /** - * Remove the specified resource from storage. - * - * @param Product $product - * @return \Illuminate\Http\Response - */ - public function destroy(Product $product) - { - $product->delete(); - - return new JsonResponse([ - 'success' => true, - 'message' => __('avored::system.success_delete_message', ['product' => __('avored::system.product')]) - ]); - } -} diff --git a/src/Catalog/Controllers/PropertyController.php b/src/Catalog/Controllers/PropertyController.php deleted file mode 100644 index ea46f6d9a..000000000 --- a/src/Catalog/Controllers/PropertyController.php +++ /dev/null @@ -1,125 +0,0 @@ -propertyRepository = $repository; - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index() - { - $properties = $this->propertyRepository->paginate(); - - return view('avored::catalog.property.index') - ->with('properties', $properties); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - $dataTypeOptions = Property::PROPERTY_DATATYPES; - $fieldTypeOptions = Property::PROPERTY_FIELDTYPES; - $tabs = Tab::get('catalog.property'); - - return view('avored::catalog.property.create') - ->with('dataTypeOptions', $dataTypeOptions) - ->with('fieldTypeOptions', $fieldTypeOptions) - ->with('tabs', $tabs); - } - - /** - * Store a newly created resource in storage. - * - * @param PropertyRequest $request - * @return \Illuminate\Http\Response - */ - public function store(PropertyRequest $request) - { - $property = $this->propertyRepository->create($request->all()); - $this->propertyRepository->savePropertyDropdown($request, $property); - - return redirect(route('admin.property.index')); - } - - /** - * Show the form for editing the specified resource. - * - * @param Property $property - * @return \Illuminate\Http\Response - */ - public function edit(Property $property) - { - $tabs = Tab::get('catalog.property'); - - $dataTypeOptions = Property::PROPERTY_DATATYPES; - $fieldTypeOptions = Property::PROPERTY_FIELDTYPES; - $tabs = Tab::get('catalog.property'); - - $property->load('dropdownOptions'); - - return view('avored::catalog.property.edit') - ->with('dataTypeOptions', $dataTypeOptions) - ->with('fieldTypeOptions', $fieldTypeOptions) - ->with('tabs', $tabs) - ->with('property', $property); - } - - /** - * Update the specified resource in storage. - * - * @param PropertyRequest $request - * @param Property $property - * @return \Illuminate\Http\Response - */ - public function update(PropertyRequest $request, Property $property) - { - $property->update($request->all()); - $this->propertyRepository->savePropertyDropdown($request, $property); - return redirect(route('admin.property.index')); - } - - /** - * Remove the specified resource from storage. - * - * @param Property $property - * @return \Illuminate\Http\Response - */ - public function destroy(Property $property) - { - $property->delete(); - - return new JsonResponse([ - 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.property')]) - ]); - } -} diff --git a/src/Catalog/Requests/AttributeRequest.php b/src/Catalog/Requests/AttributeRequest.php deleted file mode 100644 index f3e49e44e..000000000 --- a/src/Catalog/Requests/AttributeRequest.php +++ /dev/null @@ -1,32 +0,0 @@ - 'required', - 'slug' => 'required', - 'display_as' => 'required' - ]; - } -} diff --git a/src/Catalog/Requests/CategoryRequest.php b/src/Catalog/Requests/CategoryRequest.php deleted file mode 100644 index 1d6e84c9f..000000000 --- a/src/Catalog/Requests/CategoryRequest.php +++ /dev/null @@ -1,30 +0,0 @@ - 'required', - ]; - } -} diff --git a/src/Catalog/Requests/ProductRequest.php b/src/Catalog/Requests/ProductRequest.php deleted file mode 100644 index ae6072a9a..000000000 --- a/src/Catalog/Requests/ProductRequest.php +++ /dev/null @@ -1,32 +0,0 @@ - 'required', - 'slug' => 'required', - // 'type' => 'required' - ]; - } -} diff --git a/src/Catalog/Requests/PropertyRequest.php b/src/Catalog/Requests/PropertyRequest.php deleted file mode 100644 index c4612dc7a..000000000 --- a/src/Catalog/Requests/PropertyRequest.php +++ /dev/null @@ -1,31 +0,0 @@ - 'required', - 'slug' => 'required' - ]; - } -} diff --git a/src/Cms/Controllers/PageController.php b/src/Cms/Controllers/PageController.php deleted file mode 100644 index 3ff0e81eb..000000000 --- a/src/Cms/Controllers/PageController.php +++ /dev/null @@ -1,113 +0,0 @@ -pageRepository = $repository; - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index() - { - $pages = $this->pageRepository->paginate(); - - return view('avored::cms.page.index') - ->with('pages', $pages); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - $tabs = Tab::get('cms.page'); - - return view('avored::cms.page.create') - ->with('tabs', $tabs); - } - - /** - * Store a newly created resource in storage. - * - * @param PageRequest $request - * @return \Illuminate\Http\Response - */ - public function store(PageRequest $request) - { - $page = $this->pageRepository->create($request->all()); - - return redirect(route('admin.page.index')); - } - - /** - * Show the form for editing the specified resource. - * - * @param Page $page - * @return \Illuminate\Http\Response - */ - public function edit(Page $page) - { - $tabs = Tab::get('cms.page'); - - return view('avored::cms.page.edit') - ->with('page', $page) - ->with('tabs', $tabs); - } - - /** - * Update the specified resource in storage. - * - * @param PageRequest $request - * @param Page $page - * @return \Illuminate\Http\Response - */ - public function update(PageRequest $request, Page $page) - { - $page->update($request->all()); - - return redirect(route('admin.page.index')); - } - - /** - * Remove the specified resource from storage. - * - * @param Page $page - * @return \Illuminate\Http\Response - */ - public function destroy(Page $page) - { - $page->delete(); - - return new JsonResponse([ - 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.page')]) - ]); - } -} diff --git a/src/Cms/Requests/PageRequest.php b/src/Cms/Requests/PageRequest.php deleted file mode 100644 index cd3403a26..000000000 --- a/src/Cms/Requests/PageRequest.php +++ /dev/null @@ -1,31 +0,0 @@ - 'required', - 'slug' => 'required' - ]; - } -} diff --git a/src/Database/Contracts/AddressModelInterface.php b/src/Database/Contracts/AddressModelInterface.php deleted file mode 100644 index f43d2b528..000000000 --- a/src/Database/Contracts/AddressModelInterface.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Shipping Address', - self::BILLING => 'Billing Address', - ]; - - /** - * Address Belongs to a Country Model. - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function country() - { - return $this->belongsTo(Country::class); - } -} \ No newline at end of file diff --git a/src/Database/Models/AdminUser.php b/src/Database/Models/AdminUser.php deleted file mode 100644 index 901e915c6..000000000 --- a/src/Database/Models/AdminUser.php +++ /dev/null @@ -1,129 +0,0 @@ -notify(new ResetPassword($token)); - } - - /** - * Get the full name for the Admin User. - * @return string $fullName - */ - public function getFullNameAttribute() - { - return $this->attributes['first_name'] . ' ' . $this->attributes['last_name']; - } - - /** - * Get the full name for the Admin User. - * @return string $fullName - */ - public function getImagePathUrlAttribute() - { - if (empty($this->imagePath)) { - return 'https://place-hold.it/250x250'; - } - return asset('storage' . DIRECTORY_SEPARATOR . $this->imagePath->path); - } - - /** - * Get the full name for the Admin User. - * @return string $fullName - */ - public function getImagePathNameAttribute() - { - return basename($this->image_path); - } - - /** - * Set User Password for the Admin User. - * @param string $password - * @return void - */ - public function setPasrdAttribute($val) - { - $this->attributes['password'] = Hash::make($val); - } - - - /** - * To check if user has permission to access the given route name. - * @return \Illuminate\Database\Eloquent\Collection $permissions - */ - public function permissions() - { - dd($this->role->permissions); - } - - - public function role() - { - return $this->belongsTo(Role::class); - } - /** - * To check if user has permission to access the given route name. - * @return bool - */ - public function hasPermission($routeName) : bool - { - if ($this->is_super_admin) { - return true; - } - $role = $this->role; - if ($role->permissions->pluck('name')->contains($routeName) == false) { - return false; - } - - return true; - } - - /** - * Get the staff profile image. - */ - public function imagePath() - { - return $this->morphOne(Document::class, 'documentable'); - } -} diff --git a/src/Database/Models/Attribute.php b/src/Database/Models/Attribute.php deleted file mode 100644 index 666f076b0..000000000 --- a/src/Database/Models/Attribute.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Image', - 'TEXT' => 'Text', - ]; - - /** - * The attributes that are mass assignable. - * @var array - */ - protected $fillable = ['name', 'slug', 'display_as']; - - /** - * Appended attribute for the model. - * @var - */ - protected $appends = ['dropdown']; - - /** - * Attribute has many dropdown options. - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function dropdownOptions() - { - return $this->hasMany(AttributeDropdownOption::class); - } - - /** - * Attribute Belongs to many Products. - * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany - */ - public function products() - { - return $this->belongsToMany(Product::class); - } - - /** - * Get the Dropdown Options for Select. - * @return \Illuminate\Database\Eloquent\Collection - */ - public function getDropdownAttribute() - { - return $this->dropdownOptions; - } -} diff --git a/src/Database/Models/AttributeDropdownOption.php b/src/Database/Models/AttributeDropdownOption.php deleted file mode 100644 index 5a758bc4c..000000000 --- a/src/Database/Models/AttributeDropdownOption.php +++ /dev/null @@ -1,21 +0,0 @@ -belongsTo(Attribute::class); - } -} \ No newline at end of file diff --git a/src/Database/Models/BaseModel.php b/src/Database/Models/BaseModel.php deleted file mode 100644 index 77e4fd729..000000000 --- a/src/Database/Models/BaseModel.php +++ /dev/null @@ -1,20 +0,0 @@ -belongsTo(Product::class); - } - - /** - * CartProduct Belongs to a product. - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function customer() - { - return $this->belongsTo(Customer::class, 'visitor_id'); - } -} diff --git a/src/Database/Models/Category.php b/src/Database/Models/Category.php deleted file mode 100644 index cb3ce2786..000000000 --- a/src/Database/Models/Category.php +++ /dev/null @@ -1,49 +0,0 @@ -belongsToMany(Product::class); - } - - /** - * Category can has many child categories. - * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany - */ - public function children() - { - return $this->hasMany(self::class, 'parent_id'); - } - - /** - * Category can have one parent category. - * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany - */ - public function parent() - { - return $this->belongsTo(self::class, 'parent_id'); - } -} diff --git a/src/Database/Models/Configuration.php b/src/Database/Models/Configuration.php deleted file mode 100644 index 8df3750b1..000000000 --- a/src/Database/Models/Configuration.php +++ /dev/null @@ -1,11 +0,0 @@ -notify(new CustomerResetPassword($token)); - } - - /** - * Get the full name for the Admin User. - * @return string $fullName - */ - public function getFullNameAttribute() - { - return $this->attributes['first_name'].' '.$this->attributes['last_name']; - } - - /** - * Get the full name for the Admin User. - * @return string $fullName - */ - public function getImagePathUrlAttribute() - { - if ($this->attributes['image_path'] === null) { - return 'https://placehold.it/250x250'; - } - return asset('storage/'.$this->attributes['image_path']); - } - - /** - * Get the full name for the Admin User. - * @return string $fullName - */ - public function getImagePathNameAttribute() - { - return basename($this->image_path); - } - - /** - * Get the Passport Client for User and If it doesnot exist then create a new one - * @return \Laravel\Passport\Client $client - */ - public function getPassportClient() - { - $client = $this->clients()->first(); - if (null === $client) { - $clientRepository = app(ClientRepository::class); - $redirectUri = asset(''); - $client = $clientRepository->createPasswordGrantClient($this->id, $this->full_name, $redirectUri, 'customers'); - } - - return $client; - } - - public function addresses() - { - return $this->hasMany(Address::class); - } - public function setPasswordAttribute($value) - { - return $this->attributes['password'] = bcrypt($value); - } - public function getPasswordAttribute($value) - { - return $this->attributes['password']; - } - /** - * To check if user has permission to access the given route name. - * @return bool - */ - public function hasPermission($routeName) : bool - { - if ($this->is_super_admin) { - return true; - } - $role = $this->role; - if ($role->permissions->pluck('name')->contains($routeName) == false) { - return false; - } - - return true; - } - - /** - * To check if user has permission to access the given route name. - * @return \Illuminate\Database\Eloquent\Collection $permissions - */ - public function permissions() - { - // - } - - public function role() - { - return $this->belongsTo(Role::class); - } - - public function cartProducts() - { - return $this->hasMany(CartProduct::class, 'visitor_id', 'id'); - } - - /** - * Get the order comments. - */ - public function orderComments() - { - // - } -} diff --git a/src/Database/Models/Document.php b/src/Database/Models/Document.php deleted file mode 100644 index 512943180..000000000 --- a/src/Database/Models/Document.php +++ /dev/null @@ -1,39 +0,0 @@ -morphTo(); - } - - public function getUrlAttribute() - { - if ($this->path) { - return asset($this->path); - } - - return null; - } -} diff --git a/src/Database/Models/OauthClient.php b/src/Database/Models/OauthClient.php deleted file mode 100644 index 18c05b3a5..000000000 --- a/src/Database/Models/OauthClient.php +++ /dev/null @@ -1,47 +0,0 @@ -setAttribute('id', Uuid::uuid4()->toString()); - }); - } -} diff --git a/src/Database/Models/Order.php b/src/Database/Models/Order.php deleted file mode 100644 index eef33d24c..000000000 --- a/src/Database/Models/Order.php +++ /dev/null @@ -1,76 +0,0 @@ -belongsTo(OrderStatus::class); - } - - /** - * Order Customer. - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function customer() - { - return $this->belongsTo(Customer::class); - } - - /** - * Order Shipping Address. - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function shippingAddress() - { - return $this->belongsTo(Address::class, 'shipping_address_id'); - } - - /** - * Order Billing Address. - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function billingAddress() - { - return $this->belongsTo(Address::class, 'billing_address_id'); - } - - /** - * Order Billing Address. - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function products() - { - return $this->hasMany(OrderProduct::class); - } - - /** - * Order has many Comments. - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function orderComments() - { - return $this->hasMany(OrderComment::class); - } -} \ No newline at end of file diff --git a/src/Database/Models/OrderProduct.php b/src/Database/Models/OrderProduct.php deleted file mode 100644 index 12cf27216..000000000 --- a/src/Database/Models/OrderProduct.php +++ /dev/null @@ -1,35 +0,0 @@ -belongsTo(Order::class); - } - - /** - * Order Product belongs to one Product. - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function product() - { - return $this->belongsTo(Product::class); - } -} \ No newline at end of file diff --git a/src/Database/Models/OrderStatus.php b/src/Database/Models/OrderStatus.php deleted file mode 100644 index ec0140673..000000000 --- a/src/Database/Models/OrderStatus.php +++ /dev/null @@ -1,15 +0,0 @@ -content; - $pattern = sprintf('/(@)?%s\s*(.+?)\s*%s(\r?\n)?/s', $this->contentTags[0], $this->contentTags[1]); - $callback = function ($matches) { - $whitespace = empty($matches[3]) ? '' : $matches[3] . $matches[3]; - // $widget = Widget::get($matches[2]); - - // if (method_exists($widget, 'render')) { - // $widgetContent = $widget->render(); - // } else { - // $widgetContent = ''; - // } - // return $matches[1] ? substr($matches[0], 1) : "{$widgetContent}{$whitespace}"; - }; - return preg_replace_callback($pattern, $callback, $content); - } -} diff --git a/src/Database/Models/Permission.php b/src/Database/Models/Permission.php deleted file mode 100644 index 4af903399..000000000 --- a/src/Database/Models/Permission.php +++ /dev/null @@ -1,22 +0,0 @@ -hasMany(Role::class); - } -} \ No newline at end of file diff --git a/src/Database/Models/Product.php b/src/Database/Models/Product.php deleted file mode 100644 index 8ca621131..000000000 --- a/src/Database/Models/Product.php +++ /dev/null @@ -1,88 +0,0 @@ - 'Basic', - self::PRODUCT_TYPES_DOWNLOADABLE => 'Downlodable', - self::PRODUCT_TYPES_VARIABLE_PRODUCT => 'Variable Product', - ]; - - const PRODUCT_TYPES_BASIC = 'BASIC'; - const PRODUCT_TYPES_DOWNLOADABLE = 'DOWNLOADABLE'; - const PRODUCT_TYPES_VARIABLE_PRODUCT = 'VARIABLE_PRODUCT'; - const PRODUCT_TYPES_VARIATION = 'VARIATION'; - - /** - * Belongs to Many Categories. - * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany - */ - public function categories() - { - return $this->belongsToMany(Category::class) - ->using(new class extends Pivot { - use UuidTrait; - }) - ->withTimestamps(); - } - - /** - * Get the product image. - */ - public function document() - { - return $this->morphOne(Document::class, 'documentable'); - } - - /** - * Scope a query to only include popular users. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeWithoutVariation($query) - { - return $query->where('type', '!=', self::PRODUCT_TYPES_VARIATION); - } -} diff --git a/src/Database/Models/Property.php b/src/Database/Models/Property.php deleted file mode 100644 index 5c1d5867f..000000000 --- a/src/Database/Models/Property.php +++ /dev/null @@ -1,110 +0,0 @@ - 'Integer', - 'DECIMAL' => 'Decimal', - 'DATETIME' => 'Date Time', - 'VARCHAR' => 'VarChar (max:255)', - 'BOOLEAN' => 'Boolean (true/false)', - 'TEXT' => 'Text Area (big text)', - ]; - - /** - * The available field types for the product property. - * @var array - */ - const PROPERTY_FIELDTYPES = [ - 'TEXT' => 'Text box', - 'TEXTAREA' => 'Text Area', - 'CKEDITOR' => 'Rich Text Editor', - 'SELECT' => 'Select (dropdown)', - 'FILE' => 'File', - 'DATETIME' => 'Date Time', - 'RADIO' => 'Radio', - 'SWITCH' => 'Switch', - ]; - - /** - * Property has many varchar value. - * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany - */ - public function products() - { - return $this->hasMany(Product::class); - } - - /** - * Property has many dropdown options. - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function dropdownOptions() - { - return $this->hasMany(PropertyDropdownOption::class); - } - - /** - * Get the Dropdown Options for Select. - * @return \Illuminate\Database\Eloquent\Collection - */ - public function getDropdownAttribute() - { - if ($this->field_type === 'SELECT' || $this->field_type === 'RADIO') { - return $this->dropdownOptions()->remember()->get(); - } - } - - /** - * Get the Dropdown Options for Select. - * @return \Illuminate\Support\Collection - */ - public function getDropdownOptions(): Collection - { - $data = Collection::make([]); - - if ($this->dropdownOptions !== null && count($this->dropdownOptions) > 0) { - foreach ($this->dropdownOptions as $dropdown) { - $data->push([ - 'label' => $dropdown->display_text, - 'value' => $dropdown->id, - ]); - } - } - - return $data; - } - -} diff --git a/src/Database/Models/PropertyDropdownOption.php b/src/Database/Models/PropertyDropdownOption.php deleted file mode 100644 index 221065577..000000000 --- a/src/Database/Models/PropertyDropdownOption.php +++ /dev/null @@ -1,12 +0,0 @@ -permissions->pluck('name'); - $permissions = explode(',', $routes); - $hasPermission = true; - - foreach ($permissions as $permissions) { - if (! $modelPermissions->contains($permissions)) { - $hasPermission = false; - } - } - - return $hasPermission; - } - - /** - * Role has many Permissions. - * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany - */ - public function permissions() - { - return $this->belongsToMany(Permission::class); - } -} diff --git a/src/Database/Models/Subscriber.php b/src/Database/Models/Subscriber.php deleted file mode 100644 index b75b5070e..000000000 --- a/src/Database/Models/Subscriber.php +++ /dev/null @@ -1,27 +0,0 @@ -belongsTo(Customer::class); - } -} diff --git a/src/Database/Repository/AddressRepository.php b/src/Database/Repository/AddressRepository.php deleted file mode 100644 index b2289e65b..000000000 --- a/src/Database/Repository/AddressRepository.php +++ /dev/null @@ -1,44 +0,0 @@ -model = new Address(); - } - - /** - * Get the model for the repository - * @return Address - */ - public function model(): Address - { - return $this->model; - } - - - /** - * Get All Addresses from Database via User Id. - * @param int $userId - * @return \Illuminate\Database\Eloquent\Collection $addresses - */ - public function getByCustomerId(int $userId) : Collection - { - return Address::with('country')->whereCustomerId($userId)->get(); - } -} \ No newline at end of file diff --git a/src/Database/Repository/AdminUserRepository.php b/src/Database/Repository/AdminUserRepository.php deleted file mode 100644 index bbbc9e017..000000000 --- a/src/Database/Repository/AdminUserRepository.php +++ /dev/null @@ -1,51 +0,0 @@ -model = new AdminUser(); - } - - /** - * Get the model for the repository - * @return AdminUser - */ - public function model(): AdminUser - { - return $this->model; - } - - /** - * Find AdminUser by given Email in database. - * @param string $email - * @return \AvoRed\Framework\Database\Models\AdminUser $adminUser - */ - public function findByEmail(string $email): AdminUser - { - return AdminUser::whereEmail($email)->first(); - } -} diff --git a/src/Database/Repository/AttributeDropdownOptionRepository.php b/src/Database/Repository/AttributeDropdownOptionRepository.php deleted file mode 100644 index 59780a78c..000000000 --- a/src/Database/Repository/AttributeDropdownOptionRepository.php +++ /dev/null @@ -1,41 +0,0 @@ -model = new AttributeDropdownOption(); - } - - /** - * Get the model for the repository - * @return Attribute - */ - public function model(): AttributeDropdownOption - { - return $this->model; - } -} \ No newline at end of file diff --git a/src/Database/Repository/AttributeRepository.php b/src/Database/Repository/AttributeRepository.php deleted file mode 100644 index 9c603c2a5..000000000 --- a/src/Database/Repository/AttributeRepository.php +++ /dev/null @@ -1,79 +0,0 @@ -model = new Attribute(); - } - - /** - * Get the model for the repository - * @return Attribute - */ - public function model(): Attribute - { - return $this->model; - } - - /** - * Save Attribute Dropdown options. - * @param \AvoRed\Framework\Catalog\Requests\AttributeRequest $request - * @param \\AvoRed\Framework\Database\Models\Attribute $attribute - * @return void - */ - public function saveAttributeDropdownOptions(AttributeRequest $request, Attribute $attribute) - { - if ($request->get('dropdown_options') !== null && count($request->get('dropdown_options')) > 0) { - $options = collect(); - $beforeAttributeIds = $attribute->dropdownOptions()->pluck('id'); - foreach ($request->get('dropdown_options') as $key => $option) { - if (empty($option['display_text'])) { - continue; - } - $attributeDropdownOption = $attribute->dropdownOptions()->where('id', $key)->first(); - unset($option['id']); - if ($attributeDropdownOption !== null) { - $attributeDropdownOption->update($option); - } else { - $attribute->dropdownOptions()->create($option); - } - $options->push($key); - } - $deletedIds = $beforeAttributeIds->filter(function ($attributeId) use ($options) { - return !$options->contains($attributeId); - }); - - foreach ($deletedIds as $key => $deletedId) { - // $attribute->attributeProductValues()->where('id', $deletedId)->delete(); - $attribute->dropdownOptions()->where('id', $deletedId)->delete(); - } - } - } -} \ No newline at end of file diff --git a/src/Database/Repository/BaseRepository.php b/src/Database/Repository/BaseRepository.php deleted file mode 100644 index a969e7de8..000000000 --- a/src/Database/Repository/BaseRepository.php +++ /dev/null @@ -1,75 +0,0 @@ -model()->query(); - } - - /** - * Create Model Resource into a database. - * @param array $data - * @return \AvoRed\Framework\Database\Models\BaseModel $model - */ - public function create(array $data) - { - return $this->model()->create($data); - } - - /** - * Find Model Resource into a database. - * @param string $id - * @return \AvoRed\Framework\Database\Models\Model $model - */ - public function find(string $id): Model - { - return $this->model()->find($id); - } - - /** - * Delete Model Resource from a database. - * @param string $id - * @return int - */ - public function delete(string $id): int - { - return $this->model()->destroy($id); - } - - /** - * Get All Models Collection from the database. - * @return \Illuminate\Database\Eloquent\Collection $models - */ - public function all(): Collection - { - return $this->model()->all(); - } - - /** - * Get All Models Collection from the database. - * @return LengthAwarePaginator $models - */ - public function paginate(): LengthAwarePaginator - { - return $this->model()->paginate(); - } -} diff --git a/src/Database/Repository/CartProductRepository.php b/src/Database/Repository/CartProductRepository.php deleted file mode 100644 index 410b3f805..000000000 --- a/src/Database/Repository/CartProductRepository.php +++ /dev/null @@ -1,30 +0,0 @@ -model = new CartProduct(); - } - - /** - * Get the model for the repository - * @return CartProduct - */ - public function model(): CartProduct - { - return $this->model; - } -} diff --git a/src/Database/Repository/CategoryRepository.php b/src/Database/Repository/CategoryRepository.php deleted file mode 100644 index 9ba6123d1..000000000 --- a/src/Database/Repository/CategoryRepository.php +++ /dev/null @@ -1,183 +0,0 @@ -model = new Category; - } - - /** - * Find Category Resource into a database. - * @param string $slug - * @return \AvoRed\Framework\Database\Models\Category $category - */ - public function findBySlug(string $slug): Category - { - return Category::whereSlug($slug)->first(); - } - - /** - * Get All Category from the database. - * @return \Illuminate\Database\Eloquent\Collection $categories - */ - public function getCategoryProducts(Request $request) : Collection - { - $builder = Product::whereHas('categories', function ($query) use ($request) { - $query->whereSlug($request->get('slug')); - }); - - foreach ($request->except(['slug', '_token']) as $key => $values) { - [$filterType, $paramSuffix] = $this->splitParam($key); - - if ($filterType === 'PROPERTY') { - $builder = $this->filterProperties($builder, $paramSuffix, $values); - } - - if ($filterType === 'ATTRIBUTE') { - $builder = $this->filterAttributes($builder, $paramSuffix, $values); - } - } - - $builder->where('type', '!=', 'VARIATION'); - - return $builder->get(); - } - - - - /** - * Get all the categories option to use in Menu Builder. - * @return \Illuminate\Support\Collection $categories - */ - public function getCategoryOptionForMenuBuilder() : SupportCollection - { - $categories = SupportCollection::make([]); - $all = Category::all(); - - $i = 1; - foreach ($all as $category) { - $dummyModel = new stdClass; - $dummyModel->id = $i; - - $routeParam = config('avored.routes.category.param'); - $routeName = config('avored.routes.category.name'); - $dummyModel->name = $category->name; - $dummyModel->url = route($routeName, $category->$routeParam, false); - $dummyModel->submenus = []; - - $categories->push($dummyModel); - $i++; - } - - return $categories; - } - - /** - * Get all the categories options to use in dropdown. - * @param string $label - * @param mixed $value - * @return \Illuminate\Database\Eloquent\Collectionp $categoryOptions - */ - public function options($label = 'name', $value = 'id') : SupportCollection - { - return Category::all()->pluck($label, $value); - } - - /** - * filter properties via builder. - * @return \Illuminate\Database\Eloquent\Builder $builder - */ - private function filterProperties($builder, $paramSuffix, $values) - { - $property = Property::whereSlug($paramSuffix)->first(); - - $builder->whereHas('productPropertyIntegerValues', function ($query) use ($property, $values) { - $query - ->wherePropertyId($property->id) - ->whereIn('value', $values); - }); - - return $builder; - } - - /** - * filter attributes via builder. - * @return \Illuminate\Database\Eloquent\Builder $builder - */ - private function filterAttributes($builder, $paramSuffix, $values) - { - $attribute = Attribute::whereSlug($paramSuffix)->first(); - $builder->whereHas('attributeProductValues', function ($query) use ($attribute, $values) { - $query - ->whereAttributeId($attribute->id) - ->whereIn('attribute_dropdown_option_id', $values); - }); - - return $builder; - } - - /** - * Split the param and find out which type and etc. - * @return array - */ - private function splitParam($key) - { - $filterType = ''; - $paramPrefix = substr($key, 0, 4); - $paramSuffix = substr($key, 4); - - if ($paramPrefix === 'p___') { - $filterType = 'PROPERTY'; - } elseif ($paramPrefix === 'a___') { - $filterType = 'ATTRIBUTE'; - } - - return [$filterType, $paramSuffix]; - } - - /** - * Model object for the repository - * @return \AvoRed\Framework\Database\Models\Category $model - */ - public function model(): Category - { - return $this->model; - } -} diff --git a/src/Database/Repository/ConfigurationRepository.php b/src/Database/Repository/ConfigurationRepository.php deleted file mode 100644 index 6f056fb75..000000000 --- a/src/Database/Repository/ConfigurationRepository.php +++ /dev/null @@ -1,76 +0,0 @@ -model = new Configuration(); - } - - - /** - * Model object for the repository - * @return \AvoRed\Framework\Database\Models\Configuration $model - */ - public function model(): Configuration - { - return $this->model; - } - - /** - * Get value of a configuration by given code. - * @param string $code - * @return string $value - */ - public function getValueByCode($code) - { - $configuration = Configuration::whereCode($code)->first(); - - if ($configuration === null) { - return; - } - - return $configuration->value; - } - - /** - * Get model of a configuration by given code. - * @param string $code - * @return string $value - */ - public function getModelByCode($code) - { - $configuration = Configuration::whereCode($code)->first(); - - if ($configuration === null) { - return; - } - - return $configuration; - } - - /** - * create configuration by given data. - * @param array $data - * @return string $value - */ - public function create(array $data): Configuration - { - return Configuration::create($data); - } -} \ No newline at end of file diff --git a/src/Database/Repository/CustomerRepository.php b/src/Database/Repository/CustomerRepository.php deleted file mode 100644 index e306007b6..000000000 --- a/src/Database/Repository/CustomerRepository.php +++ /dev/null @@ -1,74 +0,0 @@ -model = new Customer(); - } - - /** - * Get the model for the repository - * @return Customer - */ - public function model(): Customer - { - return $this->model; - } - - /** - * Find Customer by given Email in database. - * @param string $email - * @return \AvoRed\Framework\Database\Models\Customer $adminUser - */ - public function findByEmail(string $email) : ?Customer - { - return Customer::whereEmail($email)->first(); - } - - /** - * Find New Customer by given parameter in database. - * @param string $from - * @param string $to - * @param string $groupBy - * @return \Illuminate\Support\Collection $customers - */ - public function getNewCustomersBy($from, $to, $groupBy) : Collection - { - return $this->model->where('created_at', '>=', $from) - ->where('created_at', '<=', $to) - ->orderBy('created_at') - ->get() - ->groupBy(function($customer) use ($groupBy) { - switch ($groupBy) { - case "DAY" : - return Carbon::parse($customer->created_at)->format('d-M-Y'); - break; - case "WEEK" : - return $customer->created_at->startOfWeek()->format('d-M-Y') . ':'. $customer->created_at->endOfWeek()->format('d-M-Y'); - break; - case "MONTH" : - return Carbon::parse($customer->created_at)->format('M-Y'); - break; - case "YEAR" : - return Carbon::parse($customer->created_at)->format('Y'); - break; - } - }); - } -} diff --git a/src/Database/Repository/DocumentRepository.php b/src/Database/Repository/DocumentRepository.php deleted file mode 100644 index 4dc104ec7..000000000 --- a/src/Database/Repository/DocumentRepository.php +++ /dev/null @@ -1,31 +0,0 @@ -model = new Document(); - } - - /** - * Get the model for the repository - * @return Document - */ - public function model(): Document - { - return $this->model; - } -} diff --git a/src/Database/Repository/OrderProductRepository.php b/src/Database/Repository/OrderProductRepository.php deleted file mode 100644 index cd02f9246..000000000 --- a/src/Database/Repository/OrderProductRepository.php +++ /dev/null @@ -1,45 +0,0 @@ -model = new OrderProduct(); - } - - /** - * Get the model for the repository - * @return OrderProduct - */ - public function model(): OrderProduct - { - return $this->model; - } - - /** - * Create OrderProduct Resource into a database. - * @param array $data - * @return \AvoRed\Framework\Database\Models\OrderProduct $orderProduct - */ - public function create(array $data): OrderProduct - { - $orderProduct = parent::create($data); - event(new OrderProductCreated($orderProduct)); - - return $orderProduct; - } -} \ No newline at end of file diff --git a/src/Database/Repository/OrderRepository.php b/src/Database/Repository/OrderRepository.php deleted file mode 100644 index a2ec72b01..000000000 --- a/src/Database/Repository/OrderRepository.php +++ /dev/null @@ -1,95 +0,0 @@ -model = new Order(); - } - - /** - * Get the model for the repository - * @return Order - */ - public function model(): Order - { - return $this->model; - } - - /** - * Find Orders of a given user Id. - * @param string $id - * @return \Illuminate\Database\Eloquent\Collection $userOrders - */ - public function findByCustomerId(string $id) : LengthAwarePaginator - { - return Order::whereCustomerId($id)->paginate(); - } - - /** - * Get no of order by given month - * @return int $totalOrders - */ - public function getCurrentMonthTotalOrder() : int - { - $firstDay = $this->getFirstDay(); - $totalOrder = Order::select('id')->where('created_at', '>', $firstDay)->count(); - - return $totalOrder; - } - /** - * Get Total Revenue of current month - * @return int $totalOrders - */ - public function getCurrentMonthTotalRevenue() : float - { - $total = 0; - $firstDay = $this->getFirstDay(); - $orders = Order::with('products') - ->select('*') - ->where('created_at', '>', $firstDay) - ->get(); - - foreach ($orders as $order) { - foreach ($order->products as $product) { - $total += ($product->qty * $product->price) + $product->tax_amount; - } - } - - return $total; - } - - private function getFirstDay() - { - $startDay = Carbon::now(); - return $startDay->firstOfMonth(); - } -} diff --git a/src/Database/Repository/OrderStatusRepository.php b/src/Database/Repository/OrderStatusRepository.php deleted file mode 100644 index 41421246f..000000000 --- a/src/Database/Repository/OrderStatusRepository.php +++ /dev/null @@ -1,65 +0,0 @@ -model = new OrderStatus(); - } - - /** - * Get the model for the repository - * @return OrderStatus - */ - public function model(): OrderStatus - { - return $this->model; - } - - /** - * Find OrderStatus Resource into a database. - * @param int $id - * @return \AvoRed\Framework\Database\Models\OrderStatus $orderStatus - */ - public function findDefault(): OrderStatus - { - return OrderStatus::whereIsDefault(1)->first(); - } - - /** - * Update existing is default status to zero so new one can be marked - * - * @return bool - */ - public function updateDefaultOrderStatusToNull(): bool - { - return OrderStatus::whereIsDefault(1)->update(['is_default' => 0]); - } -} diff --git a/src/Database/Repository/PageRepository.php b/src/Database/Repository/PageRepository.php deleted file mode 100644 index 2a8dabe8b..000000000 --- a/src/Database/Repository/PageRepository.php +++ /dev/null @@ -1,57 +0,0 @@ -model = $page; - } - - /** - * Get the model for the repository - * @return Page - */ - public function model(): Page - { - return $this->model; - } - - /** - * Find Page Resource into a database. - * @param string $slug - * @return \AvoRed\Framework\Database\Models\Page $page - */ - public function findBySlug(string $slug) - { - return Page::whereSlug($slug)->first(); - } - -} diff --git a/src/Database/Repository/PermissionRepository.php b/src/Database/Repository/PermissionRepository.php deleted file mode 100644 index 1d2c118b7..000000000 --- a/src/Database/Repository/PermissionRepository.php +++ /dev/null @@ -1,44 +0,0 @@ -model = new Permission(); - } - - /** - * Get the model for the repository - * @return Permission - */ - public function model() - { - return $this->model; - } - - - /** - * find Permission by given name from database. - * @param string $name - * @return \AvoRed\Framework\Database\Models\Permission $permission - */ - public function findByName(string $name) - { - return Permission::whereName($name)->first(); - } - -} \ No newline at end of file diff --git a/src/Database/Repository/ProductRepository.php b/src/Database/Repository/ProductRepository.php deleted file mode 100644 index 04918ebc6..000000000 --- a/src/Database/Repository/ProductRepository.php +++ /dev/null @@ -1,91 +0,0 @@ -model = new Product(); - } - - /** - * Find a Product by given slug. - * @param string $slug - * @return \AvoRed\Framework\Database\Models\Product $product - */ - public function findBySlug(string $slug): Product - { - return Product::whereSlug($slug)->first(); - } - - /** - * Find a Product by given barcode. - * @param string $barcode - * @return \AvoRed\Framework\Database\Models\Product $product - */ - public function findByBarcode(string $barcode): Product - { - return Product::whereBarcode($barcode)->first(); - } - - /** - * Get all the products from the connected database. - * @param int $perPage - * @return \Illuminate\Database\Eloquent\Collection $products - */ - public function getAllWithoutVaiation(int $perPage = 10): LengthAwarePaginator - { - return Product::withoutVariation()->paginate($perPage); - } - - /** - * Sync Product with categories. - * @param \AvoRed\Framework\Database\Models\Product $product - * @param \AvoRed\Framework\Catalog\Requests\ProductRequest $request - * @return bool - */ - public function saveProductCategories(Product $product, ProductRequest $request): void - { - if ($request->get('category_id') !== null && count($request->get('category_id')) > 0) { - $product->categories()->sync($request->get('category_id')); - } - } - - /** - * Model object for the repository - * @return \AvoRed\Framework\Database\Models\Product $model - */ - public function model() - { - return $this->model; - } -} diff --git a/src/Database/Repository/PropertyRepository.php b/src/Database/Repository/PropertyRepository.php deleted file mode 100644 index ca6f43d47..000000000 --- a/src/Database/Repository/PropertyRepository.php +++ /dev/null @@ -1,70 +0,0 @@ -model = new Property(); - } - - /** - * Get the model for the repository - * @return Property - */ - public function model(): Property - { - return $this->model; - } - - - public function savePropertyDropdown($request , $property) - { - if (($request->get('field_type') === 'RADIO' || $request->get('field_type') === 'SELECT')) { - $property->dropdownOptions()->delete(); - } - if (($request->get('field_type') === 'RADIO' || - $request->get('field_type') === 'SELECT') && - count($request->get('dropdown_option')) > 0 - ) { - foreach ($request->get('dropdown_option') as $key => $option) { - if (empty($option)) { - continue; - } - - if (is_string($key)) { - $property->dropdownOptions()->create(['display_text' => $option]); - } else { - $optionModel = $property->dropdownOptions()->find($key); - $optionModel->update(['display_text' => $option]); - } - } - } - } - -} diff --git a/src/Database/Repository/RoleRepository.php b/src/Database/Repository/RoleRepository.php deleted file mode 100644 index e6362e23e..000000000 --- a/src/Database/Repository/RoleRepository.php +++ /dev/null @@ -1,92 +0,0 @@ -model = new Role(); - } - - /** - * Get the model for the repository - * @return Role - */ - public function model() - { - return $this->model; - } - - /** - * Create Role Resource into a database. - * @param array $data - * @return \AvoRed\Framework\Database\Models\Role $role - */ - public function findAdminRole(): Role - { - return Role::whereName(Role::ADMIN)->first(); - } - - /** - * get role options to use as dropdown options. - * @return \Illuminate\Support\Collection $roles - */ - public function options(): SupportCollection - { - return Role::all()->pluck('name', 'id'); - } - - - /** - * Save Role Permission for the Users. - * @param \AvoRed\Framework\System\Requests\RoleRequest $request - * @param \AvoRed\Framework\Models\Database\Role $rolet - * - * @return void - */ - public function saveRolePermissions($request, $role) - { - $permissionIds = SupportCollection::make([]); - - if ($request->get('permissions') !== null && count($request->get('permissions')) > 0) { - foreach ($request->get('permissions') as $key => $value) { - if ($value != 1) { - continue; - } - $permissions = explode(',', $key); - foreach ($permissions as $permissionName) { - $permissionRepository = app(PermissionModelInterface::class); - $permissionModel = $permissionRepository->findByName($permissionName); - if ($permissionModel === null) { - $permissionModel = $permissionRepository->create(['name' => $permissionName]); - } - $permissionIds->push($permissionModel->id); - } - } - $ids = $permissionIds->unique(); - $role->permissions()->sync($ids); - } - } -} diff --git a/src/Database/Repository/SubscriberRepository.php b/src/Database/Repository/SubscriberRepository.php deleted file mode 100644 index 52106921e..000000000 --- a/src/Database/Repository/SubscriberRepository.php +++ /dev/null @@ -1,31 +0,0 @@ -model = new Subscriber(); - } - - /** - * Get the model for the repository - * @return Subscriber - */ - public function model(): Subscriber - { - return $this->model; - } -} diff --git a/src/Database/Traits/FilterTrait.php b/src/Database/Traits/FilterTrait.php deleted file mode 100644 index 88518ae30..000000000 --- a/src/Database/Traits/FilterTrait.php +++ /dev/null @@ -1,27 +0,0 @@ -query(); - $isFirst = true; - foreach ($this->filterFields as $filed) - { - if ($isFirst) { - $query->where($filed, 'like', '%'. $filter .'%' ); - $isFirst = false; - } else { - $query->orWhere($filed, 'like', '%'. $filter .'%' ); - } - } - - return $query->paginate($this->perPage); - } -} \ No newline at end of file diff --git a/src/Database/Traits/UuidTrait.php b/src/Database/Traits/UuidTrait.php deleted file mode 100644 index 3fbf97229..000000000 --- a/src/Database/Traits/UuidTrait.php +++ /dev/null @@ -1,26 +0,0 @@ -setIncrementing(false); - $this->setKeyType('string'); - } - - /** - * The "booting" method of the model. - * - * @return void - */ - protected static function bootUuidTrait() - { - self::creating(function (Model $model) { - $model->setAttribute($model->getKeyName(), Uuid::uuid4()->toString()); - }); - } -} diff --git a/src/Document/Document.php b/src/Document/Document.php deleted file mode 100644 index aab709311..000000000 --- a/src/Document/Document.php +++ /dev/null @@ -1,16 +0,0 @@ -registerDocument(); - } - - /** - * Register the service provider. - * @return void - */ - public function register() - { - $this->registerServices(); - $this->app->alias('document', 'AvoRed\Framework\Document\Manager'); - } - - /** - * Register the Admin Menu instance. - * - * @return void - */ - protected function registerServices() - { - $this->app->singleton( - 'document', - function () { - return new Manager(); - } - ); - } - - /** - * Get the services provided by the provider. - * - * @return array - */ - public function provides() - { - return ['document', 'AvoRed\Framework\Document\Builder']; - } - - /** - * Register the Menus. - * - * @return void - */ - protected function registerDocument() - { - - } -} diff --git a/src/Document/Manager.php b/src/Document/Manager.php deleted file mode 100644 index 9aa47cfbe..000000000 --- a/src/Document/Manager.php +++ /dev/null @@ -1,56 +0,0 @@ -toString(); - $data['mime_type'] = $file->getClientMimeType(); - $data['size'] = $file->getSize(); - $data['origional_name'] = $file->getClientOriginalName(); - $options = ['disk' => 'public']; - $data['path'] = $this->upload($file, self::PUBLIC_UPLOAD_PATH, $options); - - return $data; - } - - /** - * Upload file to storage folder at given path - * - * @param UploadedFile $file - * @param string $path - * @param array $options - * @return void - */ - protected function upload(UploadedFile $file, $path, $options = []) - { - return $file->storePublicly($path, $options); - } -} diff --git a/src/Graphql/Mutations/Auth/ForgotPasswordMutation.php b/src/Graphql/Mutations/Auth/ForgotPasswordMutation.php deleted file mode 100644 index cee187aa6..000000000 --- a/src/Graphql/Mutations/Auth/ForgotPasswordMutation.php +++ /dev/null @@ -1,75 +0,0 @@ - 'forgotPassword', - 'description' => 'A mutation' - ]; - - /** - * Customer Repository - * @var AvoRed\Framework\Database\Repository\CustomerRepository - */ - protected $customerRepository; - - /** - * All Customer construct - * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository - * @return void - */ - public function __construct( - CustomerModelInterface $customerRepository - ) { - $this->customerRepository = $customerRepository; - } - - public function type(): Type - { - return GraphQL::type('Notification'); - } - - public function args(): array - { - return [ - 'email' => [ - 'name' => 'email', - 'type' => Type::nonNull(Type::string()), - ] - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - - $response = $this->broker()->sendResetLink(['email' => $args['email']]); - - if ($response === Password::RESET_LINK_SENT) { - return ['success' => true, - 'message' => __('avored::system.success_sent_password_reset_email_message') - ]; - } - } - - - /** - * Get the broker to be used during password reset. - * - * @return \Illuminate\Contracts\Auth\PasswordBroker - */ - public function broker() - { - return Password::broker('customers'); - } -} diff --git a/src/Graphql/Mutations/Auth/LoginMutation.php b/src/Graphql/Mutations/Auth/LoginMutation.php deleted file mode 100644 index cbc87f53a..000000000 --- a/src/Graphql/Mutations/Auth/LoginMutation.php +++ /dev/null @@ -1,117 +0,0 @@ - 'login', - 'description' => 'A mutation' - ]; - - /** - * Customer Repository - * @var AvoRed\Framework\Database\Repository\CustomerRepository - */ - protected $customerRepository; - - /** - * All Customer construct - * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository - * @return void - */ - public function __construct( - CustomerModelInterface $customerRepository - ) { - $this->customerRepository = $customerRepository; - } - - /** - * Setup the Validation rules for login mutation - * - * @return array $rules - */ - protected function rules(array $rules = []): array - { - return [ - 'email' => ['required', 'max:255'], - 'password' => ['required', 'max:255'] - ]; - } - - public function type(): Type - { - return GraphQL::type('Customer'); - } - - public function args(): array - { - return [ - 'email' => [ - 'name' => 'email', - 'type' => Type::string(), - ], - 'password' => [ - 'name' => 'password', - 'type' => Type::string() - ], - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - $data = []; - - $customer = $this->customerRepository->findByEmail($args['email']); - $client = $customer->getPassportClient(); - - if (null !== $client && $client instanceof Client) { - $serverRequest = $this->createRequest($client, $customer->id, $args, $scope = []); - $reponse = app(AccessTokenController::class)->issueToken($serverRequest); - $data = json_decode($reponse->content(), true); - - $customer->token_type = $data['token_type']; - $customer->expires_in = $data['expires_in']; - $customer->access_token = $data['access_token']; - $customer->refresh_token = $data['refresh_token']; - - return $customer; - } - - return null; - } - - /** - * Create a request instance for the given client. - * - * @param \Laravel\Passport\Client $client - * @param mixed $userId - * @param array $scopes - * @return \Nyholm\Psr7\ServerRequest - */ - protected function createRequest($client, $userId, $data, array $scopes) - { - return (new ServerRequest('POST', 'not-important'))->withParsedBody([ - 'grant_type' => 'password', - 'client_id' => $client->id, - 'client_secret' => $client->secret, - 'username' => $data['email'], - 'password' => $data['password'], - 'user_id' => $userId, - 'scope' => implode(' ', $scopes), - ]); - } -} diff --git a/src/Graphql/Mutations/Auth/RegisterMutation.php b/src/Graphql/Mutations/Auth/RegisterMutation.php deleted file mode 100644 index 19848c443..000000000 --- a/src/Graphql/Mutations/Auth/RegisterMutation.php +++ /dev/null @@ -1,129 +0,0 @@ - 'register', - 'description' => 'A mutation' - ]; - - /** - * Customer Repository - * @var AvoRed\Framework\Database\Repository\CustomerRepository - */ - protected $customerRepository; - - /** - * All Customer construct - * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository - * @return void - */ - public function __construct( - CustomerModelInterface $customerRepository - ) - { - $this->customerRepository = $customerRepository; - } - - public function type(): Type - { - return GraphQL::type('Customer'); - } - - /** - * Setup the Validation rules for register mutation - * - * @return array $rules - */ - protected function rules(array $rules = []): array - { - return [ - 'first_name' => ['required', 'max:255'], - 'last_name' => ['required', 'max:255'], - 'email' => ['required', 'email', 'max:255'], - 'password' => ['required', 'confirmed', 'max:255'], - ]; - } - - public function args(): array - { - return [ - 'first_name' => [ - 'name' => 'first_name', - 'type' => Type::nonNull(Type::string()), - ], - 'last_name' => [ - 'name' => 'last_name', - 'type' => Type::nonNull(Type::string()), - ], - 'email' => [ - 'name' => 'email', - 'type' => Type::nonNull(Type::string()), - ], - 'password' => [ - 'name' => 'password', - 'type' => Type::nonNull(Type::string()) - ], - 'password_confirmation' => [ - 'name' => 'password_confirmation', - 'type' => Type::nonNull(Type::string()) - ], - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - $customer = $this->customerRepository->create($args); - - $client = $customer->getPassportClient(); - - if (null !== $client && $client instanceof Client) { - $serverRequest = $this->createRequest($client, $customer->id, $args, $scope = []); - $reponse = app(AccessTokenController::class)->issueToken($serverRequest); - $data = json_decode($reponse->content(), true); - - $customer->token_type = $data['token_type']; - $customer->expires_in = $data['expires_in']; - $customer->access_token = $data['access_token']; - $customer->refresh_token = $data['refresh_token']; - - return $customer; - } - - return null; - } - - /** - * Create a request instance for the given client. - * - * @param \Laravel\Passport\Client $client - * @param mixed $userId - * @param array $scopes - * @return \Nyholm\Psr7\ServerRequest - */ - protected function createRequest($client, $userId, $data, array $scopes) - { - return (new ServerRequest('POST', 'not-important'))->withParsedBody([ - 'grant_type' => 'password', - 'client_id' => $client->id, - 'client_secret' => $client->secret, - 'username' => $data['email'], - 'password' => $data['password'], - 'user_id' => $userId, - 'scope' => implode(' ', $scopes), - ]); - } -} diff --git a/src/Graphql/Mutations/Auth/ResetPasswordMutation.php b/src/Graphql/Mutations/Auth/ResetPasswordMutation.php deleted file mode 100644 index 53bbda031..000000000 --- a/src/Graphql/Mutations/Auth/ResetPasswordMutation.php +++ /dev/null @@ -1,119 +0,0 @@ - 'resetPassword', - 'description' => 'A mutation' - ]; - - /** - * Customer Repository - * @var AvoRed\Framework\Database\Repository\CustomerRepository - */ - protected $customerRepository; - - /** - * All Customer construct - * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository - * @return void - */ - public function __construct( - CustomerModelInterface $customerRepository - ) { - $this->customerRepository = $customerRepository; - } - - public function type(): Type - { - return GraphQL::type('Notification'); - } - - public function args(): array - { - return [ - 'token' => [ - 'name' => 'token', - 'type' => Type::nonNull(Type::string()), - ], - 'email' => [ - 'name' => 'email', - 'type' => Type::nonNull(Type::string()), - ], - 'password' => [ - 'name' => 'password', - 'type' => Type::nonNull(Type::string()), - ], - 'password_confirmation' => [ - 'name' => 'password_confirmation', - 'type' => Type::nonNull(Type::string()), - ], - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - - $response = $this->broker()->reset($args, function ($user, $password) { - $this->resetPassword($user, $password); - } - ); - - - - if ($response === Password::PASSWORD_RESET) { - return ['success' => true, - 'message' => __('avored::system.success_reset_password_message') - ]; - } - } - - - /** - * Get the broker to be used during password reset. - * - * @return \Illuminate\Contracts\Auth\PasswordBroker - */ - public function broker() - { - return Password::broker('customers'); - } - - /** - * Reset the given user's password. - * - * @param \AvoRed\Framework\Database\Models\AdminUser $user - * @param string $password - * @return void - */ - protected function resetPassword($user, $password) - { - $this->setUserPassword($user, $password); - $user->setRememberToken(Str::random(60)); - $user->save(); - } - - /** - * Set the user's password. - * - * @param \AvoRed\Framework\Database\Models\AdminUser $user - * @param string $password - * @return void - */ - protected function setUserPassword($user, $password) - { - $user->password = Hash::make($password); - } -} diff --git a/src/Graphql/Mutations/Cart/AddToCartMutation.php b/src/Graphql/Mutations/Cart/AddToCartMutation.php deleted file mode 100644 index d14535a1d..000000000 --- a/src/Graphql/Mutations/Cart/AddToCartMutation.php +++ /dev/null @@ -1,64 +0,0 @@ - 'addToCart', - 'description' => 'A mutation' - ]; - - /** - * All Address construct - * @return void - */ - public function __construct() - { -// $this->cartProductRepository = $cartProductRepository; - } - - public function type(): Type - { - return Type::listOf(GraphQL::type('CartProduct')); - } - - public function args(): array - { - return [ - 'visitor_id' => [ - 'name' => 'visitor_id', - 'type' => Type::string(), - ], - 'slug' => [ - 'name' => 'slug', - 'type' => Type::nonNull(Type::string()), - ], - 'qty' => [ - 'name' => 'qty', - 'type' => Type::float(), - ] - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - $qty = $args['qty'] ?? 1; - - $visitor = $args['visitor_id'] ?? Uuid::uuid4()->__toString(); - Cart::visitor($visitor); - Cart::add($args['slug'], $qty); - - return Cart::all(); - } -} diff --git a/src/Graphql/Mutations/Cart/DeleteCartMutation.php b/src/Graphql/Mutations/Cart/DeleteCartMutation.php deleted file mode 100644 index 0c19267d3..000000000 --- a/src/Graphql/Mutations/Cart/DeleteCartMutation.php +++ /dev/null @@ -1,45 +0,0 @@ - 'DeleteCart', - 'description' => 'A mutation' - ]; - - public function type(): Type - { - return Type::listOf(GraphQL::type('CartProduct')); - } - - public function args(): array - { - return [ - 'slug' => [ - 'name' => 'slug', - 'type' => Type::nonNull(Type::string()), - ], - 'visitor_id' => [ - 'name' => 'visitor_id', - 'type' => Type::nonNull(Type::string()), - ] - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - Cart::visitor($args['visitor_id']); - Cart::destroy($args['slug']); - - return Cart::all(); - } -} diff --git a/src/Graphql/Mutations/Cart/UpdateCartMutation.php b/src/Graphql/Mutations/Cart/UpdateCartMutation.php deleted file mode 100644 index b4724c2f7..000000000 --- a/src/Graphql/Mutations/Cart/UpdateCartMutation.php +++ /dev/null @@ -1,63 +0,0 @@ - 'updateCart', - 'description' => 'A mutation' - ]; - - /** - * All Address construct - * @return void - */ - public function __construct() - { -// $this->cartProductRepository = $cartProductRepository; - } - - public function type(): Type - { - return Type::listOf(GraphQL::type('CartProduct')); - } - - public function args(): array - { - return [ - 'visitor_id' => [ - 'name' => 'visitor_id', - 'type' => Type::string(), - ], - 'slug' => [ - 'name' => 'slug', - 'type' => Type::nonNull(Type::string()), - ], - 'qty' => [ - 'name' => 'qty', - 'type' => Type::float(), - ] - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - $qty = $args['qty'] ?? 1; - - Cart::visitor($args['visitor_id']); - Cart::update($args['slug'], $qty); - - return Cart::all(); - } -} diff --git a/src/Graphql/Mutations/Customer/CreateAddressMutation.php b/src/Graphql/Mutations/Customer/CreateAddressMutation.php deleted file mode 100644 index 03c889ece..000000000 --- a/src/Graphql/Mutations/Customer/CreateAddressMutation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'createAddressMutation', - 'description' => 'A mutation' - ]; - - /** - * Address Repository - * @var AvoRed\Framework\Database\Repository\AddressRepository - */ - protected $addressRepository; - - /** - * All Address construct - * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository - * @return void - */ - public function __construct(AddressModelInterface $addressRepository) - { - $this->addressRepository = $addressRepository; - } - - public function type(): Type - { - return GraphQL::type('Address'); - } - - /** - * Setup the Validation rules for create address mutation - * - * @return array $rules - */ - protected function rules(array $rules = []): array - { - return [ - 'type' => ['required', 'in:' . Address::BILLING . ',' . Address::SHIPPING], - 'first_name' => ['required', 'max:255'], - 'last_name' => ['required', 'max:255'], - 'company_name' => ['max:255'], - 'phone' => ['max:255'], - 'address1' => ['required', 'max:255'], - 'address2' => ['max:255'], - 'postcode' => ['required', 'max:255'], - 'city' => ['required', 'max:255'], - 'state' => ['required', 'max:255'], - 'country_id' => ['required', 'max:255'], - ]; - } - - public function args(): array - { - return [ - 'type' => [ - 'name' => 'type', - 'type' => Type::nonNull(Type::string()), - ], - 'first_name' => [ - 'name' => 'first_name', - 'type' => Type::nonNull(Type::string()) - ], - 'last_name' => [ - 'name' => 'last_name', - 'type' => Type::nonNull(Type::string()) - ], - 'company_name' => [ - 'name' => 'company_name', - 'type' => Type::string() - ], - 'phone' => [ - 'name' => 'phone', - 'type' => Type::string() - ], - 'address1' => [ - 'name' => 'address1', - 'type' => Type::nonNull(Type::string()) - ], - 'address2' => [ - 'name' => 'address2', - 'type' => Type::string() - ], - 'postcode' => [ - 'name' => 'postcode', - 'type' => Type::nonNull(Type::string()) - ], - 'city' => [ - 'name' => 'city', - 'type' => Type::nonNull(Type::string()) - ], - 'state' => [ - 'name' => 'state', - 'type' => Type::nonNull(Type::string()) - ], - 'country_id' => [ - 'name' => 'country_id', - 'type' => Type::nonNull(Type::string()) - ], - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - $args ['customer_id'] = Auth::guard('customer')->user()->id; - return $this->addressRepository->create($args); - } -} diff --git a/src/Graphql/Mutations/Customer/CreateSubscriberMutation.php b/src/Graphql/Mutations/Customer/CreateSubscriberMutation.php deleted file mode 100644 index d38aadf4f..000000000 --- a/src/Graphql/Mutations/Customer/CreateSubscriberMutation.php +++ /dev/null @@ -1,60 +0,0 @@ - 'CreateSubscriberMutation', - 'description' => 'A mutation' - ]; - - /** - * Subscriber Repository - * @var AvoRed\Framework\Database\Repository\SubscriberRepository - */ - protected $subscriberRepository; - - /** - * All Subscriber construct - * @param \AvoRed\Framework\Database\Contracts\SubscriberModelInterface $subscriberRepository - * @return void - */ - public function __construct(SubscriberModelInterface $subscriberRepository) - { - $this->subscriberRepository = $subscriberRepository; - } - - public function type(): Type - { - return GraphQL::type('Subscriber'); - } - - public function args(): array - { - return [ - 'email' => [ - 'name' => 'email', - 'type' => Type::nonNull(Type::string()), - ] - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - - dd('fixed this one'); - $args['status'] = 'ENABLED'; - - return $this->subscriberRepository->create($args); - } -} diff --git a/src/Graphql/Mutations/Customer/CustomerUpdateMutation.php b/src/Graphql/Mutations/Customer/CustomerUpdateMutation.php deleted file mode 100644 index f7454c68e..000000000 --- a/src/Graphql/Mutations/Customer/CustomerUpdateMutation.php +++ /dev/null @@ -1,67 +0,0 @@ - 'customerUpdate', - 'description' => 'A mutation' - ]; - - /** - * Customer Repository - * @var AvoRed\Framework\Database\Repository\CustomerRepository - */ - protected $customerRepository; - - /** - * All Customer construct - * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository - * @return void - */ - public function __construct(CustomerModelInterface $customerRepository) - { - $this->customerRepository = $customerRepository; - } - - public function type(): Type - { - return GraphQL::type('Customer'); - } - - public function args(): array - { - return [ - 'first_name' => [ - 'name' => 'first_name', - 'type' => Type::nonNull(Type::string()), - ], - 'last_name' => [ - 'name' => 'last_name', - 'type' => Type::nonNull(Type::string()) - ], - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - - dd('fixed this one'); - $customer->update($args); - - return $customer; - } -} diff --git a/src/Graphql/Mutations/Customer/DeleteAddressMutation.php b/src/Graphql/Mutations/Customer/DeleteAddressMutation.php deleted file mode 100644 index f15b3c0d4..000000000 --- a/src/Graphql/Mutations/Customer/DeleteAddressMutation.php +++ /dev/null @@ -1,62 +0,0 @@ - 'deleteAddressMutation', - 'description' => 'A mutation' - ]; - - /** - * Address Repository - * @var AvoRed\Framework\Database\Repository\AddressRepository - */ - protected $addressRepository; - - /** - * All Address construct - * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository - * @return void - */ - public function __construct(AddressModelInterface $addressRepository) - { - $this->addressRepository = $addressRepository; - } - - public function type(): Type - { - return GraphQL::type('Notification'); - } - - public function args(): array - { - return [ - 'id' => [ - 'name' => 'id', - 'type' => Type::nonNull(Type::string()), - ], - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - if ($this->addressRepository->delete($args['id'])) { - return ['success' => true, 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.address')])]; - } - throw new Exception('There is an error while deleting an address model with given id:'. $args['id']); - } -} diff --git a/src/Graphql/Mutations/Customer/UpdateAddressMutation.php b/src/Graphql/Mutations/Customer/UpdateAddressMutation.php deleted file mode 100644 index 95a681711..000000000 --- a/src/Graphql/Mutations/Customer/UpdateAddressMutation.php +++ /dev/null @@ -1,128 +0,0 @@ - 'updateAddressMutation', - 'description' => 'A mutation' - ]; - - /** - * Setup the Validation rules for create address mutation - * - * @return array $rules - */ - protected function rules(array $rules = []): array - { - return [ - 'id' => ['required', 'max:255'], - 'type' => ['required', 'in:' . Address::BILLING . ',' . Address::SHIPPING], - 'first_name' => ['required', 'max:255'], - 'last_name' => ['required', 'max:255'], - 'company_name' => ['max:255'], - 'phone' => ['max:255'], - 'address1' => ['required', 'max:255'], - 'address2' => ['max:255'], - 'postcode' => ['required', 'max:255'], - 'city' => ['required', 'max:255'], - 'state' => ['required', 'max:255'], - 'country_id' => ['required', 'max:255'], - ]; - } - - /** - * Address Repository - * @var AvoRed\Framework\Database\Repository\AddressRepository - */ - protected $addressRepository; - - /** - * All Address construct - * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository - * @return void - */ - public function __construct(AddressModelInterface $addressRepository) - { - $this->addressRepository = $addressRepository; - } - - public function type(): Type - { - return GraphQL::type('Address'); - } - - public function args(): array - { - return [ - 'id' => [ - 'name' => 'id', - 'type' => Type::nonNull(Type::string()), - ], - 'type' => [ - 'name' => 'type', - 'type' => Type::nonNull(Type::string()), - ], - 'first_name' => [ - 'name' => 'first_name', - 'type' => Type::nonNull(Type::string()) - ], - 'last_name' => [ - 'name' => 'last_name', - 'type' => Type::nonNull(Type::string()) - ], - 'company_name' => [ - 'name' => 'company_name', - 'type' => Type::string() - ], - 'address1' => [ - 'name' => 'address1', - 'type' => Type::nonNull(Type::string()) - ], - 'address2' => [ - 'name' => 'address2', - 'type' => Type::string() - ], - 'postcode' => [ - 'name' => 'postcode', - 'type' => Type::nonNull(Type::string()) - ], - 'city' => [ - 'name' => 'city', - 'type' => Type::nonNull(Type::string()) - ], - 'state' => [ - 'name' => 'state', - 'type' => Type::nonNull(Type::string()) - ], - 'country_id' => [ - 'name' => 'country_id', - 'type' => Type::nonNull(Type::string()) - ], - 'phone' => [ - 'name' => 'phone', - 'type' => Type::string() - ], - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - $address = $this->addressRepository->find($args['id']); - $address->update($args); - - return $address; - } -} diff --git a/src/Graphql/Mutations/PlaceOrderMutation.php b/src/Graphql/Mutations/PlaceOrderMutation.php deleted file mode 100644 index 3307764dd..000000000 --- a/src/Graphql/Mutations/PlaceOrderMutation.php +++ /dev/null @@ -1,130 +0,0 @@ - 'placeOrderMutation', - 'description' => 'A mutation' - ]; - - /** - * Order Repository - * @var AvoRed\Framework\Database\Repository\OrderRepository - */ - protected $orderRepository; - /** - * OrderProduct Repository - * @var AvoRed\Framework\Database\Repository\OrderProductRepository - */ - protected $orderProductRepository; - /** - * OrderStatus Repository - * @var AvoRed\Framework\Database\Repository\OrderStatusRepository - */ - protected $orderStatusRepository; - - /** - * All Order construct - * @param \AvoRed\Framework\Database\Contracts\OrderModelInterface $orderRepository - * @param \AvoRed\Framework\Database\Contracts\OrderProductModelInterface $orderProductRepository - * @return void - */ - public function __construct( - OrderModelInterface $orderRepository, - OrderProductModelInterface $orderProductRepository, - OrderStatusModelInterface $orderStatusRepository - ) { - $this->orderRepository = $orderRepository; - $this->orderProductRepository = $orderProductRepository; - $this->orderStatusRepository = $orderStatusRepository; - } - - public function type(): Type - { - return GraphQL::type('Order'); - } - - public function args(): array - { - return [ - 'shipping_option' => [ - 'name' => 'shipping_option', - 'type' => Type::nonNull(Type::string()), - ], - 'payment_option' => [ - 'name' => 'payment_option', - 'type' => Type::nonNull(Type::string()) - ], -// 'customer_id' => [ -// 'name' => 'customer_id', -// 'type' => Type::nonNull(Type::string()) -// ], - 'shipping_address_id' => [ - 'name' => 'shipping_address_id', - 'type' => Type::nonNull(Type::string()) - ], - 'billing_address_id' => [ - 'name' => 'billing_address_id', - 'type' => Type::nonNull(Type::string()) - ] - ]; - } - - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - $customer = Auth::guard('customer')->user(); - $orderStatus = $this->orderStatusRepository->findDefault(); - $args['order_status_id'] = $orderStatus->id; - $args['customer_id'] = $customer->id; - $order = $this->orderRepository->create($args); - $this->syncProducts($order, $customer, $args); -// dd($customer->cartProducts()->update(['status' => CartProduct::PLACED_ORDER])); - return $order; - } - - - /** - * Sync Products and Attributes with Order Tables. - * @param \AvoRed\Framework\Database\Models\Order $order - * @param \AvoRed\Framework\Database\Models\Customer $customer - * @param array $args - * @return void - */ - private function syncProducts(Order $order, $customer, $args) - { - $products = $customer->cartProducts() - ->where('status', CartProduct::WAITING_TO_BE_PLACED_ORDER) - ->get(); - foreach ($products as $cartProduct) { - $product = $cartProduct->product; - - $cartProduct->update(['status' => CartProduct::PLACED_ORDER]); - $orderProductData = [ - 'product_id' => $product->id, - 'order_id' => $order->id, - 'qty' => $cartProduct->qty, - 'price' => $product->price, - 'tax_amount' => $product->tax_amount ?? 0, - ]; - $this->orderProductRepository->create($orderProductData); - } - } -} diff --git a/src/Graphql/Queries/AddressQuery.php b/src/Graphql/Queries/AddressQuery.php deleted file mode 100644 index 94b812734..000000000 --- a/src/Graphql/Queries/AddressQuery.php +++ /dev/null @@ -1,74 +0,0 @@ - 'addressQuery', - 'description' => 'A query' - ]; - - /** - * Address Repository - * @var AvoRed\Framework\Database\Repository\AddressRepository - */ - protected $addressRepository; - - /** - * All Address construct - * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository - * @return void - */ - public function __construct(AddressModelInterface $addressRepository) - { - $this->addressRepository = $addressRepository; - } - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return GraphQL::type('Address'); - } - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return [ - 'id' => [ - 'name' => 'id', - 'type' => Type::nonNull(Type::string()) - ], - ]; - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return Address - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Address - { - return $this->addressRepository->find($args['id']); - } -} diff --git a/src/Graphql/Queries/AllAddressQuery.php b/src/Graphql/Queries/AllAddressQuery.php deleted file mode 100644 index 0abcc4689..000000000 --- a/src/Graphql/Queries/AllAddressQuery.php +++ /dev/null @@ -1,72 +0,0 @@ - 'allAddress', - 'description' => 'A query' - ]; - - /** - * Address Repository - * @var AvoRed\Framework\Database\Repository\AddressRepository - */ - protected $addressRepository; - - /** - * All Address construct - * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository - * @return void - */ - public function __construct(AddressModelInterface $addressRepository) - { - $this->addressRepository = $addressRepository; - } - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return Type::listOf(GraphQL::type('Address')); - } - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return []; - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return \Illuminate\Database\Eloquent\Collection - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Collection - { - $customer = Auth::guard('customer')->user(); - - return $customer->addresses; - } -} diff --git a/src/Graphql/Queries/AllCategoryQuery.php b/src/Graphql/Queries/AllCategoryQuery.php deleted file mode 100644 index 437c1a3d9..000000000 --- a/src/Graphql/Queries/AllCategoryQuery.php +++ /dev/null @@ -1,69 +0,0 @@ - 'allCategory', - 'description' => 'A query' - ]; - - /** - * Category Repository - * @var AvoRed\Framework\Database\Repository\CategoryRepository - */ - protected $categoryRepository; - - /** - * All Category construct - * @param \AvoRed\Framework\Database\Contracts\CategoryModelInterface $categoryRepository - * @return void - */ - public function __construct(CategoryModelInterface $categoryRepository) - { - $this->categoryRepository = $categoryRepository; - } - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return Type::listOf(GraphQL::type('Category')); - } - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return []; - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return \Illuminate\Database\Eloquent\Collection - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Collection - { - return $this->categoryRepository->query()->whereNull('parent_id')->get(); - } -} diff --git a/src/Graphql/Queries/AllOrdersQuery.php b/src/Graphql/Queries/AllOrdersQuery.php deleted file mode 100644 index d83c575ad..000000000 --- a/src/Graphql/Queries/AllOrdersQuery.php +++ /dev/null @@ -1,72 +0,0 @@ - 'allOrders', - 'description' => 'A query' - ]; - - /** - * Order Repository - * @var AvoRed\Framework\Database\Repository\OrderRepository - */ - protected $orderRepository; - - /** - * All Order construct - * @param \AvoRed\Framework\Database\Contracts\OrderModelInterface $orderRepository - * @return void - */ - public function __construct(OrderModelInterface $orderRepository) - { - $this->orderRepository = $orderRepository; - } - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return Type::listOf(GraphQL::type('Order')); - } - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return []; - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return LengthAwarePaginator - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): LengthAwarePaginator - { - $customer = Auth::guard('customer')->user(); - return $this->orderRepository->findByCustomerId($customer->id); - } -} diff --git a/src/Graphql/Queries/CartItemsQuery.php b/src/Graphql/Queries/CartItemsQuery.php deleted file mode 100644 index f701cb856..000000000 --- a/src/Graphql/Queries/CartItemsQuery.php +++ /dev/null @@ -1,59 +0,0 @@ - 'cartItems', - 'description' => 'A query' - ]; - - - public function type(): Type - { - return Type::listOf(GraphQL::type('CartProduct')); - } - - - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return [ - 'visitor_id' => [ - 'name' => 'visitor_id', - 'type' => Type::nonNull(Type::string()) - ], - ]; - } - - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return Address - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Collection - { - return Cart::visitor($args['visitor_id'])->all(); - } -} diff --git a/src/Graphql/Queries/CategoryQuery.php b/src/Graphql/Queries/CategoryQuery.php deleted file mode 100644 index ec6aa898a..000000000 --- a/src/Graphql/Queries/CategoryQuery.php +++ /dev/null @@ -1,79 +0,0 @@ - 'category', - 'description' => 'A query' - ]; - - /** - * Category Repository - * @var AvoRed\Framework\Database\Repository\CategoryRepository - */ - protected $categoryRepository; - - /** - * All Category construct - * @param \AvoRed\Framework\Database\Contracts\CategoryModelInterface $categoryRepository - * @return void - */ - public function __construct(CategoryModelInterface $categoryRepository) - { - $this->categoryRepository = $categoryRepository; - } - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return GraphQL::type('Category'); - } - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return [ - 'slug' => [ - 'name' => 'slug', - 'type' => Type::nonNull(Type::string()) - ], - 'page' => [ - 'name' => 'page', - 'type' => Type::int() - ], - ]; - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return \Illuminate\Database\Eloquent\Collection - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Category - { - return $this->categoryRepository->findBySlug($args['slug']); - } -} diff --git a/src/Graphql/Queries/CountryOptionsQuery.php b/src/Graphql/Queries/CountryOptionsQuery.php deleted file mode 100644 index d40fadfb9..000000000 --- a/src/Graphql/Queries/CountryOptionsQuery.php +++ /dev/null @@ -1,53 +0,0 @@ - 'countryOptions', - 'description' => 'A query' - ]; - - /** - * Customer Repository - * @var AvoRed\Framework\Database\Repository\CustomerRepository - */ - protected $customerRepository; - - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return Type::listOf(GraphQL::type('Option')); - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return Collection - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Collection - { - return DB::table('countries')->get(['id', 'name']); - } -} diff --git a/src/Graphql/Queries/CustomerQuery.php b/src/Graphql/Queries/CustomerQuery.php deleted file mode 100644 index 8b6406eb1..000000000 --- a/src/Graphql/Queries/CustomerQuery.php +++ /dev/null @@ -1,79 +0,0 @@ - 'customerQuery', - 'description' => 'A query' - ]; - - /** - * Customer Repository - * @var AvoRed\Framework\Database\Repository\CustomerRepository - */ - protected $customerRepository; - - /** - * All Customer construct - * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository - * @return void - */ - public function __construct(CustomerModelInterface $customerRepository) - { - $this->customerRepository = $customerRepository; - } - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return GraphQL::type('Customer'); - } - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return [ - 'id' => [ - 'name' => 'id', - 'type' => Type::string() - ], - ]; - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return Customer - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Customer - { - if (isset($args['id'])) { - return $this->customerRepository->find($args['id']); - } - - return $this->customerRepository->find(Auth::guard('customer')->user()->id); - } -} diff --git a/src/Graphql/Queries/LatestProductQuery.php b/src/Graphql/Queries/LatestProductQuery.php deleted file mode 100644 index ad87c7c02..000000000 --- a/src/Graphql/Queries/LatestProductQuery.php +++ /dev/null @@ -1,69 +0,0 @@ - 'latestProductQuery', - 'description' => 'A query' - ]; - - /** - * Product Repository - * @var AvoRed\Framework\Database\Repository\ProductRepository - */ - protected $productRepository; - - /** - * All Product construct - * @param \AvoRed\Framework\Database\Contracts\ProductModelInterface $productRepository - * @return void - */ - public function __construct(ProductModelInterface $productRepository) - { - $this->productRepository = $productRepository; - } - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return Type::listOf(GraphQL::type('Product')); - } - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return []; - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return \Illuminate\Database\Eloquent\Collection - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Collection - { - return $this->productRepository->query()->orderBy('updated_at', 'desc')->get(); - } -} diff --git a/src/Graphql/Queries/OrderQuery.php b/src/Graphql/Queries/OrderQuery.php deleted file mode 100644 index a21d6ee1e..000000000 --- a/src/Graphql/Queries/OrderQuery.php +++ /dev/null @@ -1,77 +0,0 @@ - 'allOrders', - 'description' => 'A query' - ]; - - /** - * Order Repository - * @var AvoRed\Framework\Database\Repository\OrderRepository - */ - protected $orderRepository; - - /** - * All Order construct - * @param \AvoRed\Framework\Database\Contracts\OrderModelInterface $orderRepository - * @return void - */ - public function __construct(OrderModelInterface $orderRepository) - { - $this->orderRepository = $orderRepository; - } - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return GraphQL::type('Order'); - } - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return [ - 'id' => [ - 'name' => 'id', - 'type' => Type::nonNull(Type::string()) - ] - ]; - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param mixed $getSelectFields - * @return Orderr - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Order - { - return $this->orderRepository->find($args['id']); - } -} diff --git a/src/Graphql/Queries/PaymentQuery.php b/src/Graphql/Queries/PaymentQuery.php deleted file mode 100644 index 620de5b60..000000000 --- a/src/Graphql/Queries/PaymentQuery.php +++ /dev/null @@ -1,71 +0,0 @@ - 'paymentQuery', - 'description' => 'A query' - ]; - - /** - * Address Repository - * @var AvoRed\Framework\Database\Repository\AddressRepository - */ - // protected $addressRepository; - - /** - * All Address construct - * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository - * @return void - */ - public function __construct( - // AddressModelInterface $addressRepository - ) - { - // $this->addressRepository = $addressRepository; - } - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return Type::listOf(GraphQL::type('Payment')); - } - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return []; - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return Collection - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - return Payment::all(); - } -} diff --git a/src/Graphql/Queries/ProductQuery.php b/src/Graphql/Queries/ProductQuery.php deleted file mode 100644 index dab99ed13..000000000 --- a/src/Graphql/Queries/ProductQuery.php +++ /dev/null @@ -1,71 +0,0 @@ - 'product', - 'description' => 'A query' - ]; - - /** - * Category Repository - * @var AvoRed\Framework\Database\Repository\ProductRepository - */ - protected $productRepository; - - /** - * All Product construct - * @param \AvoRed\Framework\Database\Contracts\ProductModelInterface $productRepository - * @return void - */ - public function __construct(ProductModelInterface $productRepository) - { - $this->productRepository = $productRepository; - } - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return GraphQL::type('Product'); - } - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return [ - 'slug' => [ - 'name' => 'slug', - 'type' => Type::nonNull(Type::string()) - ], - ]; - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return \Illuminate\Database\Eloquent\Collection - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Product - { - return $this->productRepository->findBySlug($args['slug']); - } -} diff --git a/src/Graphql/Queries/ShippingQuery.php b/src/Graphql/Queries/ShippingQuery.php deleted file mode 100644 index 8c75efd18..000000000 --- a/src/Graphql/Queries/ShippingQuery.php +++ /dev/null @@ -1,71 +0,0 @@ - 'shippingQuery', - 'description' => 'A query' - ]; - - /** - * Address Repository - * @var AvoRed\Framework\Database\Repository\AddressRepository - */ - // protected $addressRepository; - - /** - * All Address construct - * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository - * @return void - */ - public function __construct( - // AddressModelInterface $addressRepository - ) - { - // $this->addressRepository = $addressRepository; - } - - /** - * Return type for these query - * @return \GraphQL\Type\Definition\Type - */ - public function type(): Type - { - return Type::listOf(GraphQL::type('Shipping')); - } - - /** - * Passed arguments for this query - * @return array - */ - public function args(): array - { - return []; - } - - /** - * Resolve Query to get pass an information - * @param mixed $root - * @param array $args - * @param mixed $context - * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo - * @param midex $getSelectFields - * @return Collection - */ - public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) - { - return Shipping::all(); - } -} diff --git a/src/Graphql/Traits/AuthorizedTrait.php b/src/Graphql/Traits/AuthorizedTrait.php deleted file mode 100644 index 68fb2931e..000000000 --- a/src/Graphql/Traits/AuthorizedTrait.php +++ /dev/null @@ -1,24 +0,0 @@ -check(); - } -} diff --git a/src/Graphql/Types/AddressType.php b/src/Graphql/Types/AddressType.php deleted file mode 100644 index 7bfdfd68e..000000000 --- a/src/Graphql/Types/AddressType.php +++ /dev/null @@ -1,108 +0,0 @@ - 'Address', - 'description' => 'A type' - ]; - - /** - * Fields for Address Type - * @return array $fields - */ - public function fields(): array - { - return [ - 'id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The id of the address' - ], - 'customer_id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The user id of the address' - ], - 'type' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The type of the address' - ], - 'first_name' => [ - 'type' => Type::string(), - 'description' => 'The first name of the address' - ], - 'last_name' => [ - 'type' => Type::string(), - 'description' => 'The last name of the address' - ], - 'company_name' => [ - 'type' => Type::string(), - 'description' => 'The company name of the address' - ], - 'address1' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The address1 of the address' - ], - 'address2' => [ - 'type' => Type::string(), - 'description' => 'The address2 of the address' - ], - 'postcode' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The postcode of the address' - ], - 'city' => [ - 'type' => Type::string(), - 'description' => 'The city of the address' - ], - 'state' => [ - 'type' => Type::string(), - 'description' => 'The state of the address' - ], - 'country_id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The country id of the address' - ], - 'country_name' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The country id of the address' - ], - 'phone' => [ - 'type' => Type::string(), - 'description' => 'The phone of the address' - ], - 'created_at' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The created_at of the address' - ], - 'updated_at' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The updated_at of the address' - ], - - ]; - } - - /** - * @param \AvoRed\Framework\Database\Models\Address $address - * @param array $args - * @return string $taxAmount - */ - protected function resolveCountryNameField($address, $args) - { - return $address->country->name; - } -} diff --git a/src/Graphql/Types/CartProductType.php b/src/Graphql/Types/CartProductType.php deleted file mode 100644 index ad8dacceb..000000000 --- a/src/Graphql/Types/CartProductType.php +++ /dev/null @@ -1,56 +0,0 @@ - 'CartProduct', - 'description' => 'A type' - ]; - - /** - * Fields for Product Type - * @return array $fields - */ - public function fields(): array - { - return [ - 'id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Product Id' - ], - 'visitor_id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'CartProduct Visitor Id' - ], - 'product_id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'CartProduct product id' - ], - 'product' => [ - 'type' => Type::nonNull(GraphQL::type('Product')), - 'description' => 'CartProduct product model' - ], - 'qty' => [ - 'type' => Type::float(), - 'description' => 'CartProduct qty' - ], - 'created_at' => [ - 'type' => Type::string(), - 'description' => 'Product created at' - ], - 'updated_at' => [ - 'type' => Type::string(), - 'description' => 'Product updated at' - ], - ]; - } -} diff --git a/src/Graphql/Types/CategoryType.php b/src/Graphql/Types/CategoryType.php deleted file mode 100644 index d8b67a5a0..000000000 --- a/src/Graphql/Types/CategoryType.php +++ /dev/null @@ -1,124 +0,0 @@ - 'Category', - 'description' => 'A type' - ]; - - /** - * Fields for Category Type - * @return array $fields - */ - public function fields(): array - { - return [ - 'id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Category Id' - ], - 'name' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Category Name' - ], - 'slug' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Category Slug' - ], - 'description' => [ - 'type' => Type::string(), - 'description' => 'Category Description' - ], - 'meta_title' => [ - 'type' => Type::string(), - 'description' => 'Category Meta title' - ], - 'meta_description' => [ - 'type' => Type::string(), - 'description' => 'Category Meta Description' - ], - 'created_at' => [ - 'type' => Type::string(), - 'description' => 'Category created at' - ], - 'updated_at' => [ - 'type' => Type::string(), - 'description' => 'Category updated at' - ], - // 'filter' => [ - // 'type' => Type::listOf(GraphQL::type('filter')), - // 'description' => 'Category Filter' - // ], - 'products' => [ - 'type' => GraphQL::paginate('Product'), - 'description' => 'Category Product' - ], - 'children' => [ - 'type' => Type::listOf(GraphQL::type('Category')), - 'description' => 'Child Category' - ], - ]; - } - - /** - * @param \AvoRed\Framework\Database\Models\Category $category - * @param array $args - * @return \Illuminate\Support\Collection $titleCollection - */ - protected function resolveFilterField($category, $args) - { - $categoryFilterRepository = app(CategoryFilterModelInterface::class); - return $categoryFilterRepository->findByCategoryId($category->id); - } - - /** - * @param \AvoRed\Framework\Database\Models\Category $category - * @param array $args - * @return \Illuminate\Support\Collection $titleCollection - */ - protected function resolveChildrenField($category, $args) - { - return $category->children; - } - - /** - * @param \AvoRed\Framework\Database\Models\Category $category - * @param array $args - * @param mixed $content - * @param ResolveInfo $resolveInfo - * @return \Illuminate\Support\Collection $categoryProducts - */ - protected function resolveProductsField($category, $args, $context, ResolveInfo $resolveInfo) - { - $args = $resolveInfo->variableValues; - $page = isset($args['page']) ? $args['page'] : 1; - return $category->products()->paginate($this->getNoOfPaginateItem(), ['*'], 'page', $page); - } - - /** - * Get the Number of Item per page - * @return int - */ - protected function getNoOfPaginateItem(): int - { - return $this->perPage; - } -} diff --git a/src/Graphql/Types/CustomerType.php b/src/Graphql/Types/CustomerType.php deleted file mode 100644 index 71b3c63b8..000000000 --- a/src/Graphql/Types/CustomerType.php +++ /dev/null @@ -1,82 +0,0 @@ - 'Customer', - 'description' => 'A type' - ]; - - /** - * Fields for Customer Type - * @return array $fields - */ - public function fields(): array - { - return [ - 'first_name' => [ - 'type' => Type::string(), - 'description' => 'The customer for the first name' - ], - 'last_name' => [ - 'type' => Type::string(), - 'description' => 'The customer for the last name' - ], - 'email' => [ - 'type' => Type::string(), - 'description' => 'The customer for the email' - ], - 'id' => [ - 'type' => Type::string(), - 'description' => 'The customer for the id' - ], - 'created_at' => [ - 'type' => Type::string(), - 'description' => 'Customer created at' - ], - 'updated_at' => [ - 'type' => Type::string(), - 'description' => 'Customer updated at' - ], - 'token_type' => [ - 'type' => Type::string(), - 'description' => 'Customer updated at' - ], - 'expires_in' => [ - 'type' => Type::int(), - 'description' => 'Customer updated at' - ], - 'access_token' => [ - 'type' => Type::string(), - 'description' => 'Customer updated at' - ], - 'refresh_token' => [ - 'type' => Type::string(), - 'description' => 'Customer updated at' - ], - 'addresses' => [ - 'type' => Type::listOf(GraphQL::type('Address')), - 'description' => 'Customer updated at' - ], - ]; - } - - /** - * @param \AvoRed\Framework\Database\Models\Customer $customer - * @param array $args - * @return string $taxAmount - */ - protected function resolveAddressesField($customer, $args) - { - return $customer->addresses; - } -} diff --git a/src/Graphql/Types/NotificationType.php b/src/Graphql/Types/NotificationType.php deleted file mode 100644 index d44c501e9..000000000 --- a/src/Graphql/Types/NotificationType.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Notification', - 'description' => 'A type' - ]; - - /** - * Fields for Delete Type - * @return array $fields - */ - public function fields(): array - { - return [ - 'success' => [ - 'type' => Type::nonNull(Type::boolean()), - 'description' => 'Success' - ], - 'message' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Message' - ] - ]; - } -} diff --git a/src/Graphql/Types/OptionType.php b/src/Graphql/Types/OptionType.php deleted file mode 100644 index b01954f69..000000000 --- a/src/Graphql/Types/OptionType.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Option', - 'description' => 'A type' - ]; - - /** - * Fields for Subscriber Type - * @return array $fields - */ - public function fields(): array - { - return [ - 'value' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The value of the option' - ], - 'label' => [ - 'type' => Type::string(), - 'description' => 'The label of the option' - ], - ]; - } - - - /** - * @param $country - * @param array $args - * @return string $taxAmount - */ - protected function resolveValueField($country, $args) - { - return $country->id; - } - - /** - * @param $country - * @param array $args - * @return string $taxAmount - */ - protected function resolveLabelField($country, $args) - { - return $country->name; - } -} diff --git a/src/Graphql/Types/OrderType.php b/src/Graphql/Types/OrderType.php deleted file mode 100644 index 39ad4038c..000000000 --- a/src/Graphql/Types/OrderType.php +++ /dev/null @@ -1,122 +0,0 @@ - 'Order', - 'description' => 'A type' - ]; - - /** - * Fields for Order Type - * @return array $fields - */ - public function fields(): array - { - return [ - 'id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Id' - ], - 'shipping_option' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Shipping Option' - ], - 'payment_option' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Payment Option' - ], - 'order_status_id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Status Id' - ], - 'order_status_name' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Status Name' - ], - 'shipping_address_id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Shipping Address Id' - ], - 'shipping_address' => [ - 'type' => Type::nonNull(GraphQL::type('Address')), - 'description' => 'Order Shipping Address' - ], - 'customer' => [ - 'type' => Type::nonNull(GraphQL::type('Customer')), - 'description' => 'Order Customer' - ], - 'billing_address_id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Billing Address Id' - ], - 'billing_address' => [ - 'type' => GraphQL::type('Address'), - 'description' => 'Order Billing Address' - ], - 'track_code' => [ - 'type' => Type::string(), - 'description' => 'Order Tracking Code' - ], - 'created_at' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Order created at' - ], - 'updated_at' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Order updated at ' - ], - ]; - } - - /** - * @param \AvoRed\Framework\Database\Models\Order $order - * @param array $args - * @return string $taxAmount - */ - protected function resolveTaxAmountField(Order $order, $args) - { - return $order->taxAmount(); - } - - /** - * @param \AvoRed\Framework\Database\Models\Order $order - * @param array $args - * @return string $taxAmount - */ - protected function resolveBillingAddressField(Order $order, $args) - { - return $order->billingAddress; - } - - /** - * @param \AvoRed\Framework\Database\Models\Order $order - * @param array $args - * @return string $taxAmount - */ - protected function resolveShippingAddressField(Order $order, $args) - { - return $order->shippingAddress; - } - - /** - * @param \AvoRed\Framework\Database\Models\Order $order - * @param array $args - * @return string $taxAmount - */ - protected function resolveOrderStatusNameField(Order $order, $args) - { - return $order->orderStatus->name; - } -} diff --git a/src/Graphql/Types/PaymentType.php b/src/Graphql/Types/PaymentType.php deleted file mode 100644 index f104b07f3..000000000 --- a/src/Graphql/Types/PaymentType.php +++ /dev/null @@ -1,69 +0,0 @@ - 'Payment', - 'description' => 'A type' - ]; - - /** - * Fields for Payment Type - * @return array $fields - */ - public function fields(): array - { - return [ - 'name' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Payment Name' - ], - 'identifier' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Payment Identifier' - ], - 'view' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Payment View' - ], - ]; - } - - /** - * @param mixed $payment - * @param array $args - * @return string - */ - protected function resolveNameField($payment, $args) - { - return $payment->name(); - } - - /** - * @param mixed $payment - * @param array $args - * @return string - */ - protected function resolveIdentifierField($payment, $args) - { - return $payment->identifier(); - } - - /** - * @param mixed $payment - * @param array $args - * @return string - */ - protected function resolveViewField($payment, $args) - { - return view($payment->view(), $payment->with()); - } -} diff --git a/src/Graphql/Types/ProductType.php b/src/Graphql/Types/ProductType.php deleted file mode 100644 index a56bc5c27..000000000 --- a/src/Graphql/Types/ProductType.php +++ /dev/null @@ -1,143 +0,0 @@ - 'Product', - 'description' => 'A type' - ]; - - /** - * Fields for Product Type - * @return array $fields - */ - public function fields(): array - { - return [ - 'id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Product Id' - ], - 'name' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Product Name' - ], - 'main_image_url' => [ - 'type' => Type::string(), - 'description' => 'Product Main Image Url' - ], - 'slug' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Product Slug' - ], - 'type' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Product Type' - ], - 'sku' => [ - 'type' => Type::string(), - 'description' => 'Product SKU' - ], - 'barcode' => [ - 'type' => Type::string(), - 'description' => 'Product Barcode' - ], - 'price' => [ - 'type' => Type::float(), - 'description' => 'Product Price' - ], - 'status' => [ - 'type' => Type::int(), - 'description' => 'Product Status' - ], - 'in_stock' => [ - 'type' => Type::int(), - 'description' => 'Product in stock' - ], - 'track_stock' => [ - 'type' => Type::int(), - 'description' => 'Product track stock' - ], - 'is_taxable' => [ - 'type' => Type::int(), - 'description' => 'Product is taxable' - ], - 'cost_price' => [ - 'type' => Type::float(), - 'description' => 'Product cost price' - ], - 'qty' => [ - 'type' => Type::float(), - 'description' => 'Product Qty' - ], - 'weight' => [ - 'type' => Type::float(), - 'description' => 'Product Weight' - ], - 'height' => [ - 'type' => Type::float(), - 'description' => 'Product Height' - ], - 'width' => [ - 'type' => Type::float(), - 'description' => 'Product Width' - ], - 'length' => [ - 'type' => Type::float(), - 'description' => 'Product Length' - ], - 'description' => [ - 'type' => Type::string(), - 'description' => 'Product Description' - ], - 'meta_title' => [ - 'type' => Type::string(), - 'description' => 'Product Meta title' - ], - 'meta_description' => [ - 'type' => Type::string(), - 'description' => 'Product Meta Description' - ], - 'created_at' => [ - 'type' => Type::string(), - 'description' => 'Product created at' - ], - 'updated_at' => [ - 'type' => Type::string(), - 'description' => 'Product updated at' - ], - ]; - } - - /** - * @param mixed $product - * @param array $args - * @return string - */ - protected function resolveMainImageUrlField($product, $args) - { - $document = $product->document()->first(); - - if (is_null($document)) { - $color = str_pad(dechex(rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT); - return 'https://place-hold.it/250/' . $color . '&text=' . str_replace(' ', '-', $product->slug); - } - return asset('storage/' . $document->path); - } - -} diff --git a/src/Graphql/Types/ShippingType.php b/src/Graphql/Types/ShippingType.php deleted file mode 100644 index c3659183c..000000000 --- a/src/Graphql/Types/ShippingType.php +++ /dev/null @@ -1,69 +0,0 @@ - 'Shipping', - 'description' => 'A type' - ]; - - /** - * Fields for Shipping Type - * @return array $fields - */ - public function fields(): array - { - return [ - 'name' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Shipping Name' - ], - 'identifier' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Shipping Identifier' - ], - 'view' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'Shipping View' - ], - ]; - } - - /** - * @param mixed $shipping - * @param array $args - * @return string - */ - protected function resolveNameField($shipping, $args) - { - return $shipping->name(); - } - - /** - * @param mixed $shipping - * @param array $args - * @return string - */ - protected function resolveIdentifierField($shipping, $args) - { - return $shipping->identifier(); - } - - /** - * @param mixed $shipping - * @param array $args - * @return string - */ - protected function resolveViewField($shipping, $args) - { - return view($shipping->view(), $shipping->with()); - } -} diff --git a/src/Graphql/Types/SubscriberType.php b/src/Graphql/Types/SubscriberType.php deleted file mode 100644 index 5cbc28259..000000000 --- a/src/Graphql/Types/SubscriberType.php +++ /dev/null @@ -1,52 +0,0 @@ - 'Subscriber', - 'description' => 'A type' - ]; - - /** - * Fields for Subscriber Type - * @return array $fields - */ - public function fields(): array - { - return [ - 'id' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The id of the subscriber' - ], - 'customer_id' => [ - 'type' => Type::string(), - 'description' => 'The customer id of the subscriber' - ], - 'email' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The email of the subscriber' - ], - 'status' => [ - 'type' => Type::string(), - 'description' => 'The status of the subscriber' - ], - 'created_at' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The created_at of the subscriber' - ], - 'updated_at' => [ - 'type' => Type::nonNull(Type::string()), - 'description' => 'The updated_at of the subscriber' - ], - - ]; - } -} diff --git a/src/Menu/Menu.php b/src/Menu/Menu.php deleted file mode 100644 index 8588d8a15..000000000 --- a/src/Menu/Menu.php +++ /dev/null @@ -1,19 +0,0 @@ -collection = Collection::make([]); - } - - /** - * Make a Front End Menu an Object. - * @param string $key - * @param callable $callable - * @return self - */ - public function make($key, callable $callable) - { - $menu = new MenuItem($callable); - $menu->key($key); - $this->collection->put($key, $menu); - - return $this; - } - - /** - * Return Menu Object. - * @var string - * @return \AvoRed\Framework\Menu\Menu - */ - public function get($key) - { - return $this->collection->get($key); - } - - /** - * Return all available Menu in Menu. - * @param void - * @return \Illuminate\Support\Collection - */ - public function all($admin = false) - { - if ($admin) { - return $this->collection->filter(function ($item) { - return $item->type() === MenuItem::ADMIN; - }); - } else { - return $this->collection->filter(function ($item) { - return $item->type() === MenuItem::FRONT; - }); - } - } - - public function getMenuItemFromRouteName($name) - { - $currentOpenKey = ''; - $currentMenuItemKey = ''; - foreach ($this->collection as $key => $menuGroup) { - if ($menuGroup->hasSubMenu()) { - $subMenus = $menuGroup->subMenu($key); - - foreach($subMenus as $subKey => $subMenu) { - if ($subMenu->route() == $name) { - $currentOpenKey = $key; - $currentMenuItemKey = $subMenu->key(); - } - } - } - } - - return [$currentOpenKey, $currentMenuItemKey]; - } - - /** - * Return all available Menu in Menu. - * @param void - * @return \Illuminate\Support\Collection - */ - public function frontMenus() - { - $frontMenus = collect(); - - $i = 1; - foreach ($this->collection as $item) { - if ($item->type() === MenuItem::FRONT) { - $menu = new stdClass; - $menu->id = $i; - $menu->name = $item->label; - $menu->route = $item->route(); - $menu->params = $item->params(); - $menu->url = route($item->route(), $item->params()); - $menu->submenus = $item->submenus ?? []; - $frontMenus->push($menu); - $i++; - } - } - - return $frontMenus; - } - - /** - * Return all available Menu in Menu. - * @param void - * @return \Illuminate\Support\Collection - */ - public function adminMenus() - { - return $adminMenus = $this->all(true); - - - $result = $adminMenus->map(function ($item, $index) { - $routeName = $item->route(); - if ($item->hasSubMenu()) { - - - $subMenus = collect($item->subMenu)->map(function ($item) { - $routeName = $item->route(); - return [ - 'name' => $item->label(), - 'url' => $routeName === '#' ? '#' : route($routeName, $item->params()), - ]; - }); - } - return [ - 'name' => $item->label(), - 'icon' => $item->icon(), - 'url' => $routeName === '#' ? '#' : route($routeName, $item->params()), - 'submenus' => $subMenus - ]; - }); - - - return $result; - } -} \ No newline at end of file diff --git a/src/Menu/MenuInterface.php b/src/Menu/MenuInterface.php deleted file mode 100644 index 4c55e2d82..000000000 --- a/src/Menu/MenuInterface.php +++ /dev/null @@ -1,41 +0,0 @@ -callback = $callable; - $callable($this); - } - - /** - * Get/Set Admin Menu Label. - * @param string|null $label - * @return \AvoRed\Framework\Menu\MenuItem|string - */ - public function label($label = null) - { - if (null !== $label) { - $this->label = $label; - - return $this; - } - - return trans($this->label); - } - - /** - * Get/Set Admin Menu Type. - * @return mixed - */ - public function type($type = null) - { - if (null !== $type) { - $this->type = $type; - - return $this; - } - - return $this->type; - } - - /** - * Get/Set Admin Menu Identifier. - * @return \AvoRed\Framework\Menu\MenuItem|string - */ - public function key($key = null) - { - if (null !== $key) { - $this->key = $key; - - return $this; - } - - return $this->key; - } - - /** - * Get/Set Admin Menu Route Name. - * @return \AvoRed\Framework\Menu\MenuItem|string - */ - public function route($routeName = null, $params = []) - { - if (null !== $routeName) { - $this->routeName = $routeName; - - return $this; - } - - return $this->routeName; - } - - /** - * Get/Set Admin Menu Route Params Name. - * @return \AvoRed\Framework\Menu\MenuItem|string - */ - public function params($params = null) - { - if (null !== $params) { - $this->params = $params; - - return $this; - } - - return $this->params; - } - - /** - * Get/Set Admin Menu Icon. - * @return \AvoRed\Framework\Menu\MenuItem|string - */ - public function icon($icon = null) - { - if (null !== $icon) { - $this->icon = $icon; - - return $this; - } - - return $this->icon; - } - - /** - * Get/Set Admin Menu Icon. - * @return \AvoRed\Framework\Menu\MenuItem|string - */ - public function attributes($attributes = null) - { - if (null !== $attributes) { - $this->attributes = $attributes; - - return $this; - } - - return $this->attributes; - } - - /** - * Get/Set Admin Menu Sub Menu. - * @param null|string $key - * @param mixed $menuItem - * @return \AvoRed\Framework\AdminMenu\AdminMenu - */ - public function subMenu($key = null, $menuItem = null) - { - if (null === $menuItem) { - return $this->subMenu; - } - $menu = new self($menuItem); - $this->subMenu[$key] = $menu; - - return $this; - } - - /** - * To check if a menu has submenu or not. - * @return bool - */ - public function hasSubMenu() - { - if (isset($this->subMenu) && count($this->subMenu) > 0) { - return true; - } - - return false; - } -} \ No newline at end of file diff --git a/src/Menu/MenuProvider.php b/src/Menu/MenuProvider.php deleted file mode 100644 index 8856b6c60..000000000 --- a/src/Menu/MenuProvider.php +++ /dev/null @@ -1,234 +0,0 @@ -registerAdminMenu(); - } - - /** - * Register the service provider. - * @return void - */ - public function register() - { - $this->registerServices(); - $this->app->alias('menu', MenuBuilder::class); - } - - /** - * Register the Admin Menu instance. - * @return void - */ - protected function registerServices() - { - $this->app->singleton( - 'menu', - function () { - return new MenuBuilder(); - } - ); - } - - /** - * Get the services provided by the provider. - * @return array - */ - public function provides() - { - return ['menu', MenuBuilder::class]; - } - - /** - * Register Admin Menu for the AvoRed E commerce package. - * @return void - */ - public function registerAdminMenu() - { - Menu::make('catalog', function (MenuItem $menu) { - $menu->label('avored::system.catalog') - ->type(MenuItem::ADMIN) - ->icon('shopping-bag') - ->route('#'); - }); - - $catalogMenu = Menu::get('catalog'); - - /** @var Builder $catalogMenu */ - $catalogMenu->subMenu('product', function (MenuItem $menu) { - $menu->key('product') - ->type(MenuItem::ADMIN) - ->label('avored::system.product') - ->route('admin.product.index'); - }); - $catalogMenu->subMenu('category', function (MenuItem $menu) { - $menu->key('category') - ->type(MenuItem::ADMIN) - ->label('avored::system.category') - ->route('admin.category.index'); - }); - $catalogMenu->subMenu('property', function (MenuItem $menu) { - $menu->key('property') - ->type(MenuItem::ADMIN) - ->label('avored::system.property') - ->route('admin.property.index'); - }); - - $catalogMenu->subMenu('attribute', function (MenuItem $menu) { - $menu->key('attribute') - ->type(MenuItem::ADMIN) - ->label('avored::system.attribute') - ->route('admin.attribute.index'); - }); - - Menu::make('cms', function (MenuItem $menu) { - $menu->label('avored::system.cms') - ->type(MenuItem::ADMIN) - ->icon('book-open') - ->route('#'); - }); - /** @var Builder $cmsMenu */ - $cmsMenu = Menu::get('cms'); - // $cmsMenu->subMenu('menu-group', function (MenuItem $menu) { - // $menu->key('menu-group') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.menu') - // ->route('admin.menu-group.index'); - // }); - $cmsMenu->subMenu('page', function (MenuItem $menu) { - $menu->key('page') - ->type(MenuItem::ADMIN) - ->label('avored::system.page') - ->route('admin.page.index'); - }); - Menu::make('order', function (MenuItem $menu) { - $menu->label('avored::system.order') - ->icon('dollar-sign') - ->type(MenuItem::ADMIN) - ->route('#'); - }); - /** @var Builder $orderMenu */ - $orderMenu = Menu::get('order'); - - $orderMenu->subMenu('order', function (MenuItem $menu) { - $menu->key('order') - ->type(MenuItem::ADMIN) - ->label('avored::system.order') - ->route('admin.order.index'); - }); - $orderMenu->subMenu('order-status', function (MenuItem $menu) { - $menu->key('order-status') - ->type(MenuItem::ADMIN) - ->label('avored::system.order-status') - ->route('admin.order-status.index'); - }); - - // Menu::make('report', function (MenuItem $menu) { - // $menu->label('avored::system.admin_menus.report') - // ->type(MenuItem::ADMIN) - // ->icon('book-reference') - // ->route('#'); - // }); - // $reportMenu = Menu::get('report'); - // $reportMenu->subMenu('new_customer', function (MenuItem $menu) { - // $menu->key('new_customer') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.admin_menus.new_customer') - // ->route('admin.report.index') - // ->params(['identifier' => 'new-customer']); - // }); - - // Menu::make('promotion', function (MenuItem $menu) { - // $menu->label('avored::system.admin_menus.promotion') - // ->icon('ticket') - // ->type(MenuItem::ADMIN) - // ->route('#'); - // }); - // $promotionMenu = Menu::get('promotion'); - // /** @var Builder $promotionMenu */ - // $promotionMenu->subMenu('promotion_code', function (MenuItem $menu) { - // $menu->key('promotion_code') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.admin_menus.promo-code') - // ->route('admin.promotion-code.index'); - // }); - - Menu::make('user', function (MenuItem $menu) { - $menu->label('avored::system.user') - ->type(MenuItem::ADMIN) - ->icon('users') - ->route('#'); - }); - /** @var $userMenu \AvoRed\Framework\Menu\MenuBuilder */ - $userMenu = Menu::get('user'); - - // $userMenu->subMenu('customer_group', function (MenuItem $menu) { - // $menu->key('customer_group') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.admin_menus.customer-group') - // ->route('admin.customer-group.index'); - // }); - - $userMenu->subMenu('staff', function (MenuItem $menu) { - $menu->key('staff') - ->type(MenuItem::ADMIN) - ->label('avored::system.staff') - ->route('admin.staff.index'); - }); - $userMenu->subMenu('subscriber', function (MenuItem $menu) { - $menu->key('subscriber') - ->type(MenuItem::ADMIN) - ->label('avored::system.subscriber') - ->route('admin.subscriber.index'); - }); - - Menu::make('system', function (MenuItem $menu) { - $menu->label('avored::system.system') - ->type(MenuItem::ADMIN) - ->icon('settings') - ->route('#'); - }); - - /** @var $systemMenu \AvoRed\Framework\Menu\MenuBuilder */ - $systemMenu = Menu::get('system'); - /** @var Builder $systemMenu */ - $systemMenu->subMenu('configuration', function (MenuItem $menu) { - $menu->key('configuration') - ->type(MenuItem::ADMIN) - ->label('avored::system.configuration') - ->route('admin.configuration.index'); - }); - - // $systemMenu->subMenu('currency', function (MenuItem $menu) { - // $menu->key('currency') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.admin_menus.currency') - // ->route('admin.currency.index'); - // }); - - $systemMenu->subMenu('role', function (MenuItem $menu) { - $menu->key('role') - ->type(MenuItem::ADMIN) - ->label('avored::system.role') - ->route('admin.role.index'); - }); - - } -} diff --git a/src/Module/Console/ControllerMakeCommand.php b/src/Module/Console/ControllerMakeCommand.php deleted file mode 100644 index e5f433bd7..000000000 --- a/src/Module/Console/ControllerMakeCommand.php +++ /dev/null @@ -1,189 +0,0 @@ -files = $files; - } - - /** - * Execute the console command. - * - * @return void - */ - public function handle() - { - $identifier = strtolower($this->getIdentifierInput()); - - [$vendor, $name] = explode('-', $identifier); - - $controllerName = $this->getNameInput(); - - $stubFiles = ['controller']; - - foreach ($stubFiles as $stubFile) { - $methodName = 'get'.ucfirst($stubFile).'Path'; - - $path = $this->$methodName($vendor, $name, $controllerName); - $this->createRequiredDirectories($path); - - $buildMethodName = 'build'.ucfirst($stubFile).'File'; - $this->files->put($path, $this->$buildMethodName()); - } - - $this->info($this->type.' created successfully.'); - } - - /** - * Write the Markdown template for the mailable. - * - * @return void - */ - protected function createRequiredDirectories($path) - { - if (! $this->files->isDirectory(dirname($path))) { - $this->files->makeDirectory(dirname($path), 0755, true); - } - } - - /** - * Get Controller Path. - * @param string $vendor - * @param string $name - * @param string $controllerName - * @return string $controllerPath - */ - protected function getControllerPath($vendor, $name, $controllerName) - { - return base_path('modules/'.$vendor.'/'.$name.'/src/Http/Controllers/'.$controllerName.'.php'); - } - - /** - * Build the class with the given name. - * - * @return string - */ - protected function buildControllerFile() - { - $stubFiles = $this->getStub('controller'); - - $stub = $this->files->get($stubFiles); - $this->replaceNamespace($stub); - - return $stub; - } - - /** - * Get the stub file for the generator. - * - * @return string - */ - protected function getStub($stubName) - { - return __DIR__."/stubs/{$stubName}.stub"; - } - - /** - * Replace the namespace for the given stub. - * - * @param string $stub - * @param string $name - * @return $this - */ - protected function replaceNamespace(&$stub) - { - $rootNamespace = App::getNamespace(); - - $module = Module::get($this->getIdentifierInput()); - - $baseNamespace = $module['namespace']; - - $namespace = $baseNamespace."Http\Controllers"; - - $stub = str_replace( - ['DummyClass', 'DummyRootNamespace', 'DummyNamespace'], - [$this->getNameInput(), $rootNamespace, $namespace], - $stub - ); - - return $this; - } - - /** - * Get the desired name of the module from the input. - * - * @return string - */ - protected function getIdentifierInput() - { - return trim($this->argument('identifier')); - } - - /** - * Get the desired name of the module from the input. - * - * @return string - */ - protected function getNameInput() - { - return trim($this->argument('name')); - } - - /** - * Get the console command arguments. - * - * @return array - */ - protected function getArguments() - { - return [ - ['identifier', InputArgument::REQUIRED, 'The identifier for the module'], - ['name', InputArgument::REQUIRED, 'The name of the Controller'], - ]; - } -} \ No newline at end of file diff --git a/src/Module/Console/ModuleInstallCommand.php b/src/Module/Console/ModuleInstallCommand.php deleted file mode 100644 index 70a5d1f9a..000000000 --- a/src/Module/Console/ModuleInstallCommand.php +++ /dev/null @@ -1,92 +0,0 @@ -migrator = $migrator; - } - - /** - * Execute the console command. - * - * @return void - */ - public function handle() - { - $identifier = strtolower($this->getIdentifierInput()); - - /** @var $module \AvoRed\Framework\Module\ModuleItem */ - $module = Module::get($identifier); - $provider = $module->namespace().'Module'; - $this->call('vendor:publish', ['--provider' => $provider]); - $path = $module->basePath().DIRECTORY_SEPARATOR.'database/migrations'; - $this->migrator->run($path); - - $this->info('Module:'.$module->name().' has been installed successfully.'); - } - - /** - * Write the Markdown template for the mailable. - * - * @return void - */ - protected function createRequiredDirectories($path) - { - if (! $this->files->isDirectory(dirname($path))) { - $this->files->makeDirectory(dirname($path), 0755, true); - } - } - - /** - * Get the desired name of the module from the input. - * - * @return string - */ - protected function getIdentifierInput() - { - return trim($this->argument('identifier')); - } -} diff --git a/src/Module/Console/ModuleMakeCommand.php b/src/Module/Console/ModuleMakeCommand.php deleted file mode 100644 index ce26ddca9..000000000 --- a/src/Module/Console/ModuleMakeCommand.php +++ /dev/null @@ -1,191 +0,0 @@ -files = $files; - } - - /** - * Execute the console command. - * - * @return void - */ - public function handle() - { - $vendor = strtolower($this->getVendorInput()); - $name = strtolower($this->getNameInput()); - - $stubFiles = ['register', 'module']; - - foreach ($stubFiles as $stubFile) { - $methodName = 'get'.ucfirst($stubFile).'Path'; - - $path = $this->$methodName($vendor, $name); - $this->createRequiredDirectories($path); - - $buildMethodName = 'build'.ucfirst($stubFile).'File'; - $this->files->put($path, $this->$buildMethodName()); - } - - $this->info($this->type.' created successfully.'); - } - - /** - * Write the Markdown template for the mailable. - * - * @return void - */ - protected function createRequiredDirectories($path) - { - if (! $this->files->isDirectory(dirname($path))) { - $this->files->makeDirectory(dirname($path), 0755, true); - } - } - - protected function getRegisterPath($vendor, $name) - { - return base_path('modules/'.$vendor.'/'.$name.'/register.yml'); - } - - protected function getModulePath($vendor, $name) - { - return base_path('modules/'.$vendor.'/'.$name.'/src/Module.php'); - } - - /** - * Build the class with the given name. - * - * @return string - */ - protected function buildRegisterFile() - { - $stubFiles = $this->getStub('register'); - - $stub = $this->files->get($stubFiles); - $this->replaceNamespace($stub); - - return $stub; - } - - /** - * Build the class with the given name. - * - * @param string $name - * @return string - */ - protected function buildModuleFile() - { - $stubFiles = $this->getStub('module'); - - $stub = $this->files->get($stubFiles); - - $this->replaceNamespace($stub); - - return $stub; - } - - /** - * Get the stub file for the generator. - * - * @return string - */ - protected function getStub($stubName) - { - return __DIR__."/stubs/{$stubName}.stub"; - } - - /** - * Replace the namespace for the given stub. - * - * @param string $stub - * @param string $name - * @return $this - */ - protected function replaceNamespace(&$stub) - { - $stub = str_replace( - ['DummyVendor', 'DummyName', 'DummyLowerVendor', 'DummyLowerName'], - [$this->getVendorInput(), $this->getNameInput(), strtolower($this->getVendorInput()), strtolower($this->getNameInput())], - $stub - ); - - return $this; - } - - /** - * Get the desired name of the module from the input. - * - * @return string - */ - protected function getNameInput() - { - return trim($this->argument('name')); - } - - /** - * Get the desired vendor name from the input. - * - * @return string - */ - protected function getVendorInput() - { - return trim($this->argument('vendor')); - } - - /** - * Get the console command arguments. - * - * @return array - */ - protected function getArguments() - { - return [ - ['vendor', InputArgument::REQUIRED, 'The name of the vendor or company name'], - ['name', InputArgument::REQUIRED, 'The name of the module'], - ]; - } -} \ No newline at end of file diff --git a/src/Module/Console/Provider.php b/src/Module/Console/Provider.php deleted file mode 100644 index 61639cd72..000000000 --- a/src/Module/Console/Provider.php +++ /dev/null @@ -1,94 +0,0 @@ -registerCommands(); - } - - protected function registerCommands() - { - foreach ($this->commandName as $commandName) { - $methodName = 'register'.implode(array_map('ucfirst', explode('.', $commandName))); - $this->$methodName(); - - $this->commands[] = 'command.'.$commandName; - } - - $this->commands($this->commands); - } - - /** - * Register the Avored Module Make . - * - * @return void - */ - protected function registerAvoredModuleMake() - { - $this->app->singleton('command.avored.module.make', function ($app) { - return new ModuleMakeCommand($app['files']); - }); - } - - /** - * Register the Avored Module Install . - * - * @return void - */ - protected function registerAvoredModuleInstall() - { - $this->app->singleton('command.avored.module.install', function ($app) { - return new ModuleInstallCommand($app['migrator']); - }); - } - - /** - * Register Avored Module Controller Make Command. - * - * @return void - */ - protected function registerAvoredControllerMake() - { - $this->app->singleton('command.avored.controller.make', function ($app) { - return new ControllerMakeCommand($app['files']); - }); - } - - /** - * Get the services provided by the provider. - * - * @return array - */ - public function provides() - { - return $this->commands; - } -} \ No newline at end of file diff --git a/src/Module/Console/stubs/controller.stub b/src/Module/Console/stubs/controller.stub deleted file mode 100644 index 0d8263940..000000000 --- a/src/Module/Console/stubs/controller.stub +++ /dev/null @@ -1,11 +0,0 @@ -registerResources(); - } - - /** - * Register any application services. - * - * @return void - */ - public function register() - { - - } - - /** - * Registering DummyVendor DummyName Resource - * e.g. Route, View, Database & Translation Path - * - * @return void - */ - protected function registerResources() - { - //$this->loadRoutesFrom(__DIR__ . '/../routes/web.php'); - //$this->loadTranslationsFrom(__DIR__ . '/../resources/lang', 'DummyLowerVendor-DummyLowerName'); - //$this->loadViewsFrom(__DIR__ . '/../resources/views', 'DummyLowerVendor-DummyLowerName'); - } -} \ No newline at end of file diff --git a/src/Module/Console/stubs/register.stub b/src/Module/Console/stubs/register.stub deleted file mode 100644 index 248c982e5..000000000 --- a/src/Module/Console/stubs/register.stub +++ /dev/null @@ -1,5 +0,0 @@ -name: DummyVendor DummyName -identifier: DummyLowerVendor-DummyLowerName -status: active -description: DummyVendor DummyName Module -namespace: DummyVendor\DummyName\ \ No newline at end of file diff --git a/src/Module/Manager.php b/src/Module/Manager.php deleted file mode 100644 index dbb6bc4ee..000000000 --- a/src/Module/Manager.php +++ /dev/null @@ -1,239 +0,0 @@ -files = $files; - $this->moduleList = Collection::make([]); - } - - /** - * Get all the moduleList Collection. - * @return \Illuminate\Support\Collection $moduleList - */ - public function all() - { - if ($this->moduleLoaded === false) { - $this->loadModules(); - } - - return $this->moduleList; - } - - /** - * Scan Module Path and load into a moduleList Collection. - * @return self $this - */ - protected function loadModules() - { - $modulePath = base_path('modules'); - - if (File::exists($modulePath)) { - /** @var \RecursiveIteratorIterator $iterator */ - $iterator = new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($modulePath, RecursiveDirectoryIterator::FOLLOW_SYMLINKS) - ); - - $iterator->setMaxDepth(2); - $iterator->rewind(); - - while ($iterator->valid()) { - if (($iterator->getDepth() > 1) && - $iterator->isFile() && - ($iterator->getFilename() == 'register.yml')) { - $filePath = $iterator->getPathname(); - $moduleRegisterContent = File::get($filePath); - $data = Yaml::parse($moduleRegisterContent); - - $module = new ModuleItem(); - $module->namespace($data['namespace']); - $module->identifier($data['identifier']); - $module->name($data['name']); - $module->status($data['status']); - $module->description($data['description']); - $module->basePath($iterator->getPath()); - $module->publishedTags($data['published_tags'] ?? []); - - // read and store dependency declaration - $dependencies = empty($data['dependencies']) ? [] : explode(',', str_replace(' ', '', $data['dependencies'])); - $module->dependencies($dependencies); - - $this->moduleList->put($module->identifier(), $module); - } - $iterator->next(); - } - // Sort modules based on its declared dependency - $this->moduleList = $this->sortByDependency($this->moduleList); - - $this->moduleList->each(function ($module) { - $composerLoader = require base_path('vendor/autoload.php'); - if (strtolower($module->status()) == 'active') { - $path = $module->basePath() . DIRECTORY_SEPARATOR . 'src'; - $composerLoader->addPsr4($module->namespace(), $path); - $moduleProvider = $module->namespace() . 'Module'; - App::register($moduleProvider); - - } - }); - - $this->moduleLoaded = true; - } - - return $this; - } - - /** - * Sort module based on their dependency declarations - * @return \Illuminate\Support\Collection - */ - public function sortByDependency(Collection $moduleList) - { - $modules = $moduleList->sort(function ($moduleA, $moduleB) { - if (count($moduleA->dependencies()) === 0 && count($moduleA->dependencies()) === 0) { - return 0; - } - - if (in_array($moduleA->identifier(), $moduleB->dependencies())) { - return -1; - } else { - return 1; - } - }); - return $modules; - } - - /** - * Put Module Info to a collection - * @param string $identifier - * @param array $moduleInfo - * @return self $this - */ - public function put($identifier, $moduleInfo) - { - $this->moduleList->put($identifier, $moduleInfo); - - return $this; - } - - /** - * Get Module by identifier. - * @param string $identifier - * @return \AvoRed\Framework\Modules\Module $module - */ - public function get($identifier) - { - if ($this->moduleLoaded === false) { - $this->loadModules(); - } - - return $this->moduleList->get($identifier); - } - - /** - * Get Module by Path. - * @param string $path - * @return \AvoRed\Framework\Modules\Module $module - */ - public function getByPath($path) - { - foreach ($this->moduleList as $module => $moduleInfo) { - $path1 = $this->pathSlashFix($path); - $path2 = $this->pathSlashFix($moduleInfo['path']); - - if ($path1 == $path2) { - $actualModule = $this->moduleList[$module]; - break; - } - } - - return $actualModule; - } - - /** - * Publish an item to given path from passed path. - * @param string $from - * @param string $to - * @return mixed - */ - public function publishItem($from, $to) - { - if ($this->files->isDirectory($from)) { - $this->publishDirectory($from, $to); - } - - throw new \Exception("Can't locate path: <{$from}>"); - } - - /** - * Publish the directory to the given directory. - * @param string $from - * @param string $to - * @return void - */ - protected function publishDirectory($from, $to) - { - $this->moveManagedFiles(new MountManager([ - 'from' => new Flysystem(new LocalAdapter($from)), - 'to' => new Flysystem(new LocalAdapter($to)), - ])); - } - - /** - * Move all the files in the given MountManager. - * @param \League\Flysystem\MountManager $manager - * @return void - */ - protected function moveManagedFiles($manager) - { - foreach ($manager->listContents('from://', true) as $file) { - if ($file['type'] === 'file' && (! $manager->has('to://'.$file['path']))) { - $manager->put('to://'.$file['path'], $manager->read('from://'.$file['path'])); - } - } - } - - /** - * Slash the given path. - * @param string $path - * @return string $slashPath - */ - protected function pathSlashFix($path) - { - return (DIRECTORY_SEPARATOR === '\\') ? str_replace('/', '\\', $path) : str_replace('\\', '/', $path); - } -} diff --git a/src/Module/Module.php b/src/Module/Module.php deleted file mode 100644 index d3dc9d3e2..000000000 --- a/src/Module/Module.php +++ /dev/null @@ -1,21 +0,0 @@ -identifier; - } - - $this->identifier = $identifier; - - return $this; - } - - /** - * Get/Set the Name for the Module. - * @param string $name - * @return string|self - */ - public function name($name = null) - { - if (null === $name) { - return $this->name; - } - - $this->name = $name; - - return $this; - } - - /** - * Get/Set the Description for the Module. - * @param string $description - * @return string|self - */ - public function description($description = null) - { - if (null === $description) { - return $this->description; - } - - $this->description = $description; - - return $this; - } - - /** - * Get/Set the Status for the Module. - * @param string $identifier - * @return string|self - */ - public function status($status = null) - { - if (null === $status) { - return $this->status; - } - - $this->status = $status; - - return $this; - } - - /** - * Get/Set the NameSpace for the Module. - * @param string $namespace - * @return string|self - */ - public function namespace($namespace = null) - { - if (null === $namespace) { - return $this->namespace; - } - - $this->namespace = $namespace; - - return $this; - } - - /** - * Get/Set the BasePath for the Module. - * @param string $basePath - * @return string|self - */ - public function basePath($basePath = null) - { - if (null === $basePath) { - return $this->basePath; - } - - $this->basePath = $basePath; - - return $this; - } - - /** - * Get/Set the Published Tags for the Module. - * @param array $publishedTags - * @return string|self - */ - public function publishedTags($publishedTags = []) - { - if (count($publishedTags) <= 0) { - return $this->publishedTags; - } - - $this->publishedTags = $publishedTags; - - return $this; - } - - /** - * Get/Set the Dependencies for the Module - * @param array $dependencies - * @return string|self - */ - public function dependencies($dependencies = []) - { - if (count($dependencies) <= 0) { - return $this->dependencies; - } - - $this->dependencies = $dependencies; - return $this; - } - - /** - * To check If method Exist then it will execute other wise do nothing - * - * @param string $name - * @return mixed - */ - public function __get($name) - { - if (method_exists($this, $name)) { - return $this->$name(); - } - } -} \ No newline at end of file diff --git a/src/Module/ModuleProvider.php b/src/Module/ModuleProvider.php deleted file mode 100644 index 10b6c10de..000000000 --- a/src/Module/ModuleProvider.php +++ /dev/null @@ -1,70 +0,0 @@ -registerModuleConsoleProvider(); - $this->registerModule(); - $this->app->alias('module', Manager::class); - } - - /** - * Register the AdmainConfiguration instance. - * - * @return void - */ - protected function registerModule() - { - $this->app->singleton( - 'module', - function ($app) { - return new Manager($app['files']); - } - ); - } - - /* - * Register Module console Command which Register most Module generation Command - * - * @return void - */ - public function registerModuleConsoleProvider() - { - $this->app->register(Provider::class); - } - - /** - * Get the services provided by the provider. - * - * @return array - */ - public function provides() - { - return ['module', Manager::class]; - } -} \ No newline at end of file diff --git a/src/Order/Controllers/OrderController.php b/src/Order/Controllers/OrderController.php deleted file mode 100644 index 00a7366fd..000000000 --- a/src/Order/Controllers/OrderController.php +++ /dev/null @@ -1,37 +0,0 @@ -orderRepository = $repository; - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index() - { - $orderes = $this->orderRepository->paginate(); - - return view('avored::order.order.index') - ->with('orders', $orderes); - } -} diff --git a/src/Order/Controllers/OrderStatusController.php b/src/Order/Controllers/OrderStatusController.php deleted file mode 100644 index e83376795..000000000 --- a/src/Order/Controllers/OrderStatusController.php +++ /dev/null @@ -1,118 +0,0 @@ -orderStatusRepository = $repository; - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index() - { - $orderStatuses = $this->orderStatusRepository->paginate(); - - return view('avored::order.order-status.index') - ->with('orderStatuses', $orderStatuses); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - $tabs = Tab::get('order.order-status'); - - return view('avored::order.order-status.create') - ->with('tabs', $tabs); - } - - /** - * Store a newly created resource in storage. - * - * @param OrderStatusRequest $request - * @return \Illuminate\Http\Response - */ - public function store(OrderStatusRequest $request) - { - if ($request->has('is_default')) { - $this->orderStatusRepository->updateDefaultOrderStatusToNull(); - } - $this->orderStatusRepository->create($request->all()); - - return redirect(route('admin.order-status.index')); - } - - /** - * Show the form for editing the specified resource. - * - * @param OrderStatus $orderStatus - * @return \Illuminate\Http\Response - */ - public function edit(OrderStatus $orderStatus) - { - $tabs = Tab::get('order.order-status'); - - return view('avored::order.order-status.edit') - ->with('orderStatus', $orderStatus) - ->with('tabs', $tabs); - } - - /** - * Update the specified resource in storage. - * - * @param OrderStatusRequest $request - * @param OrderStatus $orderStatus - * @return \Illuminate\Http\Response - */ - public function update(OrderStatusRequest $request, OrderStatus $orderStatus) - { - if ($request->has('is_default')) { - $this->orderStatusRepository->updateDefaultOrderStatusToNull(); - } - $orderStatus->update($request->all()); - - return redirect(route('admin.order-status.index')); - } - - /** - * Remove the specified resource from storage. - * - * @param OrderStatus $orderStatus - * @return \Illuminate\Http\Response - */ - public function destroy(OrderStatus $orderStatus) - { - $orderStatus->delete(); - - return new JsonResponse([ - 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.order-status')]) - ]); - } -} diff --git a/src/Order/Events/OrderProductCreated.php b/src/Order/Events/OrderProductCreated.php deleted file mode 100644 index bf3a3b009..000000000 --- a/src/Order/Events/OrderProductCreated.php +++ /dev/null @@ -1,26 +0,0 @@ -orderProduct = $orderProduct; - } -} \ No newline at end of file diff --git a/src/Order/Listeners/OrderProductCreatedListener.php b/src/Order/Listeners/OrderProductCreatedListener.php deleted file mode 100644 index 7a8561746..000000000 --- a/src/Order/Listeners/OrderProductCreatedListener.php +++ /dev/null @@ -1,28 +0,0 @@ -orderProduct; - $product = $orderProduct->product; - - if ($product->track_stock) { - $product->qty -= $orderProduct->qty; - } - $product->save(); - } -} \ No newline at end of file diff --git a/src/Order/Requests/OrderStatusRequest.php b/src/Order/Requests/OrderStatusRequest.php deleted file mode 100644 index 58c1b7e12..000000000 --- a/src/Order/Requests/OrderStatusRequest.php +++ /dev/null @@ -1,31 +0,0 @@ -collection = Collection::make([]); - } - - /** - * Get all the Payment Options Collection. - * @return \Illuminate\Support\Collection - */ - public function all(): Collection - { - return $this->collection; - } - - /** - * Put Payment class to an collection Collection. - * @return void - */ - public function put($payment) - { - $this->collection->put($payment->identifier(), $payment); - } - - /** - * Put Payment class to an collection Collection. - * @return void - */ - public function get($identifier) - { - return $this->collection->get($identifier); - } -} diff --git a/src/Payment/PaymentProvider.php b/src/Payment/PaymentProvider.php deleted file mode 100644 index f315a3f5e..000000000 --- a/src/Payment/PaymentProvider.php +++ /dev/null @@ -1,36 +0,0 @@ -registerPayment(); - } - - /** - * Register the service provider. - * @return void - */ - public function register() - { - $this->app->singleton('payment', PaymentManager::class); - } - - /** - * Get the services provided by the provider. - * @return array - */ - public function provides() - { - return ['payment', PaymentManager::class]; - } -} diff --git a/src/Permission/Manager.php b/src/Permission/Manager.php deleted file mode 100644 index 81bc15a88..000000000 --- a/src/Permission/Manager.php +++ /dev/null @@ -1,77 +0,0 @@ -permissions = Collection::make([]); - } - - /** - * Get all Permission Collection. - * @return \Illuminate\Support\Collection - */ - public function all() - { - return $this->permissions; - } - - /** - * Add Permission into Collection. - * @param string $key - * @param callable $callable - * @return \AvoRed\Framework\Permission\Manager - */ - public function add($key, $callable = null) - { - if (null !== $callable) { - $group = new PermissionGroup($callable); - $group->key($key); - - $this->permissions->put($key, $group); - } else { - $group = new PermissionGroup(); - - $group->key($key); - $this->permissions->put($key, $group); - } - - return $group; - } - - /** - * Get Permission Collection if exists or Return Empty Collection. - * @param array $item - * @return \Illuminate\Support\Collection - */ - public function get($key) - { - if ($this->permissions->has($key)) { - return $this->permissions->get($key); - } - - return Collection::make([]); - } - - /** - * Get Permission Collection if exists or Return Empty Collection. - * @param array $item - * @return \Illuminate\Support\Collection - */ - public function set($key, $permissionCollection) - { - $this->permissions->put($key, $permissionCollection); - - return $this; - } -} \ No newline at end of file diff --git a/src/Permission/Permission.php b/src/Permission/Permission.php deleted file mode 100644 index ef2673917..000000000 --- a/src/Permission/Permission.php +++ /dev/null @@ -1,18 +0,0 @@ -permissionList = Collection::make([]); - if (null !== $callable) { - $callable($this); - } - } - - /** - * Specify a label for permission group. - * - * @param string $label - * @return mixed $this|$label - */ - public function label($label = null) - { - if (null !== $label) { - $this->label = $label; - - return $this; - } - - if (Lang::has($this->label)) { - return __($this->label); - } - - return $this->label; - } - - /** - * Add an Unique key to a group of permission. - * @param string $key - * @return mixed $key|$this - */ - public function key($key = null) - { - if (null !== $key) { - $this->key = $key; - - return $this; - } - - return $this->key; - } - - /** - * Add Permission to a group. - * @param string $key - * @param callable $callable - * @return \AvoRed\Framework\Permission\Permission $permission - */ - public function addPermission($key, $callable = null) - { - if (null !== $callable) { - $permission = new PermissionItem($callable); - $permission->key($key); - - $this->permissionList->put($key, $permission); - } else { - $permission = new PermissionItem(); - - $permission->key($key); - $this->permissionList->put($key, $permission); - } - - return $permission; - } -} \ No newline at end of file diff --git a/src/Permission/PermissionInterface.php b/src/Permission/PermissionInterface.php deleted file mode 100644 index f4f4f6475..000000000 --- a/src/Permission/PermissionInterface.php +++ /dev/null @@ -1,27 +0,0 @@ -label = $label; - - return $this; - } - - if (Lang::has($this->label)) { - return __($this->label); - } - - return $this->label; - } - - /** - * Set/Get key for permission. - * @param string $key - * @return mixed $key|$this - */ - public function key($key = null) - { - if (null !== $key) { - $this->key = $key; - - return $this; - } - - return $this->key; - } - - /** - * Set/Get routes for permission. - * @param string $routes - * @return mixed $routes|$this - */ - public function routes($routes = null) - { - if (null !== $routes) { - $this->routes = $routes; - - return $this; - } - - return $this->routes; - } -} \ No newline at end of file diff --git a/src/Permission/PermissionProvider.php b/src/Permission/PermissionProvider.php deleted file mode 100644 index cab6a6063..000000000 --- a/src/Permission/PermissionProvider.php +++ /dev/null @@ -1,689 +0,0 @@ -registerPermissions(); - } - - /** - * Register the service provider. - * @return void - */ - public function register() - { - $this->registerManager(); - $this->app->singleton('permission', 'AvoRed\Framework\Permission\Manager'); - } - - /** - * Register the permission Manager Instance. - * @return void - */ - protected function registerManager() - { - $this->app->singleton( - 'permission', - function () { - new Manager(); - } - ); - } - - /** - * Get the services provided by the provider. - * @return array - */ - public function provides() - { - return ['permission', 'AvoRed\Framework\Permission\Manager']; - } - - /** - * Register the permissions. - * @return void - */ - protected function registerPermissions() - { - $group = Permission::add( - 'dashboard', - function (PermissionGroup $group) { - $group->label('avored::system.dashboard'); - } - ); - $group->addPermission( - 'admin-dashboard', - function (PermissionItem $permission) { - $permission->label('avored::system.dashboard') - ->routes('admin.dashboard'); - } - ); - - // $configGroup = Permission::add( - // 'configuration', - // function (PermissionGroup $group) { - // $group->label('avored::system.permissions.configuration.title'); - // } - // ); - - // $configGroup->addPermission( - // 'admin-configuration-index', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.configuration.view') - // ->routes('admin.configuration.index'); - // } - // ); - // $configGroup->addPermission( - // 'admin-configuration-save', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.configuration.edit') - // ->routes('admin.configuration.store'); - // } - // ); - - $productGroup = Permission::add( - 'product', - function (PermissionGroup $group) { - $group->label('avored::system.product'); - } - ); - - $productGroup->addPermission( - 'admin-product-index', - function (PermissionItem $permission) { - $permission->label('avored::system.list') - ->routes('admin.product.index'); - } - ); - $productGroup->addPermission( - 'admin-product-create', - function (PermissionItem $permission) { - $permission->label('avored::system.create') - ->routes('admin.product.create,admin.product.store'); - } - ); - $productGroup->addPermission( - 'admin-product-edit', - function (PermissionItem $permission) { - $permission->label('avored::system.edit') - ->routes('admin.product.edit,admin.product.update'); - } - ); - $productGroup->addPermission( - 'admin-product-destroy', - function (PermissionItem $permission) { - $permission->label('avored::system.destroy') - ->routes('admin.product.edit,admin.product.destroy'); - } - ); - - $orderGroup = Permission::add( - 'order', - function (PermissionGroup $group) { - $group->label('avored::system.order'); - } - ); - $orderGroup->addPermission( - 'admin-order-list', - function (PermissionItem $permission) { - $permission->label('avored::system.list') - ->routes('admin.order.index'); - } - ); - // $orderGroup->addPermission( - // 'admin-order-change-status', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.order.change-status') - // ->routes('admin.order.change-status'); - // } - // ); - // $orderGroup->addPermission( - // 'admin-order-sent-invoice-by-mail', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.order.sent-invoice-by-mail') - // ->routes('admin.order.email.invoice'); - // } - // ); - // $orderGroup->addPermission( - // 'admin-order-shipping-label', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.order.shipping-label') - // ->routes('admin.order.shipping.label'); - // } - // ); - // $orderGroup->addPermission( - // 'admin-download-invoice', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.order.download-invoice') - // ->routes('admin.order.download.invoice'); - // } - // ); - // $orderGroup->addPermission( - // 'admin-save=tracking-code', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.order.save-tracking-code') - // ->routes('admin.order.save.track.code'); - // } - // ); - // $orderGroup->addPermission( - // 'admin-order-view', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.order.view') - // ->routes('admin.order.create,admin.order.view'); - // } - // ); - - $group = Permission::add( - 'category', - function (PermissionGroup $group) { - $group->label('avored::system.category'); - } - ); - $group->addPermission( - 'admin-category-list', - function (PermissionItem $permission) { - $permission->label('avored::system.list') - ->routes('admin.category.index'); - } - ); - $group->addPermission( - 'admin-category-create', - function (PermissionItem $permission) { - $permission->label('avored::system.create') - ->routes('admin.category.create,admin.category.store'); - } - ); - $group->addPermission( - 'admin-category-update', - function (PermissionItem $permission) { - $permission->label('avored::system.edit') - ->routes('admin.category.edit,admin.category.update'); - } - ); - $group->addPermission( - 'admin-category-destroy', - function (PermissionItem $permission) { - $permission->label('avored::system.destroy') - ->routes('admin.category.destroy'); - } - ); - - // $group = Permission::add( - // 'language', - // function (PermissionGroup $group) { - // $group->label('avored::system.permissions.language.title'); - // } - // ); - // $group->addPermission( - // 'admin-language-list', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.language.list') - // ->routes('admin.language.index'); - // } - // ); - // $group->addPermission( - // 'admin-language-create', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.language.create') - // ->routes('admin.language.create,admin.language.store'); - // } - // ); - // $group->addPermission( - // 'admin-language-update', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.language.edit') - // ->routes('admin.language.edit,admin.language.update'); - // } - // ); - // $group->addPermission( - // 'admin-language-destroy', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.language.destroy') - // ->routes('admin.language.destroy'); - // } - // ); - $group = Permission::add( - 'admin-user', - function (PermissionGroup $group) { - $group->label('avored::system.staff'); - } - ); - $group->addPermission( - 'admin-admin-user-list', - function (PermissionItem $permission) { - $permission->label('avored::system.list') - ->routes('admin.admin-user.index'); - } - ); - $group->addPermission( - 'admin-admin-user-create', - function (PermissionItem $permission) { - $permission->label('avored::system.create') - ->routes('admin.admin-user.create,admin.admin-user.store'); - } - ); - $group->addPermission( - 'admin-admin-user-update', - function (PermissionItem $permission) { - $permission->label('avored::system.edit') - ->routes('admin.admin-user.edit,admin.admin-user.update'); - } - ); - $group->addPermission( - 'admin-admin-user-destroy', - function (PermissionItem $permission) { - $permission->label('avored::system.destroy') - ->routes('admin.admin-user.destroy'); - } - ); - - $group = Permission::add( - 'subscriber', - function (PermissionGroup $group) { - $group->label('avored::system.subscriber'); - } - ); - $group->addPermission( - 'admin-subscriber-list', - function (PermissionItem $permission) { - $permission->label('avored::system.list') - ->routes('admin.subscriber.index'); - } - ); - $group->addPermission( - 'admin-subscriber-create', - function (PermissionItem $permission) { - $permission->label('avored::system.create') - ->routes('admin.subscriber.create,admin.subscriber.store'); - } - ); - $group->addPermission( - 'admin-subscriber-update', - function (PermissionItem $permission) { - $permission->label('avored::system.edit') - ->routes('admin.subscriber.edit,admin.subscriber.update'); - } - ); - $group->addPermission( - 'admin-subscriber-destroy', - function (PermissionItem $permission) { - $permission->label('avored::system.destroy') - ->routes('admin.subscriber.destroy'); - } - ); - // $group = Permission::add( - // 'currency', - // function (PermissionGroup $group) { - // $group->label('avored::system.permissions.currency.title'); - // } - // ); - // $group->addPermission( - // 'admin-currency-list', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.currency.list') - // ->routes('admin.currency.index'); - // } - // ); - // $group->addPermission( - // 'admin-currency-create', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.currency.create') - // ->routes('admin.currency.create,admin.currency.store'); - // } - // ); - // $group->addPermission( - // 'admin-currency-update', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.currency.edit') - // ->routes('admin.currency.edit,admin.currency.update'); - // } - // ); - // $group->addPermission( - // 'admin-currency-destroy', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.currency.destroy') - // ->routes('admin.currency.destroy'); - // } - // ); - $group = Permission::add( - 'order-status', - function (PermissionGroup $group) { - $group->label('avored::system.order-status'); - } - ); - $group->addPermission( - 'admin-order-status-list', - function (PermissionItem $permission) { - $permission->label('avored::system.list') - ->routes('admin.order-status.index'); - } - ); - $group->addPermission( - 'admin-order-status-create', - function (PermissionItem $permission) { - $permission->label('avored::system.create') - ->routes('admin.order-status.create,admin.order-status.store'); - } - ); - $group->addPermission( - 'admin-order-status-update', - function (PermissionItem $permission) { - $permission->label('avored::system.edit') - ->routes('admin.order-status.edit,admin.order-status.update'); - } - ); - $group->addPermission( - 'admin-order-status-destroy', - function (PermissionItem $permission) { - $permission->label('avored::system.destroy') - ->routes('admin.order-status.destroy'); - } - ); - - $group = Permission::add( - 'page', - function (PermissionGroup $group) { - $group->label('avored::system.page'); - } - ); - $group->addPermission( - 'admin-page-list', - function (PermissionItem $permission) { - $permission->label('avored::system.list') - ->routes('admin.page.index'); - } - ); - $group->addPermission( - 'admin-page-create', - function (PermissionItem $permission) { - $permission->label('avored::system.create') - ->routes('admin.page.create,admin.page.store'); - } - ); - $group->addPermission( - 'admin-page-update', - function (PermissionItem $permission) { - $permission->label('avored::system.edit') - ->routes('admin.page.edit,admin.page.update'); - } - ); - $group->addPermission( - 'admin-page-destroy', - function (PermissionItem $permission) { - $permission->label('avored::system.destroy') - ->routes('admin.page.destroy'); - } - ); - - $group = Permission::add( - 'role', - function (PermissionGroup $group) { - $group->label('avored::system.role'); - } - ); - - $group->addPermission( - 'admin-role-list', - function (PermissionItem $permission) { - $permission->label('avored::system.list') - ->routes('admin.role.index'); - } - ); - $group->addPermission( - 'admin-role-create', - function (PermissionItem $permission) { - $permission->label('avored::system.create') - ->routes('admin.role.create,admin.role.store'); - } - ); - $group->addPermission( - 'admin-role-update', - function (PermissionItem $permission) { - $permission->label('avored::system.edit') - ->routes('admin.role.edit,admin.role.update'); - } - ); - $group->addPermission( - 'admin-role-destroy', - function (PermissionItem $permission) { - $permission->label('avored::system.destroy') - ->routes('admin.role.destroy'); - } - ); - - // $group = Permission::add( - // 'state', - // function (PermissionGroup $group) { - // $group->label('avored::system.permissions.state.title'); - // } - // ); - - // $group->addPermission( - // 'admin-state-list', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.state.list') - // ->routes('admin.state.index'); - // } - // ); - // $group->addPermission( - // 'admin-state-create', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.state.create') - // ->routes('admin.state.create,admin.state.store'); - // } - // ); - // $group->addPermission( - // 'admin-state-update', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.state.edit') - // ->routes('admin.state.edit,admin.state.update'); - // } - // ); - // $group->addPermission( - // 'admin-state-destroy', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.state.destroy') - // ->routes('admin.state.destroy'); - // } - // ); - - $group = Permission::add( - 'property', - function (PermissionGroup $group) { - $group->label('avored::system.property'); - } - ); - - $group->addPermission( - 'admin-property-list', - function (PermissionItem $permission) { - $permission->label('avored::system.list') - ->routes('admin.property.index'); - } - ); - $group->addPermission( - 'admin-property-create', - function (PermissionItem $permission) { - $permission->label('avored::system.create') - ->routes('admin.property.create,admin.property.store'); - } - ); - $group->addPermission( - 'admin-property-update', - function (PermissionItem $permission) { - $permission->label('avored::system.edit') - ->routes('admin.property.edit,admin.property.update'); - } - ); - $group->addPermission( - 'admin-property-destroy', - function (PermissionItem $permission) { - $permission->label('avored::system.destroy') - ->routes('admin.property.destroy'); - } - ); - - $group = Permission::add( - 'attribute', - function (PermissionGroup $group) { - $group->label('avored::system.attribute'); - } - ); - - $group->addPermission( - 'admin-attribute-list', - function (PermissionItem $permission) { - $permission->label('avored::system.list') - ->routes('admin.attribute.index'); - } - ); - $group->addPermission( - 'admin-attribute-create', - function (PermissionItem $permission) { - $permission->label('avored::system.create') - ->routes('admin.attribute.create,admin.attribute.store'); - } - ); - $group->addPermission( - 'admin-attribute-update', - function (PermissionItem $permission) { - $permission->label('avored::system.edit') - ->routes('admin.attribute.edit,admin.attribute.update'); - } - ); - $group->addPermission( - 'admin-attribute-destroy', - function (PermissionItem $permission) { - $permission->label('avored::system.destroy') - ->routes('admin.attribute.destroy'); - } - ); - // $group = Permission::add( - // 'user-group', - // function (PermissionGroup $group) { - // $group->label('avored::system.permissions.user-group.title'); - // } - // ); - - // $group->addPermission( - // 'admin-user-group-list', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.user-group.list') - // ->routes('admin.user-group.index'); - // } - // ); - // $group->addPermission( - // 'admin-user-group-create', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.user-group.create') - // ->routes('admin.user-group.create,admin.user-group.store'); - // } - // ); - // $group->addPermission( - // 'admin-user-group-update', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.user-group.edit') - // ->routes('admin.user-group.edit,admin.user-group.update'); - // } - // ); - // $group->addPermission( - // 'admin-user-group-destroy', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.user-group.destroy') - // ->routes('admin.user-group.destroy'); - // } - // ); - // $group = Permission::add( - // 'tax-group', - // function (PermissionGroup $group) { - // $group->label('avored::system.permissions.tax-group.title'); - // } - // ); - - // $group->addPermission( - // 'admin-tax-group-list', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.tax-group.list') - // ->routes('admin.tax-group.index'); - // } - // ); - // $group->addPermission( - // 'admin-tax-group-create', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.tax-group.create') - // ->routes('admin.tax-group.create,admin.tax-group.store'); - // } - // ); - // $group->addPermission( - // 'admin-tax-group-update', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.tax-group.edit') - // ->routes('admin.tax-group.edit,admin.tax-group.update'); - // } - // ); - // $group->addPermission( - // 'admin-tax-group-destroy', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.tax-group.destroy') - // ->routes('admin.user-group.destroy'); - // } - // ); - // $group = Permission::add( - // 'permission-code', - // function (PermissionGroup $group) { - // $group->label('avored::system.permissions.promotion-code.title'); - // } - // ); - - // $group->addPermission( - // 'admin-promotion-code-table', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.promotion-code.table') - // ->routes('admin.promotion.code.table'); - // } - // ); - // $group->addPermission( - // 'admin-promotion-code-edit', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.promotion-code.edit') - // ->routes('admin.promotion.code.edit,admin.promotion.code.save'); - // } - // ); - // $group->addPermission( - // 'admin-promotion-code-destroy', - // function (PermissionItem $permission) { - // $permission->label('avored::system.permissions.promotion-code.destroy') - // ->routes('admin.promotion.code.destroy'); - // } - // ); - - - Blade::if( - 'hasPermission', - function ($routeName) { - $condition = false; - /** @var \AvoRed\Framework\Database\Models\AdminUser $user */ - $user = Auth::guard('admin')->user(); - if (! $user) { - $condition = $user->hasPermission($routeName) ?: false; - } - $converted_res = ($condition) ? 'true' : 'false'; - - return ""; - } - ); - } -} diff --git a/src/Shipping/Manager.php b/src/Shipping/Manager.php deleted file mode 100644 index 9ae656546..000000000 --- a/src/Shipping/Manager.php +++ /dev/null @@ -1,40 +0,0 @@ -collection = Collection::make([]); - } - - /** - * Get all the Shipping Options Collection. - * @return \Illuminate\Support\Collection - */ - public function all(): Collection - { - return $this->collection; - } - - /** - * Put Shipping class to an collection Collection. - * @return void - */ - public function put($shipping) - { - $this->collection->push($shipping); - } -} diff --git a/src/Shipping/Shipping.php b/src/Shipping/Shipping.php deleted file mode 100644 index 8efb1623b..000000000 --- a/src/Shipping/Shipping.php +++ /dev/null @@ -1,16 +0,0 @@ -registerShipping(); - } - - /** - * Register the service provider. - * @return void - */ - public function register() - { - $this->app->singleton('shipping', 'AvoRed\Framework\Shipping\Manager'); - } - - /** - * Get the services provided by the provider. - * @return array - */ - public function provides() - { - return ['shipping', 'AvoRed\Framework\Shipping\Manager']; - } -} diff --git a/src/Support/Middleware/AdminAuth.php b/src/Support/Middleware/AdminAuth.php deleted file mode 100644 index 76a04469e..000000000 --- a/src/Support/Middleware/AdminAuth.php +++ /dev/null @@ -1,21 +0,0 @@ -expectsJson()) { - return route('admin.login'); - } - } -} diff --git a/src/Support/Middleware/Permission.php b/src/Support/Middleware/Permission.php deleted file mode 100644 index 52b87c0ff..000000000 --- a/src/Support/Middleware/Permission.php +++ /dev/null @@ -1,29 +0,0 @@ -user(); - $routeName = Route::currentRouteName(); - if ($user->hasPermission($routeName)) { - return $next($request); - } - - abort(403); - } -} \ No newline at end of file diff --git a/src/Support/Middleware/RedirectIfAdminAuth.php b/src/Support/Middleware/RedirectIfAdminAuth.php deleted file mode 100644 index 6fc139d3d..000000000 --- a/src/Support/Middleware/RedirectIfAdminAuth.php +++ /dev/null @@ -1,26 +0,0 @@ -check()) { - return redirect()->route('admin.dashboard'); - } - - return $next($request); - } -} diff --git a/src/Support/Providers/ComponentsProvider.php b/src/Support/Providers/ComponentsProvider.php deleted file mode 100644 index 1a78b6ab1..000000000 --- a/src/Support/Providers/ComponentsProvider.php +++ /dev/null @@ -1,43 +0,0 @@ -registerBlades(); - } - - public function registerBlades() - { - Blade::componentNamespace('AvoRed\\Framework\\System\\Components', 'avored'); - // Blade::component('avored-input', Input::class); - // Blade::component('avored-checkbox', Checkbox::class); - // Blade::component('avored-form', Form::class); - // Blade::component('avored-alert', Alert::class); - // Blade::component('avored-link', Link::class); - // Blade::component('avored-layout-app', Layout::class); - // Blade::component('avored-table', Table::class); - // Blade::component('avored-table-header', TableHeader::class); - // Blade::component('avored-table-row', TableRow::class); - // Blade::component('avored-table-cell', TableCell::class); - - - // Livewire::component('avored-data-table', CategoryTableComponent::class); - } -} diff --git a/src/Support/Providers/EventsProvider.php b/src/Support/Providers/EventsProvider.php deleted file mode 100644 index 342720572..000000000 --- a/src/Support/Providers/EventsProvider.php +++ /dev/null @@ -1,31 +0,0 @@ - [ - OrderProductCreatedListener::class, - ], - ]; - - /** - * Register any events for your application. - * - * @return void - */ - public function boot() - { - parent::boot(); - // $this->registerUserModelObserver(); - } -} diff --git a/src/Support/Providers/GraphqlProvider.php b/src/Support/Providers/GraphqlProvider.php deleted file mode 100644 index 6f8f59aa7..000000000 --- a/src/Support/Providers/GraphqlProvider.php +++ /dev/null @@ -1,50 +0,0 @@ -registerConfigData(); - $this->registerRebingLaravelGraphQlProvider(); - } - - /** - * Bind The Eloquent Model with their contract. - * - * @return void - */ - protected function registerRebingLaravelGraphQlProvider() - { - App::register(GraphQLServiceProvider::class); - } - - - /** - * Register config data for AvoRed E commerce Framework - * @return void - */ - public function registerConfigData() - { - $avoredConfigData = include __DIR__ . '/../../../config/avored.php'; - $this->app['config']->set('graphql', $avoredConfigData['graphql']); - } -} diff --git a/src/Support/Providers/ModelsProvider.php b/src/Support/Providers/ModelsProvider.php deleted file mode 100644 index 635b4db21..000000000 --- a/src/Support/Providers/ModelsProvider.php +++ /dev/null @@ -1,94 +0,0 @@ - AddressRepository::class, - AdminUserModelInterface::class => AdminUserRepository::class, - AttributeModelInterface::class => AttributeRepository::class, - CategoryModelInterface::class => CategoryRepository::class, - ConfigurationModelInterface::class => ConfigurationRepository::class, - CartProductModelInterface::class => CartProductRepository::class, - CustomerModelInterface::class => CustomerRepository::class, - DocumentModelInterface::class => DocumentRepository::class, - OrderModelInterface::class => OrderRepository::class, - OrderProductModelInterface::class => OrderProductRepository::class, - OrderStatusModelInterface::class => OrderStatusRepository::class, - PageModelInterface::class => PageRepository::class, - ProductModelInterface::class => ProductRepository::class, - PropertyModelInterface::class => PropertyRepository::class, - PermissionModelInterface::class => PermissionRepository::class, - RoleModelInterface::class => RoleRepository::class, - SubscriberModelInterface::class => SubscriberRepository::class, - ]; - - /** - * Register the service provider. - * - * @return void - */ - public function register() - { - $this->registerModelContracts(); - } - - /** - * Bind The Eloquent Model with their contract. - * - * @return void - */ - protected function registerModelContracts() - { - foreach ($this->models as $interface => $repository) { - $this->app->bind($interface, $repository); - } - } -} diff --git a/src/System/Components/Alert.php b/src/System/Components/Alert.php deleted file mode 100644 index ae80bb547..000000000 --- a/src/System/Components/Alert.php +++ /dev/null @@ -1,47 +0,0 @@ -message = $message; - $this->type = $type; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View - */ - public function render(): View - { - return view('avored::system.components.form.alert'); - } -} diff --git a/src/System/Components/Form/Checkbox.php b/src/System/Components/Form/Checkbox.php deleted file mode 100644 index 4b4feb175..000000000 --- a/src/System/Components/Form/Checkbox.php +++ /dev/null @@ -1,66 +0,0 @@ -name = $name; - $this->checkedValue = $checkedValue; - $this->label = $label; - $this->class = $class; - $this->value = $value; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.form.checkbox'); - } -} diff --git a/src/System/Components/Form/Easymde.php b/src/System/Components/Form/Easymde.php deleted file mode 100644 index 8eabe5567..000000000 --- a/src/System/Components/Form/Easymde.php +++ /dev/null @@ -1,59 +0,0 @@ -name = $name; - $this->label = $label; - $this->class = $class; - $this->value = $value; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.form.easymde'); - } -} diff --git a/src/System/Components/Form/Form.php b/src/System/Components/Form/Form.php deleted file mode 100644 index d5e40cf1c..000000000 --- a/src/System/Components/Form/Form.php +++ /dev/null @@ -1,55 +0,0 @@ -method = $method; - $this->action = $action; - $this->file = $file; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.form.form'); - } -} diff --git a/src/System/Components/Form/Input.php b/src/System/Components/Form/Input.php deleted file mode 100644 index 5ac3a41a4..000000000 --- a/src/System/Components/Form/Input.php +++ /dev/null @@ -1,67 +0,0 @@ -name = $name; - $this->type = $type; - $this->label = $label; - $this->class = $class; - $this->value = $value; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.form.input'); - } -} diff --git a/src/System/Components/Form/Select.php b/src/System/Components/Form/Select.php deleted file mode 100644 index 4f4d21ad9..000000000 --- a/src/System/Components/Form/Select.php +++ /dev/null @@ -1,59 +0,0 @@ -name = $name; - $this->label = $label; - $this->class = $class; - $this->value = $value; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.form.select'); - } -} diff --git a/src/System/Components/Form/Select2.php b/src/System/Components/Form/Select2.php deleted file mode 100644 index ed0cd298a..000000000 --- a/src/System/Components/Form/Select2.php +++ /dev/null @@ -1,59 +0,0 @@ -name = $name; - $this->label = $label; - $this->class = $class; - $this->value = $value; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.form.select2'); - } -} diff --git a/src/System/Components/Form/Toggle.php b/src/System/Components/Form/Toggle.php deleted file mode 100644 index 631126040..000000000 --- a/src/System/Components/Form/Toggle.php +++ /dev/null @@ -1,73 +0,0 @@ -name = $name; - $this->checkedValue = $checkedValue; - $this->unCheckedValue = $unCheckedValue; - $this->label = $label; - $this->class = $class; - $this->value = $value; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.form.toggle'); - } -} diff --git a/src/System/Components/Form/Upload.php b/src/System/Components/Form/Upload.php deleted file mode 100644 index 49dbeee40..000000000 --- a/src/System/Components/Form/Upload.php +++ /dev/null @@ -1,74 +0,0 @@ -name = $name; - $this->type = $type; - $this->label = $label; - $this->class = $class; - $this->value = $value; - $this->multiple = $multiple; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.form.upload'); - } -} diff --git a/src/System/Components/Layout.php b/src/System/Components/Layout.php deleted file mode 100644 index 1ed76a3d7..000000000 --- a/src/System/Components/Layout.php +++ /dev/null @@ -1,44 +0,0 @@ -name = $name; - $this->adminMenus = Menu::adminMenus(); - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.layouts.' . $this->name); - } -} diff --git a/src/System/Components/Link.php b/src/System/Components/Link.php deleted file mode 100644 index fe9a9c50d..000000000 --- a/src/System/Components/Link.php +++ /dev/null @@ -1,52 +0,0 @@ -url = $url; - $this->style = $style; - $this->class = $class; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.form.link'); - } -} diff --git a/src/System/Components/Table.php b/src/System/Components/Table.php deleted file mode 100644 index e681236bb..000000000 --- a/src/System/Components/Table.php +++ /dev/null @@ -1,30 +0,0 @@ -class = $class; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.table.header'); - } -} diff --git a/src/System/Components/Table/Row.php b/src/System/Components/Table/Row.php deleted file mode 100644 index 4fbab3f85..000000000 --- a/src/System/Components/Table/Row.php +++ /dev/null @@ -1,35 +0,0 @@ -class = $class; - } - - /** - * Get the view / contents that represent the component. - * - * @return \Illuminate\View\View|\Closure|string - */ - public function render() - { - return view('avored::system.components.table.row'); - } -} diff --git a/src/System/Composers/LayoutComposer.php b/src/System/Composers/LayoutComposer.php deleted file mode 100644 index c6b7b9ff5..000000000 --- a/src/System/Composers/LayoutComposer.php +++ /dev/null @@ -1,30 +0,0 @@ -with('adminMenus', $adminMenus) - ->with('currentOpenKey', $currentOpenKey) - ->with('currentMenuItemKey', $currentMenuItemKey); - } -} \ No newline at end of file diff --git a/src/System/Console/AdminMakeCommand.php b/src/System/Console/AdminMakeCommand.php deleted file mode 100644 index 6626b5046..000000000 --- a/src/System/Console/AdminMakeCommand.php +++ /dev/null @@ -1,64 +0,0 @@ -createAdminUserAction = $action; - $this->roleRepository = $repository; - parent::__construct(); - } - - - /** - * The console command name. - * - * @var string - */ - protected $name = 'avored:admin:make'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'AvoRed create an admin user account'; - - /** - * Execute the console command. - * - * @return void - */ - public function handle() - { - $data['first_name'] = $this->ask('What is your First Name?'); - $data['last_name'] = $this->ask('What is your last Name?'); - $data['email'] = $this->ask('What is your Email Address?'); - $data['password'] = $this->secret('What is your Password?'); - $data['confirm_password'] = $this->secret('Confirm your password again?'); - - $role = $this->roleRepository->findAdminRole(); - $data['role_id'] = $role->id; - $data['is_super_admin'] = 1; - $data['password'] = Hash::make($data['password']); - - $this->createAdminUserAction->handle($data); - - $this->info('Admin User created Successfully!'); - } -} diff --git a/src/System/Console/InstallCommand.php b/src/System/Console/InstallCommand.php deleted file mode 100644 index b0ca0c6cc..000000000 --- a/src/System/Console/InstallCommand.php +++ /dev/null @@ -1,66 +0,0 @@ -createRoleAction = $action; - parent::__construct(); - } - - /** - * The console command name. - * - * @var string - */ - protected $name = 'avored:install'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Install AvoRed e commerce an Laravel Shopping Cart'; - - /** - * Execute the console command. - * - * @return void - */ - public function handle() - { - $this->call('migrate:fresh'); - $this->executePassportInstallCommand(); - $this->call('storage:link'); - $this->createRoleAction->handle(['name' => Role::ADMIN]); - - if ($this->confirm('Would you like to install Dummy Data?')) { - $this->call('avored:module:install', ['identifier' => 'avored-dummy-data']); - } - - $this->call('avored:admin:make'); - - $this->info('AvoRed Install Successfully!'); - } - - public function executePassportInstallCommand() - { - $provider = 'customers'; - - // $this->call('passport:keys'); - $this->call('passport:keys', ['--force' => true]); - - $this->call('passport:client', ['--personal' => true, '--name' => config('app.name').' Personal Access Client']); - $this->call('passport:client', ['--password' => true, '--name' => config('app.name').' Password Grant Client', '--provider' => $provider]); - } -} diff --git a/src/System/Controllers/ConfigurationController.php b/src/System/Controllers/ConfigurationController.php deleted file mode 100644 index d8f77bc74..000000000 --- a/src/System/Controllers/ConfigurationController.php +++ /dev/null @@ -1,64 +0,0 @@ -configurationRepository = $configurationRepository; - } - - /** - * Show Configuration of an AvoRed Admin. - * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory - */ - public function index() - { - $tabs = Tab::get('system.configuration'); - - return view('avored::system.configuration.index') - ->with('tabs', $tabs) - ->with('repository', $this->configurationRepository) - ; - } - - /** - * Show Configuration of an AvoRed Admin. - * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse - */ - public function store(Request $request) - { - foreach ($request->except('_token') as $code => $value) { - /** @var \AvoRed\Framework\Database\Models\Configuration $model */ - $model = $this->configurationRepository->getModelByCode($code); - if ($model === null) { - $this->configurationRepository->create(['code' => $code, 'value' => $value]); - } else { - $model->update(['value' => $value]); - } - } - - return redirect()->route('admin.configuration.index') - ->with( - 'message', - __('avored::system.notification.save', ['attribute' => __('avored::system.configuration.title')]) - ); - } -} diff --git a/src/System/Controllers/DashboardController.php b/src/System/Controllers/DashboardController.php deleted file mode 100644 index 43f95eaa5..000000000 --- a/src/System/Controllers/DashboardController.php +++ /dev/null @@ -1,18 +0,0 @@ -roleRepository = $repository; - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory - */ - public function index() - { - $roles = $this->roleRepository->paginate(); - - return view('avored::system.role.index') - ->with('roles', $roles); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory - */ - public function create() - { - $permissions = Permission::all(); - $tabs = Tab::get('system.role'); - - return view('avored::system.role.create') - ->with('tabs', $tabs) - ->with('permissions', $permissions); - } - - /** - * Store a newly created resource in storage. - * - * @param \AvoRed\Framework\System\Requests\RoleRequest $request - * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse - */ - public function store(RoleRequest $request) - { - $role = $this->roleRepository->create($request->all()); - $this->roleRepository->saveRolePermissions($request, $role); - - return redirect(route('admin.role.index')); - } - - /** - * Show the form for editing the specified resource. - * - * @param \AvoRed\Framework\Database\Models\Role $role - * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory - */ - public function edit(Role $role) - { - $permissions = Permission::all(); - $tabs = Tab::get('system.role'); - - return view('avored::system.role.edit') - ->with('role', $role) - ->with('tabs', $tabs) - ->with('permissions', $permissions); - } - - /** - * Update the specified resource in storage. - * - * @param \AvoRed\Framework\System\Requests\RoleRequest $request - * @param \AvoRed\Framework\Database\Models\Role $role - * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse - */ - public function update(RoleRequest $request, Role $role) - { - $role->update($request->all()); - $this->roleRepository->saveRolePermissions($request, $role); - - return redirect(route('admin.role.index')); - } - - /** - * Remove the specified resource from storage. - * - * @param Role $role - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(Role $role) - { - $role->delete(); - - return new JsonResponse([ - 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.role')]) - ]); - } -} diff --git a/src/System/Requests/RoleRequest.php b/src/System/Requests/RoleRequest.php deleted file mode 100644 index 064383107..000000000 --- a/src/System/Requests/RoleRequest.php +++ /dev/null @@ -1,30 +0,0 @@ - 'required', - ]; - } -} diff --git a/src/Tab/Manager.php b/src/Tab/Manager.php deleted file mode 100644 index 78eafea48..000000000 --- a/src/Tab/Manager.php +++ /dev/null @@ -1,62 +0,0 @@ -collection = Collection::make([]); - } - - /** - * Get all the Tab Options Collection. - * @return \Illuminate\Support\Collection - */ - public function all(): Collection - { - return $this->collection; - } - - /** - * Get all the Tab Options Collection. - * @param string $key - * @return \Illuminate\Support\Collection - */ - public function get(string $key): Collection - { - return $this->collection->get($key); - } - - /** - * Put Tab class to an collection Collection. - * @param string $key - * @param callable $tab - * @return self - */ - public function put(string $key, callable $tab) - { - $tabObject = new TabItem($tab); - if (!$this->collection->has($key)) { - $collection = Collection::make([]); - $collection->push($tabObject); - } else { - $collection = $this->collection->get($key); - $collection->push($tabObject); - } - $this->collection->put($key, $collection); - - return $this; - } -} diff --git a/src/Tab/Tab.php b/src/Tab/Tab.php deleted file mode 100644 index 26c2c7bf7..000000000 --- a/src/Tab/Tab.php +++ /dev/null @@ -1,18 +0,0 @@ -label = $label; - - return $this; - } - - return trans($this->label); - } - - /** - * Get/Set Tab View. - * @return mixed - */ - public function view($view = null) - { - if (null !== $view) { - $this->view = $view; - - return $this; - } - - return $this->view; - } - - /** - * Get/Set Tab Identifier. - * @return mixed - */ - public function key($key = null) - { - if (null !== $key) { - $this->key = $key; - - return $this; - } - - return $this->key; - } -} diff --git a/src/Tab/TabProvider.php b/src/Tab/TabProvider.php deleted file mode 100644 index 5cf6d94b1..000000000 --- a/src/Tab/TabProvider.php +++ /dev/null @@ -1,226 +0,0 @@ -registerTabs(); - } - - /** - * Register the service provider. - * @return void - */ - public function register() - { - $this->registerManager(); - $this->app->singleton('tab', 'AvoRed\Framework\Tab\Manager'); - } - - /** - * Register the tab Manager Instance. - * @return void - */ - protected function registerManager() - { - $this->app->singleton( - 'tab', - function () { - new Manager(); - } - ); - } - - /** - * Get the services provided by the provider. - * @return array - */ - public function provides() - { - return ['tab', 'AvoRed\Framework\Tab\Manager']; - } - - /** - * Register Tabs for the Different CRUD operations. - * @return void - */ - public function registerTabs() - { - - Tab::put('promotion.promotion-code', function (TabItem $tab) { - $tab->key('promotion.promotion-code.info') - ->label('avored::system.tab.basic_info') - ->view('avored::promotion.promotion-code._fields'); - }); - - Tab::put('catalog.product', function (TabItem $tab) { - $tab->key('catalog.product.info') - ->label('avored::system.basic_info') - ->view('avored::catalog.product._fields'); - }); - - // Tab::put('catalog.product', function (TabItem $tab) { - // $tab->key('catalog.product.image') - // ->label('avored::system.tab.images') - // ->view('avored::catalog.product.cards.images'); - // }); - - // Tab::put('catalog.product', function (TabItem $tab) { - // $tab->key('catalog.product.property') - // ->label('avored::system.tab.property') - // ->view('avored::catalog.product.cards.property'); - // }); - - // Tab::put('catalog.product', function (TabItem $tab) { - // $tab->key('catalog.product.attribute') - // ->label('avored::system.tab.attribute') - // ->view('avored::catalog.product.cards.attribute'); - // }); - - /****** CATALOG CATEGORY TABS *******/ - Tab::put('catalog.category', function (TabItem $tab) { - $tab->key('catalog.category.info') - ->label('avored::system.basic_info') - ->view('avored::catalog.category._fields'); - }); - - /****** CATALOG PROPERTY TABS *******/ - Tab::put('catalog.property', function (TabItem $tab) { - $tab->key('catalog.property.info') - ->label('avored::system.basic_info') - ->view('avored::catalog.property._fields'); - }); - - /****** CATALOG ATTRIBUTE TABS *******/ - Tab::put('catalog.attribute', function (TabItem $tab) { - $tab->key('catalog.attribute.info') - ->label('avored::system.basic_info') - ->view('avored::catalog.attribute._fields'); - }); - - /******CMS PAGES TABS *******/ - Tab::put('cms.page', function (TabItem $tab) { - $tab->key('cms.page.info') - ->label('avored::system.basic_info') - ->view('avored::cms.page._fields'); - }); - - /******ORDER ORDER STATUS TABS *******/ - Tab::put('order.order-status', function (TabItem $tab) { - $tab->key('order.order-status.info') - ->label('avored::system.basic_info') - ->view('avored::order.order-status._fields'); - }); - - /****** CUSTOMER GROUPS TABS *******/ - Tab::put('user.customer-group', function (TabItem $tab) { - $tab->key('user.customer-group.info') - ->label('avored::system.tab.basic_info') - ->view('avored::user.customer-group._fields'); - }); - - Tab::put('user.customer', function (TabItem $tab) { - $tab->key('user.customer.info') - ->label('avored::system.tab.basic_info') - ->view('avored::user.customer._fields'); - }); - - Tab::put('user.customer', function (TabItem $tab) { - $tab->key('user.customer.address') - ->label('avored::system.addresses') - ->view('avored::user.customer._addresses'); - }); - - Tab::put('user.address', function (TabItem $tab) { - $tab->key('user.customer.info') - ->label('avored::system.tab.basic_info') - ->view('avored::user.customer.show'); - }); - Tab::put('user.address', function (TabItem $tab) { - $tab->key('user.customer.address') - ->label('avored::system.addresses') - ->view('avored::user.address._fields'); - }); - - /******USER ADMIN USER TABS *******/ - Tab::put('user.staff', function (TabItem $tab) { - $tab->key('user.staff.info') - ->label('avored::system.basic_info') - ->view('avored::user.staff._fields'); - }); - Tab::put('user.subscriber', function (TabItem $tab) { - $tab->key('user.subscriber.info') - ->label('avored::system.basic_info') - ->view('avored::user.subscriber._fields'); - }); - - /******SYSTEM CURRENCY TABS *******/ - Tab::put('system.currency', function (TabItem $tab) { - $tab->key('system.currency.info') - ->label('avored::system.tab.basic_info') - ->view('avored::system.currency._fields'); - }); - - /******SYSTEM STATE TABS *******/ - Tab::put('system.state', function (TabItem $tab) { - $tab->key('system.state.info') - ->label('avored::system.tab.basic_info') - ->view('avored::system.state._fields'); - }); - - /******SYSTEM ROLE TABS *******/ - Tab::put('system.role', function (TabItem $tab) { - $tab->key('system.role.info') - ->label('avored::system.basic_info') - ->view('avored::system.role._fields'); - }); - - /******SYSTEM ROLE TABS *******/ - Tab::put('system.language', function (TabItem $tab) { - $tab->key('system.language.info') - ->label('avored::system.tab.basic_info') - ->view('avored::system.language._fields'); - }); - - /******SYSTEM CONFIGURATION TABS *******/ - Tab::put('system.configuration', function (TabItem $tab) { - $tab->key('system.configuration.basic') - ->label('avored::system.basic_configuration') - ->view('avored::system.configuration.cards.basic'); - }); - - // Tab::put('system.configuration', function (TabItem $tab) { - // $tab->key('system.configuration.user') - // ->label('avored::system.tab.user_configuration') - // ->view('avored::system.configuration.cards.user'); - // }); - // Tab::put('system.configuration', function (TabItem $tab) { - // $tab->key('system.configuration.tax') - // ->label('avored::system.tax_configuration') - // ->view('avored::system.configuration.cards.tax'); - // }); - - // Tab::put('system.configuration', function (TabItem $tab) { - // $tab->key('system.configuration.shipping') - // ->label('avored::system.tab.shipping_configuration') - // ->view('avored::system.configuration.cards.shipping'); - // }); - // Tab::put('system.configuration', function (TabItem $tab) { - // $tab->key('system.configuration.payment') - // ->label('avored::system.tab.payment_configuration') - // ->view('avored::system.configuration.cards.payment'); - // }); - } -} diff --git a/src/User/Actions/AuthAdminUserAction.php b/src/User/Actions/AuthAdminUserAction.php deleted file mode 100644 index 5add6b0d5..000000000 --- a/src/User/Actions/AuthAdminUserAction.php +++ /dev/null @@ -1,24 +0,0 @@ -repository = $repository; - } - - public function __invoke(string $email, string $password): AdminUser - { - $adminUser = $this->repository->findByEmail($email); - //@todo validate password and return - - return $adminUser; - } -} diff --git a/src/User/Actions/CreateAdminUserAction.php b/src/User/Actions/CreateAdminUserAction.php deleted file mode 100644 index a614bb450..000000000 --- a/src/User/Actions/CreateAdminUserAction.php +++ /dev/null @@ -1,21 +0,0 @@ -repository = $repository; - } - - public function handle(array $data): AdminUser - { - return $this->repository->create($data); - } -} diff --git a/src/User/Actions/CreateRoleAction.php b/src/User/Actions/CreateRoleAction.php deleted file mode 100644 index 0d1e1b805..000000000 --- a/src/User/Actions/CreateRoleAction.php +++ /dev/null @@ -1,21 +0,0 @@ -repository = $repository; - } - - public function handle(array $data): Role - { - return $this->repository->create($data); - } -} diff --git a/src/User/Controllers/ForgotPasswordController.php b/src/User/Controllers/ForgotPasswordController.php deleted file mode 100644 index 5bbd665e4..000000000 --- a/src/User/Controllers/ForgotPasswordController.php +++ /dev/null @@ -1,106 +0,0 @@ -middleware('admin.guest'); - } - - /** - * Show Password Reset Form. - * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory - */ - public function linkRequestForm() - { - return view('avored::user.auth.reset'); - } - - /** - * Set up the admin user guard - * - * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard $guard - */ - protected function guard() - { - return Auth::guard('admin'); - } - - /** - * Get the broker to be used during password reset. - * - * @return \Illuminate\Contracts\Auth\PasswordBroker - */ - public function broker() - { - return Password::broker('adminusers'); - } - - /** - * Send a reset link to the given user. - * - * @param \AvoRed\Framework\User\Requests\ForgotPasswordRequest $request - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse - */ - public function sendResetLinkEmail(ForgotPasswordRequest $request) - { - - // We will send the password reset link to this user. Once we have attempted - // to send the link, we will examine the response then see the message we - // need to show to the user. Finally, we'll send out a proper response. - $response = $this->broker()->sendResetLink($request->only('email')); - - return $response == Password::RESET_LINK_SENT - ? $this->sendResetLinkResponse($request, $response) - : $this->sendResetLinkFailedResponse($request, $response); - } - - /** - * Get the response for a successful password reset link. - * - * @param \AvoRed\Framework\User\Requests\ForgotPasswordRequest $request - * @param string $response - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse - */ - protected function sendResetLinkResponse(ForgotPasswordRequest $request, $response) - { - return back()->with('status', trans($response)); - } - - /** - * Get the response for a failed password reset link. - * - * @param \AvoRed\Framework\User\Requests\ForgotPasswordRequest $request - * @param string $response - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse - */ - protected function sendResetLinkFailedResponse(ForgotPasswordRequest $request, $response) - { - return back() - ->withInput($request->only('email')) - ->withErrors(['email' => trans($response)]); - } -} diff --git a/src/User/Controllers/LoginController.php b/src/User/Controllers/LoginController.php deleted file mode 100644 index 39fba1cf4..000000000 --- a/src/User/Controllers/LoginController.php +++ /dev/null @@ -1,126 +0,0 @@ -middleware('admin.guest')->except('logout'); - } - - /** - * Handle a login request to the application. - * - * @param AdminLoginRequest $request - * @return RedirectResponse - * - * @throws \Illuminate\Validation\ValidationException - */ - public function login(AdminLoginRequest $request) - { - if ($this->attemptLogin($request)) { - return $this->sendLoginResponse($request); - } - - return $this->sendFailedLoginResponse($request); - } - - /** - * Send the response after the user was authenticated. - * - * @param AdminLoginRequest $request - * @return RedirectResponse - */ - protected function sendLoginResponse(AdminLoginRequest $request): RedirectResponse - { - $request->session()->regenerate(); - - return redirect()->intended($this->redirectPath()); - } - - - public function redirectPath() - { - return route('admin.dashboard'); - } - /** - * Attempt to log the user into the application. - * - * @param AdminLoginRequest $request - * @return bool - */ - protected function attemptLogin(AdminLoginRequest $request) - { - return $this->guard()->attempt( - $request->only('email', 'password'), - $request->filled('remember') - ); - } - - - /** - * Show the AvoRed Login Form to the User. - * @return \Illuminate\View\View - */ - public function loginForm(): View - { - return view('avored::user.auth.login-form'); - } - - /** - * Using an Admin Guard for the Admin Auth. - * @return \Illuminate\Auth\SessionGuard - */ - protected function guard() - { - return Auth::guard('admin'); - } - - /** - * Get the failed login response instance. - * @param AdminLoginRequest $request - * @return \Symfony\Component\HttpFoundation\Response - * @throws ValidationException - */ - protected function sendFailedLoginResponse(AdminLoginRequest $request) - { - throw ValidationException::withMessages( - ['email' => [trans('avored::system.failed')]] - ); - } - - /** - * Redirect Path after login and logout. - * @param Request $request - * @return \Illuminate\Http\RedirectResponse - */ - public function logout(Request $request) - { - $this->guard()->logout(); - $request->session()->flush(); - $request->session()->regenerate(); - - return redirect()->route('admin.login'); - } -} diff --git a/src/User/Controllers/ResetPasswordController.php b/src/User/Controllers/ResetPasswordController.php deleted file mode 100644 index 345e40975..000000000 --- a/src/User/Controllers/ResetPasswordController.php +++ /dev/null @@ -1,178 +0,0 @@ -middleware('admin.guest'); - } - - /** - * Display the password reset view for the given token. - * - * If no token is present, display the link request form. - * - * @param \Illuminate\Http\Request $request - * @param string|null $token - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View - */ - public function showResetForm(Request $request, $token = null) - { - return view('avored::user.auth.password.new')->with( - ['token' => $token, 'email' => $request->email] - ); - } - - /** - * Laravel auth guard that is used to support the admin user - * - * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard - */ - protected function guard() - { - return Auth::guard('admin'); - } - - /** - * Get the broker to be used during password reset. - * - * @return \Illuminate\Contracts\Auth\PasswordBroker - */ - public function broker() - { - return Password::broker('adminusers'); - } - - - /** - * Redirect Path after login and logout. - * @return string - */ - public function redirectPath() - { - return route('admin.dashboard'); - } - - /** - * Reset the given user's password. - * - * @param ResetAdminUserRequest $request - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse - */ - public function reset(ResetAdminUserRequest $request) - { - - // Here we will attempt to reset the user's password. If it is successful we - // will update the password on an actual user model and persist it to the - // database. Otherwise we will parse the error and return the response. - $response = $this->broker()->reset( - $this->credentials($request), - function ($user, $password) { - $this->resetPassword($user, $password); - } - ); - - // If the password was successfully reset, we will redirect the user back to - // the application's home authenticated view. If there is an error we can - // redirect them back to where they came from with their error message. - return $response == Password::PASSWORD_RESET - ? $this->sendResetResponse($request, $response) - : $this->sendResetFailedResponse($request, $response); - } - - /** - * Reset the given user's password. - * - * @param \AvoRed\Framework\Database\Models\AdminUser $user - * @param string $password - * @return void - */ - protected function resetPassword($user, $password) - { - $this->setUserPassword($user, $password); - $user->save(); - event(new PasswordReset($user)); - - $this->guard()->login($user); - } - - /** - * Set the user's password. - * - * @param \AvoRed\Framework\Database\Models\AdminUser $user - * @param string $password - * @return void - */ - protected function setUserPassword($user, $password) - { - $user->password = Hash::make($password); - } - - /** - * Get the password reset credentials from the request. - * - * @param \Illuminate\Http\Request $request - * @return array - */ - protected function credentials(Request $request) - { - return $request->only( - 'email', - 'password', - 'password_confirmation', - 'token' - ); - } - - - /** - * Get the response for a successful password reset. - * - * @param \Illuminate\Http\Request $request - * @param string $response - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse - */ - protected function sendResetResponse(Request $request, $response) - { - return redirect($this->redirectPath()) - ->with('status', trans($response)); - } - - /** - * Get the response for a failed password reset. - * - * @param \Illuminate\Http\Request $request - * @param string $response - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse - */ - protected function sendResetFailedResponse(Request $request, $response) - { - return redirect()->back() - ->withInput($request->only('email')) - ->withErrors(['email' => trans($response)]); - } -} diff --git a/src/User/Controllers/StaffController.php b/src/User/Controllers/StaffController.php deleted file mode 100644 index 3c128d6fb..000000000 --- a/src/User/Controllers/StaffController.php +++ /dev/null @@ -1,132 +0,0 @@ -adminUserRepository = $repository; - $this->roleRepository = $roleRepository; - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory - */ - public function index() - { - $adminUsers = $this->adminUserRepository->paginate(); - - return view('avored::user.staff.index') - ->with('staffs', $adminUsers); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory - */ - public function create() - { - $roles = $this->roleRepository->options(); - $tabs = Tab::get('user.staff'); - - return view('avored::user.staff.create') - ->with('tabs', $tabs) - ->with('options', $roles); - } - - /** - * Store a newly created resource in storage. - * - * @param AdminUserRequest $request - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ - public function store(AdminUserRequest $request) - { - $this->adminUserRepository->create($request->all()); - - return redirect(route('admin.staff.index')); - } - - /** - * Show the form for editing the specified resource. - * - * @param AdminUser $staff - * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory - */ - public function edit(AdminUser $staff) - { - $roles = $this->roleRepository->options(); - $tabs = Tab::get('user.staff'); - - return view('avored::user.staff.edit') - ->with('staff', $staff) - ->with('options', $roles) - ->with('tabs', $tabs); - } - - /** - * Update the specified resource in storage. - * - * @param AdminUserRequest $request - * @param AdminUser $staff - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ - public function update(AdminUserRequest $request, AdminUser $staff) - { - if ($request->file('image_path')) { - $document = Document::uploadPublicly($request->file('image_path')); - $staff->imagePath()->updateOrCreate(optional($staff->imagePath)->toArray() ?? [], $document); - } - - $staff->update($request->all()); - - return redirect(route('admin.staff.index')); - } - - /** - * Remove the specified resource from storage. - * - * @param AdminUser $staff - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(AdminUser $staff) - { - $staff->delete(); - - return new JsonResponse([ - 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.staff')]) - ]); - } -} diff --git a/src/User/Controllers/SubscriberController.php b/src/User/Controllers/SubscriberController.php deleted file mode 100644 index ad7adc829..000000000 --- a/src/User/Controllers/SubscriberController.php +++ /dev/null @@ -1,113 +0,0 @@ -subscriberRepository = $repository; - } - - /** - * Display a listing of the resource. - * - * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory - */ - public function index() - { - $subscribers = $this->subscriberRepository->paginate(); - - return view('avored::user.subscriber.index') - ->with('subscribers', $subscribers); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory - */ - public function create() - { - $tabs = Tab::get('user.subscriber'); - - return view('avored::user.subscriber.create') - ->with('tabs', $tabs); - } - - /** - * Store a newly created resource in storage. - * - * @param SubscriberRequest $request - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ - public function store(SubscriberRequest $request) - { - $this->subscriberRepository->create($request->all()); - - return redirect(route('admin.subscriber.index')); - } - - /** - * Show the form for editing the specified resource. - * - * @param Subscriber $subscriber - * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory - */ - public function edit(Subscriber $subscriber) - { - $tabs = Tab::get('user.subscriber'); - - return view('avored::user.subscriber.edit') - ->with('subscriber', $subscriber) - ->with('tabs', $tabs); - } - - /** - * Update the specified resource in storage. - * - * @param SubscriberRequest $request - * @param Subscriber $subscriber - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ - public function update(SubscriberRequest $request, Subscriber $subscriber) - { - $subscriber->update($request->all()); - - return redirect(route('admin.subscriber.index')); - } - - /** - * Remove the specified resource from storage. - * - * @param Subscriber $subscriber - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(Subscriber $subscriber) - { - $subscriber->delete(); - - return new JsonResponse([ - 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.subscriber')]) - ]); - } -} diff --git a/src/User/Notifications/CustomerResetPassword.php b/src/User/Notifications/CustomerResetPassword.php deleted file mode 100644 index abc13520d..000000000 --- a/src/User/Notifications/CustomerResetPassword.php +++ /dev/null @@ -1,67 +0,0 @@ -token = $token; - } - - /** - * Get the notification's channels. - * - * @param mixed $notifiable - * @return array|string - */ - public function via($notifiable) - { - return ['mail']; - } - - /** - * Build the mail representation of the notification. - * - * @param mixed $notifiable - * @return \Illuminate\Notifications\Messages\MailMessage - */ - public function toMail($notifiable) - { - $repositroy = $this->getConfigurationRepository(); - $resetLink = $repositroy->getValueByCode('customer_reset_password_link'); - $url = $resetLink . "?token=" . $this->token; - return (new MailMessage) - ->line('You are receiving this email because we received a password reset request for your account.') - ->action('Reset Password', $url) - ->line('If you did not request a password reset, no further action is required.'); - } - - - /** - * Get the instance of an Configuration repository - * @return ConfigurationRepository - */ - public function getConfigurationRepository() : ConfigurationRepository - { - return app(ConfigurationModelInterface::class); - } -} diff --git a/src/User/Notifications/ResetPassword.php b/src/User/Notifications/ResetPassword.php deleted file mode 100644 index b7af7f668..000000000 --- a/src/User/Notifications/ResetPassword.php +++ /dev/null @@ -1,52 +0,0 @@ -token = $token; - } - - /** - * Get the notification's channels. - * - * @param mixed $notifiable - * @return array|string - */ - public function via($notifiable) - { - return ['mail']; - } - - /** - * Build the mail representation of the notification. - * - * @param mixed $notifiable - * @return \Illuminate\Notifications\Messages\MailMessage - */ - public function toMail($notifiable) - { - return (new MailMessage) - ->line('You are receiving this email because we received a password reset request for your account.') - ->action('Reset Password', route('admin.password.reset', $this->token)) - ->line('If you did not request a password reset, no further action is required.'); - } -} diff --git a/src/User/Requests/AdminLoginRequest.php b/src/User/Requests/AdminLoginRequest.php deleted file mode 100644 index ab255f5a0..000000000 --- a/src/User/Requests/AdminLoginRequest.php +++ /dev/null @@ -1,29 +0,0 @@ - 'required|email', - 'password' => 'required' - ]; - } -} diff --git a/src/User/Requests/AdminUserRequest.php b/src/User/Requests/AdminUserRequest.php deleted file mode 100644 index 18278b5c8..000000000 --- a/src/User/Requests/AdminUserRequest.php +++ /dev/null @@ -1,31 +0,0 @@ - 'required', - 'last_name' => 'required', - 'role_id' => 'required' - ]; - } -} diff --git a/src/User/Requests/ForgotPasswordRequest.php b/src/User/Requests/ForgotPasswordRequest.php deleted file mode 100644 index e6aa15b1b..000000000 --- a/src/User/Requests/ForgotPasswordRequest.php +++ /dev/null @@ -1,31 +0,0 @@ - 'required', - 'email' => 'required|email', - 'password' => 'required|confirmed|min:8', - ]; - } -} diff --git a/src/User/Requests/SubscriberRequest.php b/src/User/Requests/SubscriberRequest.php deleted file mode 100644 index 3541883a2..000000000 --- a/src/User/Requests/SubscriberRequest.php +++ /dev/null @@ -1,29 +0,0 @@ - 'required', - ]; - } -} diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index 66220508f..000000000 --- a/tailwind.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - purge: [ - './resources/**/*.blade.php', - './resources/**/*.js', - ], - darkMode: false, // or 'media' or 'class' - theme: { - extend: {}, - }, - variants: { - extend: {}, - }, - plugins: [], -} \ No newline at end of file diff --git a/tests/Feature/AdminUserControllerTest.php b/tests/Feature/AdminUserControllerTest.php deleted file mode 100644 index a7ca6f753..000000000 --- a/tests/Feature/AdminUserControllerTest.php +++ /dev/null @@ -1,90 +0,0 @@ -createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.staff.index')) - ->assertStatus(200) - ->assertSee(__('avored::system.staff')); - } - - /** @test */ - public function test_admin_user_create_route_test() - { - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.staff.create')) - ->assertStatus(200); - } - - /** @test */ - public function test_admin_user_store_route_test() - { - $role = Role::factory()->create(); - $data = [ - 'first_name' => 'test staff name', - 'last_name' => 'test-staff-name', - 'is_super_admin' => 0, - 'email' => $this->faker->email, - 'role_id' => $role->id, - 'password' => 'randompassword', - 'password_confirmation' => 'randompassword', - 'language' => 'en', - ]; - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->post(route('admin.staff.store', $data)) - ->assertRedirect(route('admin.staff.index')); - - $this->assertDatabaseHas('admin_users', ['first_name' => 'test staff name']); - } - - /** @test */ - public function test_admin_user_edit_route_test() - { - $adminUser = AdminUser::factory()->create(); - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.staff.edit', $adminUser->id)) - ->assertStatus(200); - } - - /** @test */ - public function test_admin_user_update_route_test() - { - $adminUser = AdminUser::factory()->create(); - $adminUser->first_name = 'updated staff name'; - $adminUser->language = 'en'; - $data = $adminUser->toArray(); - - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->put(route('admin.staff.update', $adminUser->id), $data) - ->assertRedirect(route('admin.staff.index')); - - $this->assertDatabaseHas('admin_users', ['first_name' => 'updated staff name']); - } - - /** @test */ - public function test_admin_user_destroy_route_test() - { - $adminUser = AdminUser::factory()->create(); - - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->delete(route('admin.staff.destroy', $adminUser->id)) - ->assertStatus(200); - - $this->assertDatabaseMissing('admin_users', ['id' => $adminUser->id]); - } -} diff --git a/tests/Feature/AuthControllerTest.php b/tests/Feature/AuthControllerTest.php deleted file mode 100644 index 7c9c2c3ac..000000000 --- a/tests/Feature/AuthControllerTest.php +++ /dev/null @@ -1,62 +0,0 @@ -get(route('admin.login')) - ->assertStatus(200) - ->assertViewIs('avored::user.auth.login-form'); - } - - /** @test */ - public function test_admin_logout_route_test() - { - $this - ->createAdminUser() - ->actingAs($this->user, 'admin') - ->post(route('admin.logout')) - ->assertRedirect(route('admin.login')); - } - - /** @test */ - public function test_admin_login_redirect_guest_middleware() - { - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.login')) - ->assertRedirect(route('admin.dashboard')); - } - - /** @test */ - public function test_admin_login_post_route() - { - $password = 'phpunittest'; - $this->createAdminUser(['is_super_admin' => 1, 'password' => $password]) - ->actingAs($this->user, 'admin') - ->post(route('admin.login.post', ['email' => $this->user->email, 'password' => $password])) - ->assertRedirect(route('admin.dashboard')); - } - - /** @test */ - public function test_admin_login_post_route_failed() - { - $password = 'phpunittest'; - $this - ->createAdminUser(['is_super_admin' => 1, 'password' => $password]) - ->post(route('admin.login.post', ['email' => $this->user->email, 'password' => 'wrongpassword'])) - ->assertSessionHasErrors('email'); - } - - /** @test */ - public function test_guest_user_is_redirected_to_login() - { - $this->get(route('admin.dashboard')) - ->assertRedirect(route('admin.login')); - } -} diff --git a/tests/Feature/CategoryControllerTest.php b/tests/Feature/CategoryControllerTest.php deleted file mode 100644 index ea54a7630..000000000 --- a/tests/Feature/CategoryControllerTest.php +++ /dev/null @@ -1,80 +0,0 @@ -getAvoRed('admin.category.index'); - - $response->assertStatus(200) - ->assertViewIs('avored::catalog.category.index'); - } - /** @test */ - public function test_category_page_create_form() - { - $response = $this->getAvoRed('admin.category.create'); - - $response->assertStatus(200) - ->assertViewIs('avored::catalog.category.create'); - } - - /** @test */ - public function test_category_page_store_form() - { - $data = Category::factory()->make(); - $this - ->postAvoRed('admin.category.store', $data->toArray()) - ->assertStatus(302) - ->assertRedirect(route('admin.category.index')); - - $this->assertDatabaseHas('categories', ['name' => $data->name, 'slug' => $data->slug]); - } - - /** @test */ - public function test_category_page_edit_form() - { - $category = Category::factory()->create(); - $response = $this->createAdminUser(['is_super_admin' => 1]) - ->actingAs($this->user, 'admin') - ->get(route('admin.category.edit', $category)); - $response->assertStatus(200) - ->assertViewIs('avored::catalog.category.edit'); - } - - /** @test */ - public function test_category_page_update_form() - { - $category = Category::factory()->create(); - $category->name = 'unit test update'; - - $this->createAdminUser(['is_super_admin' => 1]) - ->actingAs($this->user, 'admin') - ->put(route('admin.category.update', $category), $category->toArray()) - ->assertStatus(302) - ->assertRedirect(route('admin.category.index')); - - $this->assertDatabaseHas('categories', ['name' => 'unit test update', 'slug' => $category->slug]); - - } - - /** @test */ - public function test_category_page_destroy_form() - { - $category = Category::factory()->create(); - - $this->createAdminUser(['is_super_admin' => 1]) - ->actingAs($this->user, 'admin') - ->delete(route('admin.category.update', $category)) - ->assertStatus(200); - - $this->assertDatabaseMissing('categories', ['name' => 'unit test update', 'slug' => $category->slug]); - - } -} diff --git a/tests/Feature/ConfigurationControllerTest.php b/tests/Feature/ConfigurationControllerTest.php deleted file mode 100644 index b7978335e..000000000 --- a/tests/Feature/ConfigurationControllerTest.php +++ /dev/null @@ -1,29 +0,0 @@ -createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.configuration.index')) - ->assertStatus(200) - ; - } - - public function test_category_store_route_test() - { - $data = ['site_title' => 'test site title']; - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->post(route('admin.configuration.store', $data)) - ->assertRedirect(route('admin.configuration.index')); - - $this->assertDatabaseHas('configurations', ['code' => 'site_title']); - } -} \ No newline at end of file diff --git a/tests/Feature/DashboardControllerTest.php b/tests/Feature/DashboardControllerTest.php deleted file mode 100644 index 21a587b69..000000000 --- a/tests/Feature/DashboardControllerTest.php +++ /dev/null @@ -1,17 +0,0 @@ -createAdminUser() - ->actingAs($this->user, 'admin') - ->getAvoRed('admin.dashboard'); - - $response->assertStatus(200); - } -} diff --git a/tests/Feature/LoginControllerTest.php b/tests/Feature/LoginControllerTest.php deleted file mode 100644 index 459a935b1..000000000 --- a/tests/Feature/LoginControllerTest.php +++ /dev/null @@ -1,83 +0,0 @@ -get(route('admin.login')); - - $response->assertStatus(200); - } - - /** @test */ - public function test_find_admin_user_by_email() - { - $this->createAdminUser(['is_super_admin' => 1]); - - $repository = app(AdminUserModelInterface::class); - - $data = $repository->findByEmail($this->user->email); - $this->assertEquals($this->user->email, $data->email); - } - - /** @test */ - public function test_login_page_post_form() - { - $password = 'phpunittest'; - $this->createAdminUser(['is_super_admin' => 1, 'password' => $password]) - ->actingAs($this->user, 'admin') - ->post(route('admin.login.post', ['email' => $this->user->email, 'password' => $password])) - ->assertRedirect(route('admin.dashboard')); - - } - - /** @test */ - public function test_admin_logout_route_test() - { - $this - ->createAdminUser() - ->actingAs($this->user, 'admin') - ->post(route('admin.logout')) - ->assertRedirect(route('admin.login')); - } - - /** @test */ - public function test_admin_login_redirect_guest_middleware() - { - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.login')) - ->assertRedirect(route('admin.dashboard')); - } - - /** @test */ - public function test_admin_login_post_route() - { - $password = 'phpunittest'; - $this->createAdminUser(['is_super_admin' => 1, 'password' => $password]) - ->actingAs($this->user, 'admin') - ->post(route('admin.login.post', ['email' => $this->user->email, 'password' => $password])) - ->assertRedirect(route('admin.dashboard')); - } - - /** @test */ - public function test_admin_login_post_route_failed() - { - $password = 'phpunittest'; - $this - ->createAdminUser(['is_super_admin' => 1, 'password' => $password]) - ->post(route('admin.login.post', ['email' => $this->user->email, 'password' => 'wrongpassword'])) - ->assertSessionHasErrors('email'); - } - - /** @test */ - public function test_guest_user_is_redirected_to_login() - { - $this->get(route('admin.dashboard')) - ->assertRedirect(route('admin.login')); - } -} diff --git a/tests/Feature/OrderControllerTest.php b/tests/Feature/OrderControllerTest.php deleted file mode 100644 index cc391aaf4..000000000 --- a/tests/Feature/OrderControllerTest.php +++ /dev/null @@ -1,30 +0,0 @@ -createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.order.index')) - ->assertStatus(200) - ->assertSee(__('avored::system.order')); - } - - /** @test */ - public function test_order_index_route_with_factory_data() - { - $order = Order::factory()->create(); - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.order.index')) - ->assertStatus(200) - ->assertSee($order->shipping_option); - } -} diff --git a/tests/Feature/OrderStatusControllerTest.php b/tests/Feature/OrderStatusControllerTest.php deleted file mode 100644 index 8fa59abdc..000000000 --- a/tests/Feature/OrderStatusControllerTest.php +++ /dev/null @@ -1,73 +0,0 @@ -createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.order-status.index')) - ->assertStatus(200); - } - - /** @test */ - public function test_order_status_create_route() - { - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.order-status.create')) - ->assertStatus(200); - } - - /** @test */ - public function test_order_status_store_route() - { - $data = ['name' => 'test order-status name', 'is_default' => 1]; - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->post(route('admin.order-status.store', $data)); - - $this->assertDatabaseHas('order_statuses', ['name' => 'test order-status name']); - } - - public function testOrderStatusEditRouteTest() - { - $orderStatus = OrderStatus::factory()->create(); - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.order-status.edit', $orderStatus->id)) - ->assertStatus(200); - } - - public function testOrderStatusUpdateRouteTest() - { - $orderStatus = OrderStatus::factory()->create(); - $orderStatus->name = 'updated order-status name'; - $data = $orderStatus->toArray(); - - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->put(route('admin.order-status.update', $orderStatus->id), $data) - ->assertRedirect(route('admin.order-status.index')); - - $this->assertDatabaseHas('order_statuses', ['name' => 'updated order-status name']); - } - - public function testOrderStatusDestroyRouteTest() - { - $orderStatus = OrderStatus::factory()->create(); - - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->delete(route('admin.order-status.destroy', $orderStatus->id)) - ->assertStatus(200); - - $this->assertDatabaseMissing('order_statuses', ['id' => $orderStatus->id]); - } -} diff --git a/tests/Feature/PageControllerTest.php b/tests/Feature/PageControllerTest.php deleted file mode 100644 index 2c7aa9519..000000000 --- a/tests/Feature/PageControllerTest.php +++ /dev/null @@ -1,78 +0,0 @@ -createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.page.index')) - ->assertStatus(200); - } - - /** @test */ - public function test_page_create_route() - { - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.page.create')) - ->assertStatus(200); - } - - /** @test */ - public function test_page_store_route() - { - $data = ['name' => 'test page name', 'slug' => 'test-page-name', 'content' => 'test content', '']; - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->post(route('admin.page.store', $data)) - ->assertRedirect(route('admin.page.index')); - - $this->assertDatabaseHas('pages', ['name' => 'test page name']); - } - - /** @test */ - public function test_pageedit_route_test() - { - $page = Page::factory()->create(); - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.page.edit', $page->id)) - ->assertStatus(200); - } - - /** @test */ - public function test_pageupdate_route() - { - $page = Page::factory()->create(); - $page->name = 'updated page name'; - $data = $page->toArray(); - - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->put(route('admin.page.update', $page->id), $data) - ->assertRedirect(route('admin.page.index')); - - $this->assertDatabaseHas('pages', ['name' => 'updated page name']); - } - - /** @test */ - public function test_page_destroy_route() - { - $page = Page::factory()->create(); - - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->delete(route('admin.page.destroy', $page->id)) - ->assertStatus(200); - - $this->assertDatabaseMissing('pages', ['id' => $page->id]); - } -} diff --git a/tests/Feature/ProductControllerTest.php b/tests/Feature/ProductControllerTest.php deleted file mode 100644 index 6f038c8e2..000000000 --- a/tests/Feature/ProductControllerTest.php +++ /dev/null @@ -1,78 +0,0 @@ -createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.product.index')) - ->assertStatus(200); - } - - /** @test */ - public function test_product_createRoute() - { - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.product.create')) - ->assertStatus(200); - } - - /** @test */ - public function test_product_store_route() - { - $data = [ - 'name' => 'test product', - 'slug' => 'test-product', - 'type' => 'BASIC' - ]; - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->post(route('admin.product.store', $data)) - ->assertRedirect(route('admin.product.index')); - $this->assertDatabaseHas('products', ['name' => 'test product']); - } - /** @test */ - public function test_product_edit_route() - { - $product = Product::factory()->create(); - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.product.edit', $product)) - ->assertStatus(200) - ->assertViewIs('avored::catalog.product.edit'); - } - - /** @test */ - public function test_product_update_route() - { - $product = Product::factory()->create(); - $product->name = 'update product name'; - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->put(route('admin.product.update', $product), $product->toArray()) - ->assertRedirect(route('admin.product.index')); - $this->assertDatabaseHas('products', ['name' => 'update product name']); - } - - /** @test */ - public function test_product_destroy_route() - { - $product = Product::factory()->create(); - - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->delete(route('admin.product.destroy', $product->id)) - ->assertStatus(200); - - $this->assertDatabaseMissing('products', ['id' => $product->id]); - } -} diff --git a/tests/Feature/RoleControllerTest.php b/tests/Feature/RoleControllerTest.php deleted file mode 100644 index 95b85b278..000000000 --- a/tests/Feature/RoleControllerTest.php +++ /dev/null @@ -1,116 +0,0 @@ -createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.role.index')) - ->assertStatus(200); - } - - /** @test */ - public function test_role_create_route() - { - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.role.create')) - ->assertStatus(200); - } - - /** @test */ - public function test_role_store_route() - { - $data = ['name' => 'test role name']; - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->post(route('admin.role.store', $data)) - ->assertRedirect(route('admin.role.index')); - - $this->assertDatabaseHas('roles', ['name' => 'test role name']); - } - - /** @test */ - public function test_role_edit_route() - { - $role = Role::factory()->create(); - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->get(route('admin.role.edit', $role->id)) - ->assertStatus(200); - } - - /** @test */ - public function test_role_update_route() - { - $role = Role::factory()->create(); - $role->name = 'updated role name'; - $data = $role->toArray(); - - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->put(route('admin.role.update', $role->id), $data) - ->assertRedirect(route('admin.role.index')); - - $this->assertDatabaseHas('roles', ['name' => 'updated role name']); - } - - /** @test */ - public function test_role_destroy_route() - { - $role = Role::factory()->create(); - - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->delete(route('admin.role.destroy', $role->id)) - ->assertStatus(200); - - $this->assertDatabaseMissing('roles', ['id' => $role->id]); - } - - public function testRoleStoreWithPermissionsRouteTest() - { - $permissionList = Permission::all()->first()->permissionList; - $permissions = collect(); - foreach ($permissionList as $permission) { - $permissions->push($permission->routes()); - } - - $data = ['name' => 'test role name', 'permissions' => $permissions->toArray()]; - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->post(route('admin.role.store', $data)) - ->assertRedirect(route('admin.role.index')); - - $this->assertDatabaseHas('roles', ['name' => 'test role name']); - } - - public function testRoleUpdateWithPermissionsRouteTest() - { - $permissionList = Permission::all()->first()->permissionList; - $permissions = collect(); - foreach ($permissionList as $permission) { - $permissions->push($permission->routes()); - } - - $role = Role::factory()->create(); - $role->name = 'updated role name'; - $data = $role->toArray(); - $data['permissions'] = $permissions->toArray(); - - $this->createAdminUser() - ->actingAs($this->user, 'admin') - ->put(route('admin.role.update', $role->id), $data) - ->assertRedirect(route('admin.role.index')); - - $this->assertDatabaseHas('roles', ['name' => 'updated role name']); - } -} diff --git a/tests/Functional/BreadcrumbTest.php b/tests/Functional/BreadcrumbTest.php deleted file mode 100644 index 3f7ce2fd2..000000000 --- a/tests/Functional/BreadcrumbTest.php +++ /dev/null @@ -1,61 +0,0 @@ -make('test.route', function ($breadcrumb) { - $breadcrumb->route('test.route'); - }); - $testRoute = $builder->get('test.route'); - $this->assertEquals($testRoute->route(), 'test.route'); - } - - /** @test */ - public function test_breadcrumb_builder_render() - { - $builder = new Builder(); - $builder->make('test.route', function ($breadcrumb) { - $breadcrumb->route('test.route'); - }); - - $this->assertInstanceOf(View::class, $builder->render('test.route')); - } - - /** @test */ - public function test_breadcrumb_label() - { - $builder = new Builder(); - $builder->make('test.route', function ($breadcrumb) { - $breadcrumb->label('test label'); - }); - $testRoute = $builder->get('test.route'); - $this->assertEquals($testRoute->label(), 'test label'); - } - - /** @test */ - public function test_breadcrumb_parent() - { - $builder = new Builder(); - $builder->make('test.route', function ($breadcrumb) { - $breadcrumb->label('test parent label'); - }); - - $builder->make('test.child.route', function ($breadcrumb) { - $breadcrumb->label('test label') - ->parent('test.route'); - }); - $testRoute = $builder->get('test.child.route'); - - $this->assertEquals($testRoute->parents->count(), 1); - } -} diff --git a/tests/Functional/PermissionTest.php b/tests/Functional/PermissionTest.php deleted file mode 100644 index 8ec16faca..000000000 --- a/tests/Functional/PermissionTest.php +++ /dev/null @@ -1,32 +0,0 @@ -createAdminUser(['is_super_admin' => 0]) - ->actingAs($this->user, 'admin') - ->get(route('admin.dashboard')) - ->assertStatus(Response::HTTP_FORBIDDEN); - - $this->createPermissionForUser($this->user, 'admin.dashboard'); - $this->actingAs($this->user, 'admin') - ->get(route('admin.dashboard')) - ->assertStatus(Response::HTTP_OK); - } - - protected function createPermissionForUser(AdminUser $user, string $name) - { - $permission = new Permission(['name' => $name]); - $user->role->permissions()->save($permission); - $user->load('role.permissions'); - } -} diff --git a/tests/Functional/ProductModelTest.php b/tests/Functional/ProductModelTest.php deleted file mode 100644 index c57f4e500..000000000 --- a/tests/Functional/ProductModelTest.php +++ /dev/null @@ -1,33 +0,0 @@ -create(['slug' => $slug]); - - $repository = app(ProductModelInterface::class); - $returnModel = $repository->findBySlug($slug); - - $this->assertEquals($returnModel->toArray(), $expectedProduct->toArray()); - } - - /** @test */ - public function test_product_find_by_barcode_method() - { - $barcode = 123456789; - $expectedProduct = Product::factory()->create(['barcode' => $barcode]); - - $repository = app(ProductModelInterface::class); - $returnModel = $repository->findByBarcode($barcode); - - $this->assertEquals($returnModel->toArray(), $expectedProduct->toArray()); - } -} diff --git a/tests/TestCase.php b/tests/TestCase.php deleted file mode 100644 index c920c0cb7..000000000 --- a/tests/TestCase.php +++ /dev/null @@ -1,141 +0,0 @@ -faker = $this->app->make(FakerGenerator::class); - Factory::guessFactoryNamesUsing( - fn (string $modelName) => 'AvoRed\\Framework\\Database\\Factories\\' . class_basename($modelName) . 'Factory' - ); - $this->setUpDatabase(); - Notification::fake(); - } - - /** - * Reset the Database. - * @return void - */ - private function resetDatabase(): void - { - $this->artisan('migrate:fresh'); - } - - /** - * Setup database for the unit test. - * @return void - */ - protected function setUpDatabase(): void - { - // $this->loadLaravelMigrations(); - $this->resetDatabase(); - } - - /** - * Undocumented function - * - * @param Application $app - * @return void - */ - protected function getPackageProviders($app) - { - return [ - AvoRedServiceProvider::class, - ]; - } - - /** - * Get package aliases. - * - * @param \Illuminate\Foundation\Application $app - * - * @return array - */ - protected function getPackageAliases($app): array - { - return [ - 'Breadcrumb' => \AvoRed\Framework\Breadcrumb\Breadcrumb::class, - 'Menu' => \AvoRed\Framework\Menu\Menu::class, - 'Payment' => \AvoRed\Framework\Payment\Payment::class, - 'Permission' => \AvoRed\Framework\Permission\Permission::class, - 'Shipping' => \AvoRed\Framework\Shipping\Shipping::class, - ]; - } - - /** - * Undocumented function - * - * @param string $routeName - * @return \Illuminate\Testing\TestResponse - */ - public function getAvoRed($routeName): TestResponse - { - return $this->createAdminUser(['is_super_admin' => 1]) - ->actingAs($this->user, 'admin') - ->get(route($routeName)); - } - /** - * Undocumented function - * - * @param string $routeName - * @param mixed $data - * @return \Illuminate\Testing\TestResponse - */ - public function postAvoRed($routeName, $data): TestResponse - { - return $this->createAdminUser(['is_super_admin' => 1]) - ->actingAs($this->user, 'admin') - ->post(route($routeName), $data); - } - - /** - * Undocumented function - * - * @param Application $app - * @return void - */ - public function getEnvironmentSetUp($app): void - { - $app['config']->set('app.key', 'base64:UTyp33UhGolgzCK5CJmT+hNHcA+dJyp3+oINtX+VoPI='); - } - - /** - * Create an Admin user model. - * @param array $data - * @return self - */ - protected function createAdminUser($data = ['is_super_admin' => 1]): self - { - if (null === $this->user) { - $this->user = AdminUser::factory()->create($data); - } - - return $this; - } -} diff --git a/webpack.mix.js b/webpack.mix.js deleted file mode 100644 index 2fe20a09c..000000000 --- a/webpack.mix.js +++ /dev/null @@ -1,31 +0,0 @@ -const mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel applications. By default, we are compiling the CSS - | file for the application as well as bundling up all the JS files. - | - */ - -let publicPath = '../../../public' - -if (mix.inProduction()) { - publicPath = 'dist/' -} -mix.setPublicPath(publicPath) - -filePath = 'vendor/avored/' - - -/******** AVORED COPY IMAGES **********/ -mix.copyDirectory('resources/images', publicPath + '/' + filePath + '/images') - - -mix.js('resources/js/app.js', filePath + 'js/app.js') - .postCss('resources/css/app.css', filePath + 'css/app.css', [ - require("tailwindcss"), - ]); \ No newline at end of file From ab1d241b91cb6f8eb4f206c642016135898d4dc2 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 10:13:09 +1200 Subject: [PATCH 02/48] fresh start --- composer.json | 59 +++++++++++++++++++++++ src/AvoRedServiceProvider.php | 18 +++++++ tests/AvoRedBaseTestCase.php | 91 +++++++++++++++++++++++++++++++++++ 3 files changed, 168 insertions(+) create mode 100644 composer.json create mode 100644 src/AvoRedServiceProvider.php create mode 100644 tests/AvoRedBaseTestCase.php diff --git a/composer.json b/composer.json new file mode 100644 index 000000000..fda0b7aa4 --- /dev/null +++ b/composer.json @@ -0,0 +1,59 @@ +{ + "name": "avored/framework", + "description": "AvoRed a laravel ecommerce framework", + "keywords": [ + "AvoRed", + "laravel", + "framework" + ], + "homepage": "https://github.com/avored/framework", + "license": "MIT", + "authors": [ + { + "name": "Purvesh", + "email": "ind.purvesh@gmail.com", + "role": "Developer" + } + ], + "require": { + "php": "^8.0|^8.1", + "illuminate/support": "^9.0" + }, + "require-dev": { + "brianium/paratest": "^6.4", + "friendsofphp/php-cs-fixer": "^3.8", + "nunomaduro/collision": "^6.2", + "orchestra/testbench": "7.5", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.23" + }, + "autoload": { + "psr-4": { + "AvoRed\\Framework\\": "src/", + "AvoRed\\Framework\\Database\\Factories\\": "database/factories/" + } + }, + "autoload-dev": { + "psr-4": { + "AvoRed\\Framework\\Tests\\": "tests" + } + }, + "scripts": { + "psalm": "vendor/bin/psalm --show-info=true", + "phpunit": "vendor/bin/phpunit", + "test": "./vendor/bin/testbench package:test --parallel --no-coverage", + "test-coverage": "vendor/bin/phpunit --coverage-html build/coverage" + }, + "config": { + "sort-packages": true + }, + "extra": { + "laravel": { + "providers": [ + "AvoRed\\Framework\\AvoRedServiceProvider" + ] + } + }, + "minimum-stability": "dev", + "prefer-stable": true +} diff --git a/src/AvoRedServiceProvider.php b/src/AvoRedServiceProvider.php new file mode 100644 index 000000000..21d1fd12f --- /dev/null +++ b/src/AvoRedServiceProvider.php @@ -0,0 +1,18 @@ +faker = $this->app->make(FakerGenerator::class); + // Factory::guessFactoryNamesUsing( + // fn (string $modelName) => 'AvoRed\\Framework\\Database\\Factories\\' . class_basename($modelName) . 'Factory' + // ); + $this->setUpDatabase(); + Notification::fake(); + } + + /** + * Reset the Database. + * @return void + */ + private function resetDatabase(): void + { + $this->artisan('migrate:fresh'); + } + + /** + * Setup database for the unit test. + * @return void + */ + protected function setUpDatabase(): void + { + // $this->loadLaravelMigrations(); + $this->resetDatabase(); + } + + /** + * Undocumented function + * + * @param Application $app + * @return void + */ + protected function getPackageProviders($app) + { + return [ + AvoRedServiceProvider::class, + ]; + } + + /** + * Get package aliases. + * + * @param \Illuminate\Foundation\Application $app + * + * @return array + */ + protected function getPackageAliases($app): array + { + return [ + // 'Breadcrumb' => \AvoRed\Framework\Breadcrumb\Breadcrumb::class, + // 'Menu' => \AvoRed\Framework\Menu\Menu::class, + // 'Payment' => \AvoRed\Framework\Payment\Payment::class, + // 'Permission' => \AvoRed\Framework\Permission\Permission::class, + // 'Shipping' => \AvoRed\Framework\Shipping\Shipping::class, + ]; + } + + /** + * Undocumented function + * + * @param Application $app + * @return void + */ + public function getEnvironmentSetUp($app): void + { + $app['config']->set('app.key', 'base64:UTyp33UhGolgzCK5CJmT+hNHcA+dJyp3+oINtX+VoPI='); + } +} From a396183dc31c3a2f1c409d043626882ab8d10157 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 10:16:18 +1200 Subject: [PATCH 03/48] wip --- .github/workflows/psalm.yml | 24 +++++++++++++++++++++++ .github/workflows/psalm.yml.dist | 33 -------------------------------- .github/workflows/tests.yml | 6 ++---- 3 files changed, 26 insertions(+), 37 deletions(-) create mode 100644 .github/workflows/psalm.yml delete mode 100644 .github/workflows/psalm.yml.dist diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml new file mode 100644 index 000000000..33345088c --- /dev/null +++ b/.github/workflows/psalm.yml @@ -0,0 +1,24 @@ +name: Check & fix styling + +on: [push] + +jobs: + php-cs-fixer: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + ref: ${{ github.head_ref }} + + - name: Run PHP CS Fixer + uses: docker://oskarstark/php-cs-fixer-ga + with: + args: --config=.php-cs-fixer.dist.php --allow-risky=yes + + - name: Commit changes + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Fix styling + diff --git a/.github/workflows/psalm.yml.dist b/.github/workflows/psalm.yml.dist deleted file mode 100644 index e48b24f54..000000000 --- a/.github/workflows/psalm.yml.dist +++ /dev/null @@ -1,33 +0,0 @@ -name: Psalm - -on: - push: - paths: - - '**.php' - - 'psalm.xml.dist' - -jobs: - psalm: - name: psalm - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.0' - extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick - coverage: none - - - name: Cache composer dependencies - uses: actions/cache@v2 - with: - path: vendor - key: composer-${{ hashFiles('composer.lock') }} - - - name: Run composer install - run: composer install -n --prefer-dist - - - name: Run psalm - run: ./vendor/bin/psalm --output-format=github diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 370d4887a..a430969f7 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,11 +15,9 @@ jobs: fail-fast: true matrix: os: [ubuntu-latest] - php: [8.0] - laravel: ['8.*', '9.*'] + php: [8.0, 8.1] + laravel: ['9.*'] include: - - laravel: '8.*' - testbench: '6.*' - laravel: '9.*' testbench: '7.*' From 38d0c5e8c9178d292ca37daf57005bce0735bc6d Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 10:18:08 +1200 Subject: [PATCH 04/48] wip --- .github/workflows/psalm.yml | 4 ++-- .php_cs.php | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml index 33345088c..f84d2092f 100644 --- a/.github/workflows/psalm.yml +++ b/.github/workflows/psalm.yml @@ -15,10 +15,10 @@ jobs: - name: Run PHP CS Fixer uses: docker://oskarstark/php-cs-fixer-ga with: - args: --config=.php-cs-fixer.dist.php --allow-risky=yes + args: --config=.php-cs-fixer.php --allow-risky=yes - name: Commit changes uses: stefanzweifel/git-auto-commit-action@v4 with: commit_message: Fix styling - + diff --git a/.php_cs.php b/.php_cs.php index 8d8a7901b..d96e7b2df 100644 --- a/.php_cs.php +++ b/.php_cs.php @@ -1,6 +1,9 @@ notPath('bootstrap/*') + ->notPath('storage/*') + ->notPath('resources/view/mail/*') ->in([ __DIR__ . '/src', __DIR__ . '/tests', @@ -12,7 +15,7 @@ return (new PhpCsFixer\Config()) ->setRules([ - '@PSR12' => true, + '@PSR2' => true, 'array_syntax' => ['syntax' => 'short'], 'ordered_imports' => ['sort_algorithm' => 'alpha'], 'no_unused_imports' => true, From 52bcd9cd411b297d4d34880ad05ec8d8b252548b Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 10:21:48 +1200 Subject: [PATCH 05/48] wip --- .github/workflows/psalm.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml index f84d2092f..17082e0a3 100644 --- a/.github/workflows/psalm.yml +++ b/.github/workflows/psalm.yml @@ -15,10 +15,9 @@ jobs: - name: Run PHP CS Fixer uses: docker://oskarstark/php-cs-fixer-ga with: - args: --config=.php-cs-fixer.php --allow-risky=yes + args: --config=.php_cs.php --allow-risky=yes - name: Commit changes uses: stefanzweifel/git-auto-commit-action@v4 with: commit_message: Fix styling - From 7244502e5449e598b51381a095dd61d794157ffe Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Fri, 13 May 2022 22:22:05 +0000 Subject: [PATCH 06/48] Fix styling --- .php-cs-fixer.cache | 1 + src/AvoRedServiceProvider.php | 3 --- tests/AvoRedBaseTestCase.php | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) create mode 100644 .php-cs-fixer.cache diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache new file mode 100644 index 000000000..f98e5f227 --- /dev/null +++ b/.php-cs-fixer.cache @@ -0,0 +1 @@ +{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":2129208412,"tests\/AvoRedBaseTestCase.php":2057796898}} \ No newline at end of file diff --git a/src/AvoRedServiceProvider.php b/src/AvoRedServiceProvider.php index 21d1fd12f..7ead5b6ca 100644 --- a/src/AvoRedServiceProvider.php +++ b/src/AvoRedServiceProvider.php @@ -5,14 +5,11 @@ class AvoRedServiceProvider extends ServiceProvider { - public function register() { - } public function boot() { - } } diff --git a/tests/AvoRedBaseTestCase.php b/tests/AvoRedBaseTestCase.php index b12ff9f0e..420349a86 100644 --- a/tests/AvoRedBaseTestCase.php +++ b/tests/AvoRedBaseTestCase.php @@ -1,10 +1,10 @@ Date: Sat, 14 May 2022 10:22:39 +1200 Subject: [PATCH 07/48] wip --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a430969f7..868799533 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -4,7 +4,7 @@ name: run-tests on: push: - branches: [main, develop] + branches: [main, develop, fresh] pull_request: branches: [main, develop] From c2534f7a168293b1275915280af3bb668cc19390 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 10:27:32 +1200 Subject: [PATCH 08/48] wip --- tests/ExampleTest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tests/ExampleTest.php diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php new file mode 100644 index 000000000..8490c2c61 --- /dev/null +++ b/tests/ExampleTest.php @@ -0,0 +1,12 @@ +assertTrue(true); + } +} From 41fbfab66e0780542d331a7977a41ece0d9084b7 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Fri, 13 May 2022 22:27:52 +0000 Subject: [PATCH 09/48] Fix styling --- .php-cs-fixer.cache | 2 +- tests/ExampleTest.php | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index f98e5f227..23edd242e 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":2129208412,"tests\/AvoRedBaseTestCase.php":2057796898}} \ No newline at end of file +{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":2129208412,"tests\/AvoRedBaseTestCase.php":2057796898,"tests\/ExampleTest.php":3276564100}} \ No newline at end of file diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php index 8490c2c61..ed4943c66 100644 --- a/tests/ExampleTest.php +++ b/tests/ExampleTest.php @@ -2,7 +2,6 @@ namespace AvoRed\Framework\Tests; - class ExampleTest extends AvoRedBaseTestCase { public function test_the_application_returns_a_successful_response() From 4211768522c3567a2cd729ff7430d9fd6a5219e5 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 10:33:59 +1200 Subject: [PATCH 10/48] wip --- composer.lock | 9178 +++++++++++++++++++++++++++++++++++++++++++++++++ phpunit.xml | 30 + 2 files changed, 9208 insertions(+) create mode 100644 composer.lock create mode 100644 phpunit.xml diff --git a/composer.lock b/composer.lock new file mode 100644 index 000000000..75eb5a240 --- /dev/null +++ b/composer.lock @@ -0,0 +1,9178 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "24f467fe9046ebf3d8e2ec07b0642940", + "packages": [ + { + "name": "brick/math", + "version": "0.9.3", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.9.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.3" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "time": "2021-08-15T20:50:18+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^3.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1" + }, + "time": "2021-08-13T13:06:58+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "vimeo/psalm": "^4.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:16:43+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-02-28T11:07:21+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2022-01-18T15:43:28+00:00" + }, + { + "name": "egulias/email-validator", + "version": "3.1.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ee0db30118f661fb166bcffbf5d82032df484697" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", + "reference": "ee0db30118f661fb166bcffbf5d82032df484697", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^1.2", + "php": ">=7.2", + "symfony/polyfill-intl-idn": "^1.15" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^8.5.8|^9.3.3", + "vimeo/psalm": "^4" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/3.1.2" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2021-10-11T09:18:27+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", + "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2022-02-20T15:07:15+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "0690bde05318336c7221785f2a932467f98b64ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", + "reference": "0690bde05318336c7221785f2a932467f98b64ca", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "phpoption/phpoption": "^1.8" + }, + "require-dev": { + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2021-11-21T21:41:47+00:00" + }, + { + "name": "laravel/framework", + "version": "v9.12.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "b5b5c635f1a93f277b5248725a1f7ffc97e20810" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/b5b5c635f1a93f277b5248725a1f7ffc97e20810", + "reference": "b5b5c635f1a93f277b5248725a1f7ffc97e20810", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^2.0", + "dragonmantank/cron-expression": "^3.1", + "egulias/email-validator": "^3.1", + "ext-mbstring": "*", + "ext-openssl": "*", + "fruitcake/php-cors": "^1.2", + "laravel/serializable-closure": "^1.0", + "league/commonmark": "^2.2", + "league/flysystem": "^3.0", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.53.1", + "php": "^8.0.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.2.2", + "symfony/console": "^6.0", + "symfony/error-handler": "^6.0", + "symfony/finder": "^6.0", + "symfony/http-foundation": "^6.0", + "symfony/http-kernel": "^6.0", + "symfony/mailer": "^6.0", + "symfony/mime": "^6.0", + "symfony/process": "^6.0", + "symfony/routing": "^6.0", + "symfony/var-dumper": "^6.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.198.1", + "doctrine/dbal": "^2.13.3|^3.1.4", + "fakerphp/faker": "^1.9.2", + "guzzlehttp/guzzle": "^7.2", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.4.4", + "orchestra/testbench-core": "^7.1", + "pda/pheanstalk": "^4.0", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^9.5.8", + "predis/predis": "^1.1.9", + "symfony/cache": "^6.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.198.1).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", + "ext-bcmath": "Required to use the multiple_of validation rule.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.2).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.4.4).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).", + "predis/predis": "Required to use the predis connector (^1.1.9).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2022-05-11T13:38:26+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/9e4b005daa20b0c161f3845040046dc9ddc1d74e", + "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "pestphp/pest": "^1.18", + "phpstan/phpstan": "^0.12.98", + "symfony/var-dumper": "^5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2022-02-11T19:23:53+00:00" + }, + { + "name": "league/commonmark", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "32a49eb2b38fe5e5c417ab748a45d0beaab97955" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/32a49eb2b38fe5e5c417ab748a45d0beaab97955", + "reference": "32a49eb2b38fe5e5c417ab748a45d0beaab97955", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^0.12.88 || ^1.0.0", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2022-04-07T22:37:05+00:00" + }, + { + "name": "league/config", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.90", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2021-08-14T12:15:32+00:00" + }, + { + "name": "league/flysystem", + "version": "3.0.19", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "670df21225d68d165a8df38587ac3f41caf608f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/670df21225d68d165a8df38587ac3f41caf608f8", + "reference": "670df21225d68d165a8df38587ac3f41caf608f8", + "shasum": "" + }, + "require": { + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5", + "async-aws/simple-s3": "^1.0", + "aws/aws-sdk-php": "^3.198.1", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "microsoft/azure-storage-blob": "^1.1", + "phpseclib/phpseclib": "^2.0", + "phpstan/phpstan": "^0.12.26", + "phpunit/phpunit": "^9.5.11", + "sabre/dav": "^4.3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.0.19" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2022-05-03T21:19:02+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2022-04-17T13:12:02+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "247918972acd74356b0a91dfaa5adcaec069b6c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/247918972acd74356b0a91dfaa5adcaec069b6c0", + "reference": "247918972acd74356b0a91dfaa5adcaec069b6c0", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.6.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2022-05-10T09:36:00+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.58.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "97a34af22bde8d0ac20ab34b29d7bfe360902055" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/97a34af22bde8d0ac20ab34b29d7bfe360902055", + "reference": "97a34af22bde8d0ac20ab34b29d7bfe360902055", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.0", + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.54 || ^1.0", + "phpunit/php-file-iterator": "^2.0.5", + "phpunit/phpunit": "^7.5.20 || ^8.5.23", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2022-04-25T19:31:17+00:00" + }, + { + "name": "nette/schema", + "version": "v1.2.2", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", + "shasum": "" + }, + "require": { + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": ">=7.1 <8.2" + }, + "require-dev": { + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^0.12", + "tracy/tracy": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.2" + }, + "time": "2021-10-15T11:40:02+00:00" + }, + { + "name": "nette/utils", + "version": "v3.2.7", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", + "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", + "shasum": "" + }, + "require": { + "php": ">=7.2 <8.2" + }, + "conflict": { + "nette/di": "<3.0.6" + }, + "require-dev": { + "nette/tester": "~2.0", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v3.2.7" + }, + "time": "2022-01-24T11:29:14+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2021-12-04T23:24:31+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "ramsey/collection", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/captainhook": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "ergebnis/composer-normalize": "^2.6", + "fakerphp/faker": "^1.5", + "hamcrest/hamcrest-php": "^2", + "jangregor/phpstan-prophecy": "^0.8", + "mockery/mockery": "^1.3", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-mockery": "^0.12.5", + "phpstan/phpstan-phpunit": "^0.12.11", + "phpunit/phpunit": "^8.5 || ^9", + "psy/psysh": "^0.10.4", + "slevomat/coding-standard": "^6.3", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.2.2" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2021-10-10T03:01:02+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.3.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8505afd4fea63b81a85d3b7b53ac3cb8dc347c28", + "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28", + "shasum": "" + }, + "require": { + "brick/math": "^0.8 || ^0.9", + "ext-ctype": "*", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.3.1" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2022-03-27T21:42:02+00:00" + }, + { + "name": "symfony/console", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "0d00aa289215353aa8746a31d101f8e60826285c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/0d00aa289215353aa8746a31d101f8e60826285c", + "reference": "0d00aa289215353aa8746a31d101f8e60826285c", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.4|^6.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-20T15:01:42+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", + "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", + "shasum": "" + }, + "require": { + "php": ">=8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v6.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", + "shasum": "" + }, + "require": { + "php": ">=8.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "5e2795163acbd13b3cd46835c9f8f6c5d0a3a280" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/5e2795163acbd13b3cd46835c9f8f6c5d0a3a280", + "reference": "5e2795163acbd13b3cd46835c9f8f6c5d0a3a280", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:11:42+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", + "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/event-dispatcher-contracts": "^2|^3" + }, + "conflict": { + "symfony/dependency-injection": "<5.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^5.4|^6.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "7bc61cc2db649b4637d331240c5346dcc7708051" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051", + "reference": "7bc61cc2db649b4637d331240c5346dcc7708051", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "af7edab28d17caecd1f40a9219fc646ae751c21f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/af7edab28d17caecd1f40a9219fc646ae751c21f", + "reference": "af7edab28d17caecd1f40a9219fc646ae751c21f", + "shasum": "" + }, + "require": { + "php": ">=8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-15T08:07:58+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "c9c86b02d7ef6f44f3154acc7de42831518afe7c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c9c86b02d7ef6f44f3154acc7de42831518afe7c", + "reference": "c9c86b02d7ef6f44f3154acc7de42831518afe7c", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.1" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/cache": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-22T08:18:02+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "7aaf1cdc9cc2ad47e926f624efcb679883a39ca7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7aaf1cdc9cc2ad47e926f624efcb679883a39ca7", + "reference": "7aaf1cdc9cc2ad47e926f624efcb679883a39ca7", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "psr/log": "^1|^2|^3", + "symfony/error-handler": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<5.4", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-27T17:26:02+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "706af6b3e99ebcbc639c9c664f5579aaa869409b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/706af6b3e99ebcbc639c9c664f5579aaa869409b", + "reference": "706af6b3e99ebcbc639c9c664f5579aaa869409b", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3", + "php": ">=8.0.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" + }, + "conflict": { + "symfony/http-kernel": "<5.4" + }, + "require-dev": { + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/messenger": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-27T17:10:30+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1", + "reference": "c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:11:42+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-09-14T14:02:44+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-27T09:17:38+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-09-13T13:58:11+00:00" + }, + { + "name": "symfony/process", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "d074154ea8b1443a96391f6e39f9e547b2dd01b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/d074154ea8b1443a96391f6e39f9e547b2dd01b9", + "reference": "d074154ea8b1443a96391f6e39f9e547b2dd01b9", + "shasum": "" + }, + "require": { + "php": ">=8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:11:42+00:00" + }, + { + "name": "symfony/routing", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "74c40c9fc334acc601a32fcf4274e74fb3bac11e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/74c40c9fc334acc601a32fcf4274e74fb3bac11e", + "reference": "74c40c9fc334acc601a32fcf4274e74fb3bac11e", + "shasum": "" + }, + "require": { + "php": ">=8.0.2" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" + }, + "suggest": { + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-22T08:18:02+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e517458f278c2131ca9f262f8fbaf01410f2c65c", + "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "psr/container": "^2.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.0.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:10:05+00:00" + }, + { + "name": "symfony/string", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "ac0aa5c2282e0de624c175b68d13f2c8f2e2649d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/ac0aa5c2282e0de624c175b68d13f2c8f2e2649d", + "reference": "ac0aa5c2282e0de624c175b68d13f2c8f2e2649d", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.0" + }, + "require-dev": { + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/translation-contracts": "^2.0|^3.0", + "symfony/var-exporter": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-22T08:18:02+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "3d38cf8f8834148c4457681d539bc204de701501" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/3d38cf8f8834148c4457681d539bc204de701501", + "reference": "3d38cf8f8834148c4457681d539bc204de701501", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.3|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^5.4|^6.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-22T08:18:02+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9", + "reference": "c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9", + "shasum": "" + }, + "require": { + "php": ">=8.0.2" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.0.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "fa61dfb4bd3068df2492013dc65f3190e9f550c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/fa61dfb4bd3068df2492013dc65f3190e9f550c0", + "reference": "fa61dfb4bd3068df2492013dc65f3190e9f550c0", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<5.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-26T13:22:23+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + }, + "time": "2021-12-08T09:12:39+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.4.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.0.2", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-filter": "*", + "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2021-12-12T23:22:04+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-03-08T17:03:00+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" + } + ], + "packages-dev": [ + { + "name": "amphp/amp", + "version": "v2.6.2", + "source": { + "type": "git", + "url": "https://github.com/amphp/amp.git", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1", + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^7 | ^8 | ^9", + "psalm/phar": "^3.11@dev", + "react/promise": "^2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "files": [ + "lib/functions.php", + "lib/Internal/functions.php" + ], + "psr-4": { + "Amp\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "https://amphp.org/amp", + "keywords": [ + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" + ], + "support": { + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/amp/issues", + "source": "https://github.com/amphp/amp/tree/v2.6.2" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2022-02-20T17:52:18+00:00" + }, + { + "name": "amphp/byte-stream", + "version": "v1.8.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/byte-stream.git", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", + "shasum": "" + }, + "require": { + "amphp/amp": "^2", + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1.4", + "friendsofphp/php-cs-fixer": "^2.3", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^6 || ^7 || ^8", + "psalm/phar": "^3.11.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "files": [ + "lib/functions.php" + ], + "psr-4": { + "Amp\\ByteStream\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "http://amphp.org/byte-stream", + "keywords": [ + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" + ], + "support": { + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/byte-stream/issues", + "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2021-03-30T17:13:30+00:00" + }, + { + "name": "brianium/paratest", + "version": "v6.4.4", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "589cdb23728b2a19872945580b95d8aa2c6619da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/589cdb23728b2a19872945580b95d8aa2c6619da", + "reference": "589cdb23728b2a19872945580b95d8aa2c6619da", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "php": "^7.3 || ^8.0", + "phpunit/php-code-coverage": "^9.2.11", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-timer": "^5.0.3", + "phpunit/phpunit": "^9.5.14", + "sebastian/environment": "^5.1.3", + "symfony/console": "^5.4.0 || ^6.0.0", + "symfony/process": "^5.4.0 || ^6.0.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0.0", + "ext-posix": "*", + "infection/infection": "^0.26.5", + "malukenho/mcbumpface": "^1.1.5", + "squizlabs/php_codesniffer": "^3.6.2", + "symfony/filesystem": "^v5.4.0 || ^6.0.0", + "vimeo/psalm": "^4.20.0" + }, + "bin": [ + "bin/paratest" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v6.4.4" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2022-03-28T07:55:11+00:00" + }, + { + "name": "composer/package-versions-deprecated", + "version": "1.11.99.5", + "source": { + "type": "git", + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" + }, + "require-dev": { + "composer/composer": "^1.9.3 || ^2.0@dev", + "ext-zip": "^1.13", + "phpunit/phpunit": "^6.5 || ^7" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "support": { + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-01-17T14:14:24+00:00" + }, + { + "name": "composer/pcre", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.0.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-02-25T20:21:48+00:00" + }, + { + "name": "composer/semver", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-04-01T19:23:25+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "ced299686f41dce890debac69273b47ffe98a40c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", + "shasum": "" + }, + "require": { + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-02-25T21:32:43+00:00" + }, + { + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", + "source": { + "type": "git", + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "XdgBaseDir\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "implementation of xdg base directory specification for php", + "support": { + "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", + "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" + }, + "time": "2019-12-04T15:06:13+00:00" + }, + { + "name": "doctrine/annotations", + "version": "1.13.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", + "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" + }, + "require-dev": { + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^6.0 || ^8.1", + "phpstan/phpstan": "^0.12.20", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", + "symfony/cache": "^4.4 || ^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.13.2" + }, + "time": "2021-08-05T19:00:23+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-03-03T08:28:38+00:00" + }, + { + "name": "facade/ignition-contracts", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition-contracts.git", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^v2.15.8", + "phpunit/phpunit": "^9.3.11", + "vimeo/psalm": "^3.17.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Facade\\IgnitionContracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://flareapp.io", + "role": "Developer" + } + ], + "description": "Solution contracts for Ignition", + "homepage": "https://github.com/facade/ignition-contracts", + "keywords": [ + "contracts", + "flare", + "ignition" + ], + "support": { + "issues": "https://github.com/facade/ignition-contracts/issues", + "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" + }, + "time": "2020-10-16T08:27:54+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.19.0", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "symfony/phpunit-bridge": "^4.4 || ^5.2" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.19-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" + }, + "time": "2022-02-02T17:38:57+00:00" + }, + { + "name": "felixfbecker/advanced-json-rpc", + "version": "v3.2.1", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "shasum": "" + }, + "require": { + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "php": "^7.1 || ^8.0", + "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "AdvancedJsonRpc\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "A more advanced JSONRPC implementation", + "support": { + "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", + "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" + }, + "time": "2021-06-11T22:34:44+00:00" + }, + { + "name": "felixfbecker/language-server-protocol", + "version": "v1.5.2", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-language-server-protocol.git", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpstan/phpstan": "*", + "squizlabs/php_codesniffer": "^3.1", + "vimeo/psalm": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "LanguageServerProtocol\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "PHP classes for the Language Server Protocol", + "keywords": [ + "language", + "microsoft", + "php", + "server" + ], + "support": { + "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" + }, + "time": "2022-03-02T22:36:06+00:00" + }, + { + "name": "filp/whoops", + "version": "2.14.5", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.14.5" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2022-01-07T12:00:00+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3", + "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3", + "shasum": "" + }, + "require": { + "composer/semver": "^3.2", + "composer/xdebug-handler": "^3.0.3", + "doctrine/annotations": "^1.13", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0", + "php-cs-fixer/diff": "^2.0", + "symfony/console": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/options-resolver": "^5.4 || ^6.0", + "symfony/polyfill-mbstring": "^1.23", + "symfony/polyfill-php80": "^1.25", + "symfony/polyfill-php81": "^1.25", + "symfony/process": "^5.4 || ^6.0", + "symfony/stopwatch": "^5.4 || ^6.0" + }, + "require-dev": { + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^1.5", + "mikey179/vfsstream": "^1.6.10", + "php-coveralls/php-coveralls": "^2.5.2", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", + "phpspec/prophecy": "^1.15", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "phpunitgoodpractices/polyfill": "^1.5", + "phpunitgoodpractices/traits": "^1.9.1", + "symfony/phpunit-bridge": "^6.0", + "symfony/yaml": "^5.4 || ^6.0" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "support": { + "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", + "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.8.0" + }, + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2022-03-18T17:20:59+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2", + "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.2.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2022-03-20T21:55:58+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": "^7.3 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "issues": "https://github.com/mockery/mockery/issues", + "source": "https://github.com/mockery/mockery/tree/1.5.0" + }, + "time": "2022-01-20T13:18:17+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2022-03-03T13:19:32+00:00" + }, + { + "name": "netresearch/jsonmapper", + "version": "v4.0.0", + "source": { + "type": "git", + "url": "https://github.com/cweiske/jsonmapper.git", + "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", + "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "squizlabs/php_codesniffer": "~3.5" + }, + "type": "library", + "autoload": { + "psr-0": { + "JsonMapper": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Christian Weiske", + "email": "cweiske@cweiske.de", + "homepage": "http://github.com/cweiske/jsonmapper/", + "role": "Developer" + } + ], + "description": "Map nested JSON structures onto PHP classes", + "support": { + "email": "cweiske@cweiske.de", + "issues": "https://github.com/cweiske/jsonmapper/issues", + "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0" + }, + "time": "2020-12-01T19:48:11+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.13.2", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + }, + "time": "2021-11-30T19:35:32+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v6.2.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "c379636dc50e829edb3a8bcb944a01aa1aed8f25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/c379636dc50e829edb3a8bcb944a01aa1aed8f25", + "reference": "c379636dc50e829edb3a8bcb944a01aa1aed8f25", + "shasum": "" + }, + "require": { + "facade/ignition-contracts": "^1.0.2", + "filp/whoops": "^2.14.5", + "php": "^8.0.0", + "symfony/console": "^6.0.2" + }, + "require-dev": { + "brianium/paratest": "^6.4.1", + "laravel/framework": "^9.7", + "nunomaduro/larastan": "^1.0.2", + "nunomaduro/mock-final-classes": "^1.1.0", + "orchestra/testbench": "^7.3.0", + "phpunit/phpunit": "^9.5.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "6.x-dev" + }, + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2022-04-05T15:31:38+00:00" + }, + { + "name": "openlss/lib-array2xml", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/nullivex/lib-array2xml.git", + "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", + "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "autoload": { + "psr-0": { + "LSS": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Bryan Tong", + "email": "bryan@nullivex.com", + "homepage": "https://www.nullivex.com" + }, + { + "name": "Tony Butler", + "email": "spudz76@gmail.com", + "homepage": "https://www.nullivex.com" + } + ], + "description": "Array2XML conversion library credit to lalit.org", + "homepage": "https://www.nullivex.com", + "keywords": [ + "array", + "array conversion", + "xml", + "xml conversion" + ], + "support": { + "issues": "https://github.com/nullivex/lib-array2xml/issues", + "source": "https://github.com/nullivex/lib-array2xml/tree/master" + }, + "time": "2019-03-29T20:06:56+00:00" + }, + { + "name": "orchestra/testbench", + "version": "v7.5.0", + "source": { + "type": "git", + "url": "https://github.com/orchestral/testbench.git", + "reference": "39e4c9b147950a555e9f2b44035d5b06672f6951" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/testbench/zipball/39e4c9b147950a555e9f2b44035d5b06672f6951", + "reference": "39e4c9b147950a555e9f2b44035d5b06672f6951", + "shasum": "" + }, + "require": { + "fakerphp/faker": "^1.9.2", + "laravel/framework": "^9.12", + "mockery/mockery": "^1.4.4", + "orchestra/testbench-core": "^7.5", + "php": "^8.0", + "phpunit/phpunit": "^9.5.10", + "spatie/laravel-ray": "^1.28", + "symfony/process": "^6.0", + "symfony/yaml": "^6.0", + "vlucas/phpdotenv": "^5.4.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.0-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" + } + ], + "description": "Laravel Testing Helper for Packages Development", + "homepage": "https://packages.tools/testbench/", + "keywords": [ + "BDD", + "TDD", + "laravel", + "orchestra-platform", + "orchestral", + "testing" + ], + "support": { + "issues": "https://github.com/orchestral/testbench/issues", + "source": "https://github.com/orchestral/testbench/tree/v7.5.0" + }, + "funding": [ + { + "url": "https://paypal.me/crynobone", + "type": "custom" + }, + { + "url": "https://liberapay.com/crynobone", + "type": "liberapay" + } + ], + "time": "2022-05-10T23:49:37+00:00" + }, + { + "name": "orchestra/testbench-core", + "version": "v7.5.0", + "source": { + "type": "git", + "url": "https://github.com/orchestral/testbench-core.git", + "reference": "72eb3e159d17ff42bf786e9cea83f55e9c297380" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/72eb3e159d17ff42bf786e9cea83f55e9c297380", + "reference": "72eb3e159d17ff42bf786e9cea83f55e9c297380", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "fakerphp/faker": "^1.9.2", + "laravel/framework": "^9.12", + "laravel/laravel": "9.x-dev", + "mockery/mockery": "^1.4.4", + "orchestra/canvas": "^7.0", + "phpunit/phpunit": "^9.5.10 || ^10.0", + "symfony/process": "^6.0", + "symfony/yaml": "^6.0", + "vlucas/phpdotenv": "^5.4.1" + }, + "suggest": { + "brianium/paratest": "Allow using parallel tresting (^6.4).", + "fakerphp/faker": "Allow using Faker for testing (^1.9.2).", + "laravel/framework": "Required for testing (^9.12).", + "mockery/mockery": "Allow using Mockery for testing (^1.4.4).", + "nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^6.2).", + "orchestra/testbench-browser-kit": "Allow using legacy Laravel BrowserKit for testing (^7.0).", + "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^7.0).", + "phpunit/phpunit": "Allow using PHPUnit for testing (^9.5.10|^10.0).", + "symfony/yaml": "Required for CLI Commander (^6.0).", + "vlucas/phpdotenv": "Required for CLI Commander (^5.4.1)." + }, + "bin": [ + "testbench" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.0-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Orchestra\\Testbench\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" + } + ], + "description": "Testing Helper for Laravel Development", + "homepage": "https://packages.tools/testbench", + "keywords": [ + "BDD", + "TDD", + "laravel", + "orchestra-platform", + "orchestral", + "testing" + ], + "support": { + "issues": "https://github.com/orchestral/testbench/issues", + "source": "https://github.com/orchestral/testbench-core" + }, + "funding": [ + { + "url": "https://paypal.me/crynobone", + "type": "custom" + }, + { + "url": "https://liberapay.com/crynobone", + "type": "liberapay" + } + ], + "time": "2022-05-10T22:45:44+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "php-cs-fixer/diff", + "version": "v2.0.2", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/diff.git", + "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3", + "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", + "symfony/process": "^3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "sebastian/diff v3 backport support for PHP 5.6+", + "homepage": "https://github.com/PHP-CS-Fixer", + "keywords": [ + "diff" + ], + "support": { + "issues": "https://github.com/PHP-CS-Fixer/diff/issues", + "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2" + }, + "time": "2020-10-14T08:32:19+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "77a32518733312af16a44300404e945338981de3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + }, + "time": "2022-03-15T21:29:03+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-07T09:28:20+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.20", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.0", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-04-01T12:37:26+00:00" + }, + { + "name": "pimple/pimple", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1 || ^2.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^5.4@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Pimple": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Pimple, a simple Dependency Injection Container", + "homepage": "https://pimple.symfony.com", + "keywords": [ + "container", + "dependency injection" + ], + "support": { + "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" + }, + "time": "2021-10-28T11:13:42+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/master" + }, + "time": "2019-04-30T12:38:16+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-04-03T09:37:03+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-11-11T14:18:36+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-02-14T08:28:10+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-15T09:54:48+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", + "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "phpunit/phpunit": "^9.3", + "symfony/var-dumper": "^5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/backtrace/issues", + "source": "https://github.com/spatie/backtrace/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2021-11-09T10:57:15+00:00" + }, + { + "name": "spatie/laravel-ray", + "version": "1.29.6", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ray.git", + "reference": "d9ec9d8550dfab362167c866fbd24d4b0d4d1e02" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/d9ec9d8550dfab362167c866fbd24d4b0d4d1e02", + "reference": "d9ec9d8550dfab362167c866fbd24d4b0d4d1e02", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/contracts": "^7.20|^8.19|^9.0", + "illuminate/database": "^7.20|^8.19|^9.0", + "illuminate/queue": "^7.20|^8.19|^9.0", + "illuminate/support": "^7.20|^8.19|^9.0", + "php": "^7.3|^8.0", + "spatie/backtrace": "^1.0", + "spatie/ray": "^1.33", + "symfony/stopwatch": "4.2|^5.1|^6.0", + "zbateson/mail-mime-parser": "^1.3.1|^2.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.3", + "laravel/framework": "^7.20|^8.19|^9.0", + "orchestra/testbench-core": "^5.0|^6.0|^7.0", + "phpstan/phpstan": "^0.12.93", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.29.x-dev" + }, + "laravel": { + "providers": [ + "Spatie\\LaravelRay\\RayServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\LaravelRay\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily debug Laravel apps", + "homepage": "https://github.com/spatie/laravel-ray", + "keywords": [ + "laravel-ray", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-ray/issues", + "source": "https://github.com/spatie/laravel-ray/tree/1.29.6" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2022-04-15T07:18:37+00:00" + }, + { + "name": "spatie/macroable", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/macroable.git", + "reference": "ec2c320f932e730607aff8052c44183cf3ecb072" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/macroable/zipball/ec2c320f932e730607aff8052c44183cf3ecb072", + "reference": "ec2c320f932e730607aff8052c44183cf3ecb072", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.0|^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Macroable\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A trait to dynamically add methods to a class", + "homepage": "https://github.com/spatie/macroable", + "keywords": [ + "macroable", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/macroable/issues", + "source": "https://github.com/spatie/macroable/tree/2.0.0" + }, + "time": "2021-03-26T22:39:02+00:00" + }, + { + "name": "spatie/ray", + "version": "1.34.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/ray.git", + "reference": "ef5836b44f7bc4a0162f1a590cbaf33e8ab655dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ray/zipball/ef5836b44f7bc4a0162f1a590cbaf33e8ab655dd", + "reference": "ef5836b44f7bc4a0162f1a590cbaf33e8ab655dd", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "php": "^7.3|^8.0", + "ramsey/uuid": "^3.0|^4.1", + "spatie/backtrace": "^1.1", + "spatie/macroable": "^1.0|^2.0", + "symfony/stopwatch": "^4.0|^5.1|^6.0", + "symfony/var-dumper": "^4.2|^5.1|^6.0" + }, + "require-dev": { + "illuminate/support": "6.x|^8.18|^9.0", + "nesbot/carbon": "^2.43", + "phpstan/phpstan": "^0.12.92", + "phpunit/phpunit": "^9.5", + "spatie/phpunit-snapshot-assertions": "^4.2", + "spatie/test-time": "^1.2" + }, + "type": "library", + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\Ray\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Debug with Ray to fix problems faster", + "homepage": "https://github.com/spatie/ray", + "keywords": [ + "ray", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/ray/issues", + "source": "https://github.com/spatie/ray/tree/1.34.2" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2022-04-08T13:41:27+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v6.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "6c9e4c41f2c51dfde3db298594ed9cba55dbf5ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/6c9e4c41f2c51dfde3db298594ed9cba55dbf5ff", + "reference": "6c9e4c41f2c51dfde3db298594ed9cba55dbf5ff", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v6.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-01T12:54:51+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "51f7006670febe4cbcbae177cbffe93ff833250d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/51f7006670febe4cbcbae177cbffe93ff833250d", + "reference": "51f7006670febe4cbcbae177cbffe93ff833250d", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v6.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:55:41+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f1aed619e28cb077fc83fac8c4c0383578356e40", + "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-iconv": "*" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-04T09:04:05+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v6.0.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "f2c1780607ec6502f2121d9729fd8150a655d337" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f2c1780607ec6502f2121d9729fd8150a655d337", + "reference": "f2c1780607ec6502f2121d9729fd8150a655d337", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/service-contracts": "^1|^2|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v6.0.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-02-21T17:15:17+00:00" + }, + { + "name": "symfony/yaml", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e77f3ea0b21141d771d4a5655faa54f692b34af5", + "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v6.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-26T17:23:29+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + }, + { + "name": "vimeo/psalm", + "version": "4.23.0", + "source": { + "type": "git", + "url": "https://github.com/vimeo/psalm.git", + "reference": "f1fe6ff483bf325c803df9f510d09a03fd796f88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/f1fe6ff483bf325c803df9f510d09a03fd796f88", + "reference": "f1fe6ff483bf325c803df9f510d09a03fd796f88", + "shasum": "" + }, + "require": { + "amphp/amp": "^2.4.2", + "amphp/byte-stream": "^1.5", + "composer/package-versions-deprecated": "^1.8.0", + "composer/semver": "^1.4 || ^2.0 || ^3.0", + "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0", + "dnoegel/php-xdg-base-dir": "^0.1.1", + "ext-ctype": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-tokenizer": "*", + "felixfbecker/advanced-json-rpc": "^3.0.3", + "felixfbecker/language-server-protocol": "^1.5", + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "nikic/php-parser": "^4.13", + "openlss/lib-array2xml": "^1.0", + "php": "^7.1|^8", + "sebastian/diff": "^3.0 || ^4.0", + "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0", + "symfony/polyfill-php80": "^1.25", + "webmozart/path-util": "^2.3" + }, + "provide": { + "psalm/psalm": "self.version" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "brianium/paratest": "^4.0||^6.0", + "ext-curl": "*", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpdocumentor/reflection-docblock": "^5", + "phpmyadmin/sql-parser": "5.1.0||dev-master", + "phpspec/prophecy": ">=1.9.0", + "phpunit/phpunit": "^9.0", + "psalm/plugin-phpunit": "^0.16", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "symfony/process": "^4.3 || ^5.0 || ^6.0", + "weirdan/prophecy-shim": "^1.0 || ^2.0" + }, + "suggest": { + "ext-curl": "In order to send data to shepherd", + "ext-igbinary": "^2.0.5 is required, used to serialize caching data" + }, + "bin": [ + "psalm", + "psalm-language-server", + "psalm-plugin", + "psalm-refactor", + "psalter" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev", + "dev-3.x": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php", + "src/spl_object_id.php" + ], + "psr-4": { + "Psalm\\": "src/Psalm/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Brown" + } + ], + "description": "A static analysis tool for finding errors in PHP applications", + "keywords": [ + "code", + "inspection", + "php" + ], + "support": { + "issues": "https://github.com/vimeo/psalm/issues", + "source": "https://github.com/vimeo/psalm/tree/4.23.0" + }, + "time": "2022-04-28T17:35:49+00:00" + }, + { + "name": "webmozart/path-util", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/path-util.git", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "webmozart/assert": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\PathUtil\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", + "support": { + "issues": "https://github.com/webmozart/path-util/issues", + "source": "https://github.com/webmozart/path-util/tree/2.3.0" + }, + "abandoned": "symfony/filesystem", + "time": "2015-12-17T08:42:14+00:00" + }, + { + "name": "zbateson/mail-mime-parser", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/zbateson/mail-mime-parser.git", + "reference": "24955de7ec352b3258c1d4551efd21202cb8710c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/24955de7ec352b3258c1d4551efd21202cb8710c", + "reference": "24955de7ec352b3258c1d4551efd21202cb8710c", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^1.7.0|^2.0", + "php": ">=5.4", + "pimple/pimple": "^3.0", + "zbateson/mb-wrapper": "^1.0.1", + "zbateson/stream-decorators": "^1.0.6" + }, + "require-dev": { + "mikey179/vfsstream": "^1.6.0", + "sanmai/phpunit-legacy-adapter": "^6.3 || ^8.2" + }, + "suggest": { + "ext-iconv": "For best support/performance", + "ext-mbstring": "For best support/performance" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\MailMimeParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + }, + { + "name": "Contributors", + "homepage": "https://github.com/zbateson/mail-mime-parser/graphs/contributors" + } + ], + "description": "MIME email message parser", + "homepage": "https://mail-mime-parser.org", + "keywords": [ + "MimeMailParser", + "email", + "mail", + "mailparse", + "mime", + "mimeparse", + "parser", + "php-imap" + ], + "support": { + "docs": "https://mail-mime-parser.org/#usage-guide", + "issues": "https://github.com/zbateson/mail-mime-parser/issues", + "source": "https://github.com/zbateson/mail-mime-parser" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2022-02-22T21:35:59+00:00" + }, + { + "name": "zbateson/mb-wrapper", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/zbateson/mb-wrapper.git", + "reference": "bfd45fb3e2a8cf4c496b2c3ebd63b5f815721498" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/bfd45fb3e2a8cf4c496b2c3ebd63b5f815721498", + "reference": "bfd45fb3e2a8cf4c496b2c3ebd63b5f815721498", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "symfony/polyfill-iconv": "^1.9", + "symfony/polyfill-mbstring": "^1.9" + }, + "require-dev": { + "sanmai/phpunit-legacy-adapter": "^6.3 || ^8" + }, + "suggest": { + "ext-iconv": "For best support/performance", + "ext-mbstring": "For best support/performance" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\MbWrapper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + } + ], + "description": "Wrapper for mbstring with fallback to iconv for encoding conversion and string manipulation", + "keywords": [ + "charset", + "encoding", + "http", + "iconv", + "mail", + "mb", + "mb_convert_encoding", + "mbstring", + "mime", + "multibyte", + "string" + ], + "support": { + "issues": "https://github.com/zbateson/mb-wrapper/issues", + "source": "https://github.com/zbateson/mb-wrapper/tree/1.1.1" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2021-11-22T21:59:45+00:00" + }, + { + "name": "zbateson/stream-decorators", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/zbateson/stream-decorators.git", + "reference": "3403c4323bd1cd15fe54348b031b26b064c706af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/3403c4323bd1cd15fe54348b031b26b064c706af", + "reference": "3403c4323bd1cd15fe54348b031b26b064c706af", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^1.7.0|^2.0", + "php": ">=5.4", + "zbateson/mb-wrapper": "^1.0.0" + }, + "require-dev": { + "sanmai/phpunit-legacy-adapter": "^6.3 || ^8" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\StreamDecorators\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + } + ], + "description": "PHP psr7 stream decorators for mime message part streams", + "keywords": [ + "base64", + "charset", + "decorators", + "mail", + "mime", + "psr7", + "quoted-printable", + "stream", + "uuencode" + ], + "support": { + "issues": "https://github.com/zbateson/stream-decorators/issues", + "source": "https://github.com/zbateson/stream-decorators/tree/1.0.6" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2021-07-08T19:01:59+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.0|^8.1" + }, + "platform-dev": [], + "plugin-api-version": "2.1.0" +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 000000000..1599a36be --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,30 @@ + + + + + tests + + + + + + + + + + + + + + ./src + + + + + + + + + + + From acb820ae8af01e39f21dd55dd331253d3cfc593a Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 10:38:08 +1200 Subject: [PATCH 11/48] wip --- phpunit.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpunit.xml b/phpunit.xml index 1599a36be..459689057 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -10,7 +10,7 @@ - + From 056b9723dc4f6ba33da66873d03dfd91fb64e16f Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 11:49:45 +1200 Subject: [PATCH 12/48] wip --- build/logs/clover.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 build/logs/clover.xml diff --git a/build/logs/clover.xml b/build/logs/clover.xml new file mode 100644 index 000000000..e69de29bb From 0b9ac0c7cfe77119639b57799156460ed6d033fe Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 11:52:49 +1200 Subject: [PATCH 13/48] wip --- build/logs/clover.xml | 4142 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 4142 insertions(+) diff --git a/build/logs/clover.xml b/build/logs/clover.xml index e69de29bb..01a38102e 100644 --- a/build/logs/clover.xml +++ b/build/logs/clover.xml @@ -0,0 +1,4142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From c0bb6ae15994dbf40733474af8979405b749bdf4 Mon Sep 17 00:00:00 2001 From: Github Actions Bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 May 2022 23:53:46 +0000 Subject: [PATCH 14/48] Update code coverage badge --- badge-coverage.svg | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 badge-coverage.svg diff --git a/badge-coverage.svg b/badge-coverage.svg new file mode 100644 index 000000000..66c286682 --- /dev/null +++ b/badge-coverage.svg @@ -0,0 +1,16 @@ + + + + + + + + + coverage + coverage + + + 55 % + 55 % + + \ No newline at end of file From 4d66a6a3ea682471f6746e421fbb13379c036f4c Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 11:57:25 +1200 Subject: [PATCH 15/48] wip --- README.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..5da5112b0 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +

+ AvoRed +

+ +

+ CircleCI + Total Downloads + Latest Stable Version + License + Test Coverage +

+ + +# Core package for AvoRed Shopping Cart +AvoRed Framework contains the core features for the AvoRed E-commerce for Laravel. It is the base behind the AvoRed and Laravel Ecommerce. + +## Requirements +At this stage the minimum Lavarel version required is 5.8. If you are using an older version, let us know at our [Discussion Forum](https://avored.com/discussion). We can test if it works and add support for that version too. + +## Installation +The AvoRed E-commerce framework is provided as a composer package, so it makes installation of AvoRed as easy as: + + composer require avored/framework + +Once this is finished, you will need to run a few commands to finish up and then you are ready to roll. + +## Publish the files +Publish the AvoRed E-commerce framework config file and assets (JS/CSS and images): + + php artisan vendor:publish --provider="AvoRed\Framework\AvoRedServiceProvider" + +Once all the files are published, we can run the command to install the required database tables. + + php artisan avored:install + +We are almost there. Now create your Administrator Account by running: + + php artisan avored:admin:make + + +That's It. + +Now visit: + + yoursiteurl.com/admin From ed11bce9ad43eaf5609e7acdbdd6f9efc232b88c Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 11:58:32 +1200 Subject: [PATCH 16/48] added logo --- logo.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 logo.svg diff --git a/logo.svg b/logo.svg new file mode 100644 index 000000000..7c4930529 --- /dev/null +++ b/logo.svg @@ -0,0 +1 @@ + From c86ebe2dc891dc9ee2e0bae13a4d694704c79d36 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 15:14:16 +1200 Subject: [PATCH 17/48] added avored:install command --- .gitignore | 1 + config/avored.php | 18 ++++++++ routes/web.php | 25 +++++++++++ src/AvoRedServiceProvider.php | 18 ++++++++ src/System/Console/InstallCommand.php | 64 +++++++++++++++++++++++++++ tests/ExampleTest.php | 7 +++ tests/Integration/ConsoleTest.php | 15 +++++++ 7 files changed, 148 insertions(+) create mode 100644 config/avored.php create mode 100644 routes/web.php create mode 100644 src/System/Console/InstallCommand.php create mode 100644 tests/Integration/ConsoleTest.php diff --git a/.gitignore b/.gitignore index 82cb5bb7c..ff2b024a6 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /node_modules/ .phpunit.result.cache .phpunit.result.cache +phpunit.xml diff --git a/config/avored.php b/config/avored.php new file mode 100644 index 000000000..1414a2882 --- /dev/null +++ b/config/avored.php @@ -0,0 +1,18 @@ + 'admin', + + +]; diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 000000000..85af0629a --- /dev/null +++ b/routes/web.php @@ -0,0 +1,25 @@ +prefix($baseAdminUrl) + ->namespace('AvoRed\\Framework') + ->name('admin.') + ->group( + function () { + // Route::get('', function () { return view('welcome'); })->name('home'); + }); diff --git a/src/AvoRedServiceProvider.php b/src/AvoRedServiceProvider.php index 7ead5b6ca..b2c0eb1e5 100644 --- a/src/AvoRedServiceProvider.php +++ b/src/AvoRedServiceProvider.php @@ -1,15 +1,33 @@ registerConfig(); + $this->registerConsoleCommands(); } public function boot() { + $this->registerRoutes(); + } + + public function registerRoutes() + { + $this->loadRoutesFrom(__DIR__ . '/../routes/web.php'); + } + public function registerConfig() + { + $this->mergeConfigFrom(__DIR__ . '/../config/avored.php', 'avored'); + } + public function registerConsoleCommands() + { + $this->commands([InstallCommand::class]); + // $this->commands([AdminMakeCommand::class]); } } diff --git a/src/System/Console/InstallCommand.php b/src/System/Console/InstallCommand.php new file mode 100644 index 000000000..de371ac04 --- /dev/null +++ b/src/System/Console/InstallCommand.php @@ -0,0 +1,64 @@ +createRoleAction = $action; + parent::__construct(); + } + + /** + * The console command name. + * + * @var string + */ + protected $name = 'avored:install'; + + /** + * The console command description. + * + * @var string + */ + protected $description = 'Install AvoRed e commerce an Laravel Shopping Cart'; + + /** + * Execute the console command. + * + * @return void + */ + public function handle() + { + $this->call('migrate:fresh'); + $this->executePassportInstallCommand(); + $this->call('storage:link'); + // $this->createRoleAction->handle(['name' => Role::ADMIN]); + + if ($this->confirm('Would you like to install Dummy Data?')) { + // $this->call('avored:module:install', ['identifier' => 'avored-dummy-data']); + } + + // $this->call('avored:admin:make'); + + $this->info('AvoRed Install Successfully!'); + } + + public function executePassportInstallCommand() + { + $provider = 'customers'; + + // $this->call('passport:keys'); + // $this->call('passport:keys', ['--force' => true]); + + // $this->call('passport:client', ['--personal' => true, '--name' => config('app.name') . ' Personal Access Client']); + // $this->call('passport:client', ['--password' => true, '--name' => config('app.name') . ' Password Grant Client', '--provider' => $provider]); + } +} diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php index ed4943c66..0a4c513be 100644 --- a/tests/ExampleTest.php +++ b/tests/ExampleTest.php @@ -8,4 +8,11 @@ public function test_the_application_returns_a_successful_response() { $this->assertTrue(true); } + + public function test_console_command() + { + $this->artisan('avored:install') + ->expectsQuestion('Would you like to install Dummy Data?', 'Yes') + ->assertExitCode(0); + } } diff --git a/tests/Integration/ConsoleTest.php b/tests/Integration/ConsoleTest.php new file mode 100644 index 000000000..1a629e072 --- /dev/null +++ b/tests/Integration/ConsoleTest.php @@ -0,0 +1,15 @@ +artisan('avored:install') + ->expectsQuestion('Would you like to install Dummy Data?', 'Yes') + ->assertExitCode(0); + } +} From 3f87cdbff7524604cd7d68e53c9f687cc9be23f6 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 03:14:34 +0000 Subject: [PATCH 18/48] Fix styling --- .php-cs-fixer.cache | 2 +- src/AvoRedServiceProvider.php | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 23edd242e..33fc1cbde 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":2129208412,"tests\/AvoRedBaseTestCase.php":2057796898,"tests\/ExampleTest.php":3276564100}} \ No newline at end of file +{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":3987391441,"tests\/AvoRedBaseTestCase.php":2057796898,"tests\/ExampleTest.php":3683430739,"src\/System\/Console\/InstallCommand.php":342404815,"tests\/Integration\/ConsoleTest.php":3044948808}} \ No newline at end of file diff --git a/src/AvoRedServiceProvider.php b/src/AvoRedServiceProvider.php index b2c0eb1e5..94ecfc558 100644 --- a/src/AvoRedServiceProvider.php +++ b/src/AvoRedServiceProvider.php @@ -21,10 +21,12 @@ public function registerRoutes() { $this->loadRoutesFrom(__DIR__ . '/../routes/web.php'); } + public function registerConfig() { $this->mergeConfigFrom(__DIR__ . '/../config/avored.php', 'avored'); } + public function registerConsoleCommands() { $this->commands([InstallCommand::class]); From c64c81d2bfaabced3eb8744b70a6cb062c0443b4 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 15:38:23 +1200 Subject: [PATCH 19/48] wip --- build/logs/clover.xml | 4157 +---------------------------------------- 1 file changed, 27 insertions(+), 4130 deletions(-) diff --git a/build/logs/clover.xml b/build/logs/clover.xml index 01a38102e..e6c54b704 100644 --- a/build/logs/clover.xml +++ b/build/logs/clover.xml @@ -1,4142 +1,39 @@ - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + From a6107c5a608227225921e200b38fe28a49a58503 Mon Sep 17 00:00:00 2001 From: Github Actions Bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 14 May 2022 03:39:17 +0000 Subject: [PATCH 20/48] Update code coverage badge --- badge-coverage.svg | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/badge-coverage.svg b/badge-coverage.svg index 66c286682..7b196712e 100644 --- a/badge-coverage.svg +++ b/badge-coverage.svg @@ -8,9 +8,9 @@ coverage coverage - - - 55 % - 55 % + + + 100 % + 100 % \ No newline at end of file From ee7f6040933c519e57c7b55e6e6a425d1f5377cb Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 09:24:35 +1200 Subject: [PATCH 21/48] wip --- .php_cs.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/.php_cs.php b/.php_cs.php index d96e7b2df..f8c8b6a80 100644 --- a/.php_cs.php +++ b/.php_cs.php @@ -1,8 +1,6 @@ notPath('bootstrap/*') - ->notPath('storage/*') ->notPath('resources/view/mail/*') ->in([ __DIR__ . '/src', From 08464d57b6d2269c071c8e5926c87c7f2e9d7f2b Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 09:39:07 +1200 Subject: [PATCH 22/48] Update AvoRedServiceProvider.php --- .gitignore | 1 + .php-cs-fixer.cache | 2 +- src/AvoRedServiceProvider.php | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ff2b024a6..a7a1be42d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ .phpunit.result.cache .phpunit.result.cache phpunit.xml +.php-cs-fixer.cache diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 33fc1cbde..e676b3c8c 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":3987391441,"tests\/AvoRedBaseTestCase.php":2057796898,"tests\/ExampleTest.php":3683430739,"src\/System\/Console\/InstallCommand.php":342404815,"tests\/Integration\/ConsoleTest.php":3044948808}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/AvoRedServiceProvider.php":1489589736,"src\/System\/Console\/InstallCommand.php":342404815}} \ No newline at end of file diff --git a/src/AvoRedServiceProvider.php b/src/AvoRedServiceProvider.php index 94ecfc558..7c43e883f 100644 --- a/src/AvoRedServiceProvider.php +++ b/src/AvoRedServiceProvider.php @@ -1,4 +1,5 @@ Date: Sat, 14 May 2022 21:39:26 +0000 Subject: [PATCH 23/48] Fix styling --- .php-cs-fixer.cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index e676b3c8c..5a1201226 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/AvoRedServiceProvider.php":1489589736,"src\/System\/Console\/InstallCommand.php":342404815}} \ No newline at end of file +{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":1489589736,"src\/System\/Console\/InstallCommand.php":342404815,"tests\/Integration\/ConsoleTest.php":3044948808,"tests\/AvoRedBaseTestCase.php":2057796898,"tests\/ExampleTest.php":3683430739}} \ No newline at end of file From 34024e13ebaed801f1f8732bc3c34f81893ee143 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 09:46:03 +1200 Subject: [PATCH 24/48] wip --- .php-cs-fixer.cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 5a1201226..b00afd3b7 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":1489589736,"src\/System\/Console\/InstallCommand.php":342404815,"tests\/Integration\/ConsoleTest.php":3044948808,"tests\/AvoRedBaseTestCase.php":2057796898,"tests\/ExampleTest.php":3683430739}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true},"hashes":{"src\/AvoRedServiceProvider.php":1489589736}} \ No newline at end of file From d6da9e5afdf4752c868b041b672a9ade1266a0cd Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 14 May 2022 21:46:26 +0000 Subject: [PATCH 25/48] Fix styling --- .php-cs-fixer.cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index b00afd3b7..5a1201226 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true},"hashes":{"src\/AvoRedServiceProvider.php":1489589736}} \ No newline at end of file +{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":1489589736,"src\/System\/Console\/InstallCommand.php":342404815,"tests\/Integration\/ConsoleTest.php":3044948808,"tests\/AvoRedBaseTestCase.php":2057796898,"tests\/ExampleTest.php":3683430739}} \ No newline at end of file From a3c933f952cec57a9495d5c9dd521ecf08f97281 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 10:05:36 +1200 Subject: [PATCH 26/48] Update phpunit.xml --- phpunit.xml | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index 459689057..98c356a55 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,5 +1,20 @@ - + tests @@ -13,7 +28,6 @@ - ./src @@ -24,7 +38,4 @@ - - - From d6bd5a77e0df951df458aa1358e4c276acf9e9b9 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 10:10:42 +1200 Subject: [PATCH 27/48] wip --- .github/workflows/tests.yml | 2 +- phpunit.xml => phpunit.dist.xml | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename phpunit.xml => phpunit.dist.xml (100%) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 868799533..7e6441a89 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -54,7 +54,7 @@ jobs: composer require orchestra/testbench:${{ matrix.testbench }} --dev composer update --${{ matrix.stability }} --prefer-dist --no-interaction - name: Execute tests - run: vendor/bin/phpunit + run: vendor/bin/phpunit -configuration phpunit.dist.xml env: DB_PORT: ${{ job.services.mysql.ports[3306] }} diff --git a/phpunit.xml b/phpunit.dist.xml similarity index 100% rename from phpunit.xml rename to phpunit.dist.xml From 1c8257b4b23b905f53c93b19faadc30f78a5cb49 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 10:12:10 +1200 Subject: [PATCH 28/48] Update tests.yml --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7e6441a89..f480eb972 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -54,7 +54,7 @@ jobs: composer require orchestra/testbench:${{ matrix.testbench }} --dev composer update --${{ matrix.stability }} --prefer-dist --no-interaction - name: Execute tests - run: vendor/bin/phpunit -configuration phpunit.dist.xml + run: vendor/bin/phpunit --configuration phpunit.dist.xml env: DB_PORT: ${{ job.services.mysql.ports[3306] }} From c67d32c46a2329b52fff83d89e83709125f89ec5 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 15:05:41 +1200 Subject: [PATCH 29/48] added admin user make command --- .php-cs-fixer.cache | 2 +- build/logs/clover.xml | 226 +++++++++++++++--- database/factories/AdminUserFactory.php | 26 ++ database/factories/RoleFactory.php | 18 ++ ..._021036_create_avored_schema_framework.php | 50 ++++ src/AvoRedServiceProvider.php | 23 +- .../Contracts/AdminUserModelInterface.php | 10 + src/Database/Contracts/BaseInterface.php | 23 ++ src/Database/Contracts/RoleModelInterface.php | 13 + src/Database/Models/AdminUser.php | 87 +++++++ src/Database/Models/BaseModel.php | 25 ++ src/Database/Models/Role.php | 46 ++++ .../Repository/AdminUserRepository.php | 32 +++ src/Database/Repository/BaseRepository.php | 43 ++++ src/Database/Repository/RoleRepository.php | 65 +++++ src/Database/Traits/UuidTrait.php | 27 +++ src/Support/Providers/ModelsProvider.php | 39 +++ src/System/Console/AdminMakeCommand.php | 48 ++++ src/System/Console/InstallCommand.php | 27 +-- src/User/Actions/AuthAdminUserAction.php | 25 ++ src/User/Actions/CreateAdminUserAction.php | 22 ++ src/User/Actions/CreateRoleAction.php | 22 ++ tests/AvoRedBaseTestCase.php | 7 +- tests/ExampleTest.php | 7 - tests/Integration/ConsoleTest.php | 20 +- tests/UnitTests/AdminUserRepositoryTest.php | 17 ++ tests/UnitTests/BaseRepositoryTest.php | 53 ++++ tests/UnitTests/RoleRepositoryTest.php | 23 ++ 28 files changed, 965 insertions(+), 61 deletions(-) create mode 100644 database/factories/AdminUserFactory.php create mode 100644 database/factories/RoleFactory.php create mode 100644 database/migrations/2022_05_15_021036_create_avored_schema_framework.php create mode 100644 src/Database/Contracts/AdminUserModelInterface.php create mode 100644 src/Database/Contracts/BaseInterface.php create mode 100644 src/Database/Contracts/RoleModelInterface.php create mode 100644 src/Database/Models/AdminUser.php create mode 100644 src/Database/Models/BaseModel.php create mode 100644 src/Database/Models/Role.php create mode 100644 src/Database/Repository/AdminUserRepository.php create mode 100644 src/Database/Repository/BaseRepository.php create mode 100644 src/Database/Repository/RoleRepository.php create mode 100644 src/Database/Traits/UuidTrait.php create mode 100644 src/Support/Providers/ModelsProvider.php create mode 100644 src/System/Console/AdminMakeCommand.php create mode 100644 src/User/Actions/AuthAdminUserAction.php create mode 100644 src/User/Actions/CreateAdminUserAction.php create mode 100644 src/User/Actions/CreateRoleAction.php create mode 100644 tests/UnitTests/AdminUserRepositoryTest.php create mode 100644 tests/UnitTests/BaseRepositoryTest.php create mode 100644 tests/UnitTests/RoleRepositoryTest.php diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 5a1201226..473c3ba64 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":1489589736,"src\/System\/Console\/InstallCommand.php":342404815,"tests\/Integration\/ConsoleTest.php":3044948808,"tests\/AvoRedBaseTestCase.php":2057796898,"tests\/ExampleTest.php":3683430739}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Contracts\/BaseInterface.php":2633721938,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/AdminUser.php":2851019768,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":2019595733,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/System\/Console\/InstallCommand.php":1141319200,"src\/System\/Console\/AdminMakeCommand.php":4151664424}} \ No newline at end of file diff --git a/build/logs/clover.xml b/build/logs/clover.xml index e6c54b704..032ec7dc2 100644 --- a/build/logs/clover.xml +++ b/build/logs/clover.xml @@ -1,39 +1,209 @@ - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/database/factories/AdminUserFactory.php b/database/factories/AdminUserFactory.php new file mode 100644 index 000000000..e29f01b33 --- /dev/null +++ b/database/factories/AdminUserFactory.php @@ -0,0 +1,26 @@ +create(); + + return [ + 'first_name' => $this->faker->firstName, + 'last_name' => $this->faker->lastName, + 'email' => $this->faker->email, + 'password' => Hash::make('secret'), + 'role_id' => $role->id, + 'is_super_admin' => rand(0, 1) + ]; + } +} diff --git a/database/factories/RoleFactory.php b/database/factories/RoleFactory.php new file mode 100644 index 000000000..e4634f595 --- /dev/null +++ b/database/factories/RoleFactory.php @@ -0,0 +1,18 @@ + $this->faker->name(), + ]; + } +} diff --git a/database/migrations/2022_05_15_021036_create_avored_schema_framework.php b/database/migrations/2022_05_15_021036_create_avored_schema_framework.php new file mode 100644 index 000000000..8d1326d87 --- /dev/null +++ b/database/migrations/2022_05_15_021036_create_avored_schema_framework.php @@ -0,0 +1,50 @@ +uuid('id')->primary(); + $table->string('name')->nullable()->default(null); + $table->text('description')->nullable()->default(null); + $table->timestamps(); + }); + + Schema::create('admin_users', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->tinyInteger('is_super_admin')->nullable()->default(null); + $table->uuid('role_id')->nullable()->default(null); + $table->string('first_name')->nullable(); + $table->string('last_name')->nullable(); + $table->string('email')->unique(); + $table->string('password'); + $table->string('language')->nullable()->default('en'); + $table->rememberToken(); + $table->timestamp('email_verified_at')->nullable(); + $table->timestamps(); + + $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('admin_users'); + Schema::dropIfExists('roles'); + } +}; diff --git a/src/AvoRedServiceProvider.php b/src/AvoRedServiceProvider.php index 7c43e883f..1c65a2fc9 100644 --- a/src/AvoRedServiceProvider.php +++ b/src/AvoRedServiceProvider.php @@ -2,13 +2,21 @@ namespace AvoRed\Framework; +use AvoRed\Framework\Support\Providers\ModelsProvider; +use AvoRed\Framework\System\Console\AdminMakeCommand; use AvoRed\Framework\System\Console\InstallCommand; +use Illuminate\Support\Facades\App; use Illuminate\Support\ServiceProvider; class AvoRedServiceProvider extends ServiceProvider { + protected $providers = [ + ModelsProvider::class, + ]; + public function register() { + $this->registerProviders(); $this->registerConfig(); $this->registerConsoleCommands(); } @@ -16,6 +24,14 @@ public function register() public function boot() { $this->registerRoutes(); + $this->registerMigrationPath(); + } + + public function registerProviders() + { + foreach ($this->providers as $provider) { + App::register($provider); + } } public function registerRoutes() @@ -31,6 +47,11 @@ public function registerConfig() public function registerConsoleCommands() { $this->commands([InstallCommand::class]); - // $this->commands([AdminMakeCommand::class]); + $this->commands([AdminMakeCommand::class]); + } + + public function registerMigrationPath() + { + $this->loadMigrationsFrom(__DIR__. '/../database/migrations'); } } diff --git a/src/Database/Contracts/AdminUserModelInterface.php b/src/Database/Contracts/AdminUserModelInterface.php new file mode 100644 index 000000000..fee8cc6e9 --- /dev/null +++ b/src/Database/Contracts/AdminUserModelInterface.php @@ -0,0 +1,10 @@ +notify(new ResetPassword($token)); + // } + + public function getFullNameAttribute() + { + return $this->attributes['first_name'] . ' ' . $this->attributes['last_name']; + } + + public function getImagePathUrlAttribute() + { + if (empty($this->imagePath)) { + return 'https://place-hold.it/250x250'; + } + return asset('storage' . DIRECTORY_SEPARATOR . $this->imagePath->path); + } + + public function getImagePathNameAttribute() + { + return basename($this->image_path); + } + + public function setPasrdAttribute($val) + { + $this->attributes['password'] = Hash::make($val); + } + + // public function permissions() + // { + // dd($this->role->permissions); + // } + + public function role() + { + return $this->belongsTo(Role::class); + } + + // public function hasPermission($routeName): bool + // { + // if ($this->is_super_admin) { + // return true; + // } + // $role = $this->role; + // if ($role->permissions->pluck('name')->contains($routeName) == false) { + // return false; + // } + + // return true; + // } + + // public function imagePath() + // { + // return $this->morphOne(Document::class, 'documentable'); + // } +} diff --git a/src/Database/Models/BaseModel.php b/src/Database/Models/BaseModel.php new file mode 100644 index 000000000..4e2222d1c --- /dev/null +++ b/src/Database/Models/BaseModel.php @@ -0,0 +1,25 @@ +permissions->pluck('name'); + // $permissions = explode(',', $routes); + // $hasPermission = true; + + // foreach ($permissions as $permissions) { + // if (! $modelPermissions->contains($permissions)) { + // $hasPermission = false; + // } + // } + + // return $hasPermission; + // } + + // /** + // * Role has many Permissions. + // * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + // */ + // public function permissions() + // { + // return $this->belongsToMany(Permission::class); + // } +} diff --git a/src/Database/Repository/AdminUserRepository.php b/src/Database/Repository/AdminUserRepository.php new file mode 100644 index 000000000..5232133cb --- /dev/null +++ b/src/Database/Repository/AdminUserRepository.php @@ -0,0 +1,32 @@ +model = new AdminUser(); + } + + public function model(): AdminUser + { + return $this->model; + } + + public function findByEmail(string $email): AdminUser + { + return AdminUser::whereEmail($email)->first(); + } +} diff --git a/src/Database/Repository/BaseRepository.php b/src/Database/Repository/BaseRepository.php new file mode 100644 index 000000000..ddc90097b --- /dev/null +++ b/src/Database/Repository/BaseRepository.php @@ -0,0 +1,43 @@ +model()->query(); + } + + public function create(array $data) + { + return $this->model()->create($data); + } + + public function find(string $id): Model + { + return $this->model()->find($id); + } + + public function delete(string $id): int + { + return $this->model()->destroy($id); + } + + public function all(): Collection + { + return $this->model()->all(); + } + + public function paginate(): LengthAwarePaginator + { + return $this->model()->paginate(); + } +} diff --git a/src/Database/Repository/RoleRepository.php b/src/Database/Repository/RoleRepository.php new file mode 100644 index 000000000..79a866ffe --- /dev/null +++ b/src/Database/Repository/RoleRepository.php @@ -0,0 +1,65 @@ +model = new Role(); + } + + public function model() + { + return $this->model; + } + + public function findAdminRole(): Role + { + return Role::whereName(Role::ADMIN)->first(); + } + + public function options(): SupportCollection + { + return Role::all()->pluck('name', 'id'); + } + + // public function saveRolePermissions($request, $role) + // { + // $permissionIds = SupportCollection::make([]); + + // if ($request->get('permissions') !== null && count($request->get('permissions')) > 0) { + // foreach ($request->get('permissions') as $key => $value) { + // if ($value != 1) { + // continue; + // } + // $permissions = explode(',', $key); + // foreach ($permissions as $permissionName) { + // $permissionRepository = app(PermissionModelInterface::class); + // $permissionModel = $permissionRepository->findByName($permissionName); + // if ($permissionModel === null) { + // $permissionModel = $permissionRepository->create(['name' => $permissionName]); + // } + // $permissionIds->push($permissionModel->id); + // } + // } + // $ids = $permissionIds->unique(); + // $role->permissions()->sync($ids); + // } + // } +} diff --git a/src/Database/Traits/UuidTrait.php b/src/Database/Traits/UuidTrait.php new file mode 100644 index 000000000..5e73e1f9c --- /dev/null +++ b/src/Database/Traits/UuidTrait.php @@ -0,0 +1,27 @@ +setIncrementing(false); + $this->setKeyType('string'); + } + + /** + * The "booting" method of the model. + * + * @return void + */ + protected static function bootUuidTrait() + { + self::creating(function (Model $model) { + $model->setAttribute($model->getKeyName(), Uuid::uuid4()->toString()); + }); + } +} diff --git a/src/Support/Providers/ModelsProvider.php b/src/Support/Providers/ModelsProvider.php new file mode 100644 index 000000000..94d48fa21 --- /dev/null +++ b/src/Support/Providers/ModelsProvider.php @@ -0,0 +1,39 @@ + AdminUserRepository::class, + RoleModelInterface::class => RoleRepository::class, + ]; + + public function register() + { + $this->registerModelContracts(); + } + + protected function registerModelContracts() + { + foreach ($this->models as $interface => $repository) { + $this->app->bind($interface, $repository); + } + } +} diff --git a/src/System/Console/AdminMakeCommand.php b/src/System/Console/AdminMakeCommand.php new file mode 100644 index 000000000..07a447909 --- /dev/null +++ b/src/System/Console/AdminMakeCommand.php @@ -0,0 +1,48 @@ +createAdminUserAction = $action; + $this->roleRepository = $repository; + parent::__construct(); + } + + protected $name = 'avored:admin:make'; + + protected $description = 'AvoRed create an admin user account'; + + public function handle() + { + $data['first_name'] = $this->ask('What is your First Name?'); + $data['last_name'] = $this->ask('What is your last Name?'); + $data['email'] = $this->ask('What is your Email Address?'); + $data['password'] = $this->secret('What is your Password?'); + $data['confirm_password'] = $this->secret('Confirm your password again?'); + + $role = $this->roleRepository->findAdminRole(); + $data['role_id'] = $role->id; + $data['is_super_admin'] = 1; + $data['password'] = Hash::make($data['password']); + + $this->createAdminUserAction->handle($data); + + $this->info('Admin User created Successfully!'); + } +} diff --git a/src/System/Console/InstallCommand.php b/src/System/Console/InstallCommand.php index de371ac04..3bc5b0a69 100644 --- a/src/System/Console/InstallCommand.php +++ b/src/System/Console/InstallCommand.php @@ -2,51 +2,38 @@ namespace AvoRed\Framework\System\Console; +use AvoRed\Framework\Database\Models\Role; +use AvoRed\Framework\User\Actions\CreateRoleAction; use Illuminate\Console\Command; class InstallCommand extends Command { /** @var \AvoRed\Framework\User\Actions\CreateRoleAction */ - // private $createRoleAction; + private $createRoleAction; public function __construct( - // CreateRoleAction $action + CreateRoleAction $action ) { - // $this->createRoleAction = $action; + $this->createRoleAction = $action; parent::__construct(); } - /** - * The console command name. - * - * @var string - */ protected $name = 'avored:install'; - /** - * The console command description. - * - * @var string - */ protected $description = 'Install AvoRed e commerce an Laravel Shopping Cart'; - /** - * Execute the console command. - * - * @return void - */ public function handle() { $this->call('migrate:fresh'); $this->executePassportInstallCommand(); $this->call('storage:link'); - // $this->createRoleAction->handle(['name' => Role::ADMIN]); + $this->createRoleAction->handle(['name' => Role::ADMIN]); if ($this->confirm('Would you like to install Dummy Data?')) { // $this->call('avored:module:install', ['identifier' => 'avored-dummy-data']); } - // $this->call('avored:admin:make'); + $this->call('avored:admin:make'); $this->info('AvoRed Install Successfully!'); } diff --git a/src/User/Actions/AuthAdminUserAction.php b/src/User/Actions/AuthAdminUserAction.php new file mode 100644 index 000000000..51be4967a --- /dev/null +++ b/src/User/Actions/AuthAdminUserAction.php @@ -0,0 +1,25 @@ +repository = $repository; + } + + public function __invoke(string $email, string $password): AdminUser + { + $adminUser = $this->repository->findByEmail($email); + //@todo validate password and return + + return $adminUser; + } +} diff --git a/src/User/Actions/CreateAdminUserAction.php b/src/User/Actions/CreateAdminUserAction.php new file mode 100644 index 000000000..6605315c6 --- /dev/null +++ b/src/User/Actions/CreateAdminUserAction.php @@ -0,0 +1,22 @@ +repository = $repository; + } + + public function handle(array $data): AdminUser + { + return $this->repository->create($data); + } +} diff --git a/src/User/Actions/CreateRoleAction.php b/src/User/Actions/CreateRoleAction.php new file mode 100644 index 000000000..ba3268442 --- /dev/null +++ b/src/User/Actions/CreateRoleAction.php @@ -0,0 +1,22 @@ +repository = $repository; + } + + public function handle(array $data): Role + { + return $this->repository->create($data); + } +} diff --git a/tests/AvoRedBaseTestCase.php b/tests/AvoRedBaseTestCase.php index 420349a86..81b7a5409 100644 --- a/tests/AvoRedBaseTestCase.php +++ b/tests/AvoRedBaseTestCase.php @@ -3,6 +3,7 @@ use AvoRed\Framework\AvoRedServiceProvider; use Faker\Generator as FakerGenerator; +use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Facades\Notification; use Orchestra\Testbench\TestCase; @@ -21,9 +22,9 @@ public function setUp(): void { parent::setUp(); $this->faker = $this->app->make(FakerGenerator::class); - // Factory::guessFactoryNamesUsing( - // fn (string $modelName) => 'AvoRed\\Framework\\Database\\Factories\\' . class_basename($modelName) . 'Factory' - // ); + Factory::guessFactoryNamesUsing( + fn (string $modelName) => 'AvoRed\\Framework\\Database\\Factories\\' . class_basename($modelName) . 'Factory' + ); $this->setUpDatabase(); Notification::fake(); } diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php index 0a4c513be..ed4943c66 100644 --- a/tests/ExampleTest.php +++ b/tests/ExampleTest.php @@ -8,11 +8,4 @@ public function test_the_application_returns_a_successful_response() { $this->assertTrue(true); } - - public function test_console_command() - { - $this->artisan('avored:install') - ->expectsQuestion('Would you like to install Dummy Data?', 'Yes') - ->assertExitCode(0); - } } diff --git a/tests/Integration/ConsoleTest.php b/tests/Integration/ConsoleTest.php index 1a629e072..91cbf6428 100644 --- a/tests/Integration/ConsoleTest.php +++ b/tests/Integration/ConsoleTest.php @@ -2,14 +2,32 @@ namespace AvoRed\Framework\Tests\Integration; +use AvoRed\Framework\Database\Models\Role; use AvoRed\Framework\Tests\AvoRedBaseTestCase; class ConsoleTest extends AvoRedBaseTestCase { - public function test_console_command() + public function test_console_avored_install_command() { $this->artisan('avored:install') ->expectsQuestion('Would you like to install Dummy Data?', 'Yes') + ->expectsQuestion('What is your First Name?', 'admin') + ->expectsQuestion('What is your last Name?', 'admin') + ->expectsQuestion('What is your Email Address?', 'admin@admin.com') + ->expectsQuestion('What is your Password?', 'password') + ->expectsQuestion('Confirm your password again?', 'password') + ->assertExitCode(0); + } + + public function test_console_avored_admin_make_command() + { + Role::factory()->create(['name' => Role::ADMIN]); + $this->artisan('avored:admin:make') + ->expectsQuestion('What is your First Name?', 'admin') + ->expectsQuestion('What is your last Name?', 'admin') + ->expectsQuestion('What is your Email Address?', 'admin@admin.com') + ->expectsQuestion('What is your Password?', 'password') + ->expectsQuestion('Confirm your password again?', 'password') ->assertExitCode(0); } } diff --git a/tests/UnitTests/AdminUserRepositoryTest.php b/tests/UnitTests/AdminUserRepositoryTest.php new file mode 100644 index 000000000..16bf8d1d0 --- /dev/null +++ b/tests/UnitTests/AdminUserRepositoryTest.php @@ -0,0 +1,17 @@ +create(['email' => 'unittest@example.com']); + $adminUser = app(AdminUserModelInterface::class)->findByEmail('unittest@example.com'); + $this->assertEquals('unittest@example.com', $adminUser->email); + } +} diff --git a/tests/UnitTests/BaseRepositoryTest.php b/tests/UnitTests/BaseRepositoryTest.php new file mode 100644 index 000000000..4b6be0905 --- /dev/null +++ b/tests/UnitTests/BaseRepositoryTest.php @@ -0,0 +1,53 @@ +create(); + $adminUser = app(AdminUserModelInterface::class)->find($factoryAdminUser->id); + $this->assertEquals($factoryAdminUser->email, $adminUser->email); + $this->assertDatabaseHas('admin_users', ['id' => $factoryAdminUser->id]); + } + + public function test_base_repository_create_method() + { + $factoryAdminUser = AdminUser::factory()->make(); + $adminUser = app(AdminUserModelInterface::class)->create(array_merge(['password' => 'password'], $factoryAdminUser->toArray())); + $this->assertEquals($factoryAdminUser->email, $adminUser->email); + $this->assertDatabaseHas('admin_users', ['id' => $adminUser->id]); + } + + public function test_base_repository_delete_method() + { + $factoryAdminUser = AdminUser::factory()->create(); + app(AdminUserModelInterface::class)->delete($factoryAdminUser->id); + $this->assertDatabaseMissing('admin_users', ['id' => $factoryAdminUser->id]); + } + public function test_base_repository_all_method() + { + AdminUser::factory(3)->create(); + $allUsers = app(AdminUserModelInterface::class)->all(); + $this->assertEquals(3, $allUsers->count()); + } + public function test_base_repository_paginate_method() + { + AdminUser::factory(30)->create(); + $allUsers = app(AdminUserModelInterface::class)->paginate(); + $this->assertNotInstanceOf(Paginator::class, $allUsers); + } + public function test_base_repository_query_method() + { + AdminUser::factory()->create(); + $allUsers = app(AdminUserModelInterface::class)->query(); + $this->assertNotInstanceOf(Builder::class, $allUsers); + } +} diff --git a/tests/UnitTests/RoleRepositoryTest.php b/tests/UnitTests/RoleRepositoryTest.php new file mode 100644 index 000000000..7b108830a --- /dev/null +++ b/tests/UnitTests/RoleRepositoryTest.php @@ -0,0 +1,23 @@ +create(['name' => Role::ADMIN]); + $this->assertEquals(Role::ADMIN, $role->name); + } + + public function test_role_option_method() + { + Role::factory(2)->create(); + $options = app(RoleModelInterface::class)->options(); + $this->assertEquals(2, $options->count()); + } +} From 8609bd836eeb7a59d96c0907521edbf65c4b815b Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 03:06:01 +0000 Subject: [PATCH 30/48] Fix styling --- .php-cs-fixer.cache | 2 +- src/Database/Contracts/BaseInterface.php | 2 +- src/Database/Models/AdminUser.php | 3 ++- src/Database/Repository/AdminUserRepository.php | 2 +- src/Database/Repository/BaseRepository.php | 2 +- src/Database/Repository/RoleRepository.php | 4 ++-- tests/UnitTests/BaseRepositoryTest.php | 3 +++ 7 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 473c3ba64..40d90aa28 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Contracts\/BaseInterface.php":2633721938,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/AdminUser.php":2851019768,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":2019595733,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/System\/Console\/InstallCommand.php":1141319200,"src\/System\/Console\/AdminMakeCommand.php":4151664424}} \ No newline at end of file +{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":684060025,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/Support\/Providers\/ModelsProvider.php":2037303546,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/AdminUser.php":1505109847,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"tests\/Integration\/ConsoleTest.php":3309535331,"tests\/UnitTests\/AdminUserRepositoryTest.php":3166096953,"tests\/UnitTests\/BaseRepositoryTest.php":2349584337,"tests\/UnitTests\/RoleRepositoryTest.php":3361730473,"tests\/AvoRedBaseTestCase.php":3130496138,"tests\/ExampleTest.php":3276564100}} \ No newline at end of file diff --git a/src/Database/Contracts/BaseInterface.php b/src/Database/Contracts/BaseInterface.php index 6b78f5e6f..d750045bd 100644 --- a/src/Database/Contracts/BaseInterface.php +++ b/src/Database/Contracts/BaseInterface.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Database\Contracts; -use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Pagination\LengthAwarePaginator; diff --git a/src/Database/Models/AdminUser.php b/src/Database/Models/AdminUser.php index b24e24088..2f95797ba 100644 --- a/src/Database/Models/AdminUser.php +++ b/src/Database/Models/AdminUser.php @@ -2,9 +2,9 @@ namespace AvoRed\Framework\Database\Models; -use Illuminate\Notifications\Notifiable; use AvoRed\Framework\User\Notifications\ResetPassword; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Notifications\Notifiable; use Illuminate\Support\Facades\Hash; class AdminUser extends BaseModel @@ -44,6 +44,7 @@ public function getImagePathUrlAttribute() if (empty($this->imagePath)) { return 'https://place-hold.it/250x250'; } + return asset('storage' . DIRECTORY_SEPARATOR . $this->imagePath->path); } diff --git a/src/Database/Repository/AdminUserRepository.php b/src/Database/Repository/AdminUserRepository.php index 5232133cb..3b3de88ee 100644 --- a/src/Database/Repository/AdminUserRepository.php +++ b/src/Database/Repository/AdminUserRepository.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\AdminUser; use AvoRed\Framework\Database\Contracts\AdminUserModelInterface; +use AvoRed\Framework\Database\Models\AdminUser; class AdminUserRepository extends BaseRepository implements AdminUserModelInterface { diff --git a/src/Database/Repository/BaseRepository.php b/src/Database/Repository/BaseRepository.php index ddc90097b..2acd13314 100644 --- a/src/Database/Repository/BaseRepository.php +++ b/src/Database/Repository/BaseRepository.php @@ -9,7 +9,7 @@ abstract class BaseRepository { - abstract function model(); + abstract public function model(); public function query(): Builder { diff --git a/src/Database/Repository/RoleRepository.php b/src/Database/Repository/RoleRepository.php index 79a866ffe..5c7fee978 100644 --- a/src/Database/Repository/RoleRepository.php +++ b/src/Database/Repository/RoleRepository.php @@ -3,15 +3,15 @@ namespace AvoRed\Framework\Database\Repository; use AvoRed\Framework\Database\Contracts\PermissionModelInterface; +use AvoRed\Framework\Database\Contracts\RoleModelInterface; use AvoRed\Framework\Database\Models\Role; use Illuminate\Support\Collection as SupportCollection; -use AvoRed\Framework\Database\Contracts\RoleModelInterface; class RoleRepository extends BaseRepository implements RoleModelInterface { /** * Filterable Fields - * @var array $filterType + * @var array */ protected $filterFields = [ 'name', diff --git a/tests/UnitTests/BaseRepositoryTest.php b/tests/UnitTests/BaseRepositoryTest.php index 4b6be0905..d0e955f5a 100644 --- a/tests/UnitTests/BaseRepositoryTest.php +++ b/tests/UnitTests/BaseRepositoryTest.php @@ -32,18 +32,21 @@ public function test_base_repository_delete_method() app(AdminUserModelInterface::class)->delete($factoryAdminUser->id); $this->assertDatabaseMissing('admin_users', ['id' => $factoryAdminUser->id]); } + public function test_base_repository_all_method() { AdminUser::factory(3)->create(); $allUsers = app(AdminUserModelInterface::class)->all(); $this->assertEquals(3, $allUsers->count()); } + public function test_base_repository_paginate_method() { AdminUser::factory(30)->create(); $allUsers = app(AdminUserModelInterface::class)->paginate(); $this->assertNotInstanceOf(Paginator::class, $allUsers); } + public function test_base_repository_query_method() { AdminUser::factory()->create(); From b17a7e25d7d1c5002bd358989614ebc562d0c6eb Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 15:07:19 +1200 Subject: [PATCH 31/48] php cs fixer --- .php-cs-fixer.cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 40d90aa28..19ca67f4a 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":684060025,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/Support\/Providers\/ModelsProvider.php":2037303546,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/AdminUser.php":1505109847,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"tests\/Integration\/ConsoleTest.php":3309535331,"tests\/UnitTests\/AdminUserRepositoryTest.php":3166096953,"tests\/UnitTests\/BaseRepositoryTest.php":2349584337,"tests\/UnitTests\/RoleRepositoryTest.php":3361730473,"tests\/AvoRedBaseTestCase.php":3130496138,"tests\/ExampleTest.php":3276564100}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/AdminUser.php":1505109847,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":684060025,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/Support\/Providers\/ModelsProvider.php":2037303546}} \ No newline at end of file From 4095835f590842d37c22b6fbbb0e9e413d217ea6 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 03:07:38 +0000 Subject: [PATCH 32/48] Fix styling --- .php-cs-fixer.cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 19ca67f4a..40d90aa28 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/AdminUser.php":1505109847,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":684060025,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/Support\/Providers\/ModelsProvider.php":2037303546}} \ No newline at end of file +{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":684060025,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/Support\/Providers\/ModelsProvider.php":2037303546,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/AdminUser.php":1505109847,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"tests\/Integration\/ConsoleTest.php":3309535331,"tests\/UnitTests\/AdminUserRepositoryTest.php":3166096953,"tests\/UnitTests\/BaseRepositoryTest.php":2349584337,"tests\/UnitTests\/RoleRepositoryTest.php":3361730473,"tests\/AvoRedBaseTestCase.php":3130496138,"tests\/ExampleTest.php":3276564100}} \ No newline at end of file From 47607e0fa13430c49441cce1b983d956b9089482 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 17:11:12 +1200 Subject: [PATCH 33/48] login page --- .php-cs-fixer.cache | 2 +- config/avored.php | 35 + package-lock.json | 14571 ++++++++++++++++ package.json | 39 + resources/css/app.css | 3 + resources/images/avored_logo.ico | Bin 0 -> 112436 bytes resources/images/logo_only.svg | 16 + resources/js/app.js | 1 + resources/js/bootstrap.js | 2 + resources/lang/en/system.php | 21 + .../system/components/form/form.blade.php | 11 + .../system/components/form/input.blade.php | 17 + .../views/user/auth/login-form.blade.php | 91 + routes/web.php | 36 +- src/AvoRedServiceProvider.php | 41 + src/Database/Models/AdminUser.php | 24 +- src/Support/Middleware/AdminAuth.php | 15 + src/Support/Middleware/Permission.php | 22 + .../Middleware/RedirectIfAdminAuth.php | 18 + src/Support/Providers/ComponentsProvider.php | 25 + src/System/Components/Form/Form.php | 29 + src/System/Components/Form/Input.php | 37 + .../Controllers/DashboardController.php | 18 + src/User/Controllers/LoginController.php | 91 + src/User/Requests/AdminLoginRequest.php | 21 + tailwind.config.js | 13 + webpack.mix.js | 31 + 27 files changed, 15215 insertions(+), 15 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 resources/css/app.css create mode 100644 resources/images/avored_logo.ico create mode 100644 resources/images/logo_only.svg create mode 100644 resources/js/app.js create mode 100644 resources/js/bootstrap.js create mode 100644 resources/lang/en/system.php create mode 100644 resources/views/system/components/form/form.blade.php create mode 100644 resources/views/system/components/form/input.blade.php create mode 100644 resources/views/user/auth/login-form.blade.php create mode 100644 src/Support/Middleware/AdminAuth.php create mode 100644 src/Support/Middleware/Permission.php create mode 100644 src/Support/Middleware/RedirectIfAdminAuth.php create mode 100644 src/Support/Providers/ComponentsProvider.php create mode 100644 src/System/Components/Form/Form.php create mode 100644 src/System/Components/Form/Input.php create mode 100644 src/System/Controllers/DashboardController.php create mode 100644 src/User/Controllers/LoginController.php create mode 100644 src/User/Requests/AdminLoginRequest.php create mode 100644 tailwind.config.js create mode 100644 webpack.mix.js diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 40d90aa28..21b8a498b 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":684060025,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/Support\/Providers\/ModelsProvider.php":2037303546,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/AdminUser.php":1505109847,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"tests\/Integration\/ConsoleTest.php":3309535331,"tests\/UnitTests\/AdminUserRepositoryTest.php":3166096953,"tests\/UnitTests\/BaseRepositoryTest.php":2349584337,"tests\/UnitTests\/RoleRepositoryTest.php":3361730473,"tests\/AvoRedBaseTestCase.php":3130496138,"tests\/ExampleTest.php":3276564100}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/AdminUser.php":743579743,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":2189710597,"src\/User\/Requests\/AdminLoginRequest.php":2577581413,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/LoginController.php":1073214523,"src\/System\/Components\/Form\/Input.php":2070411703,"src\/System\/Components\/Form\/Form.php":1868613477,"src\/System\/Controllers\/DashboardController.php":3374376343,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":670879088,"src\/Support\/Middleware\/AdminAuth.php":2494142082,"src\/Support\/Middleware\/Permission.php":596960683,"src\/Support\/Providers\/ComponentsProvider.php":3131435569,"src\/Support\/Providers\/ModelsProvider.php":2037303546}} \ No newline at end of file diff --git a/config/avored.php b/config/avored.php index 1414a2882..ccaf7c58c 100644 --- a/config/avored.php +++ b/config/avored.php @@ -14,5 +14,40 @@ */ 'admin_url' => 'admin', + 'auth' => [ + 'guards' => [ + 'admin' => [ + 'driver' => 'session', + 'provider' => 'admin-users', + ], + 'customer' => [ + 'driver' => 'passport', + 'provider' => 'customers', + ], + ], + 'providers' => [ + 'admin-users' => [ + 'driver' => 'eloquent', + 'model' => AvoRed\Framework\Database\Models\AdminUser::class, + ], + // 'customers' => [ + // 'driver' => 'eloquent', + // 'model' => AvoRed\Framework\Database\Models\Customer::class, + // ], + ], + + 'passwords' => [ + 'adminusers' => [ + 'provider' => 'admin-users', + 'table' => 'admin_password_resets', + 'expire' => 60, + ], + 'customers' => [ + 'provider' => 'customers', + 'table' => 'customer_password_resets', + 'expire' => 60, + ], + ], + ], ]; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..3bdc6520f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,14571 @@ +{ + "name": "avored", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "avored", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "alpinejs": "^3.10.2", + "laravel-mix": "^6.0.43", + "tailwindcss": "^3.0.24" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "dependencies": { + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "dependencies": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.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==", + "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==", + "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==", + "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-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", + "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz", + "integrity": "sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", + "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "dependencies": { + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz", + "integrity": "sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.17.10.tgz", + "integrity": "sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g==", + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.17.6", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.17.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@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", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.17.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.17.9", + "@babel/plugin-transform-modules-systemjs": "^7.17.8", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.10", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.17.9", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.17.10", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", + "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.10", + "@babel/types": "^7.17.10", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "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==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, + "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==", + "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==", + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.1.tgz", + "integrity": "sha512-QSwsFORnC2BAP0lRzQkz1pw+EzIiiPdk4e27vGQjyXkwJPeC7iLIRVndJzf9CJVbcrrIcirb/TfxF3gRTyFEVA==", + "dev": true, + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/clean-css": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.5.tgz", + "integrity": "sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw==", + "dependencies": { + "@types/node": "*", + "source-map": "^0.6.0" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/imagemin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-8.0.0.tgz", + "integrity": "sha512-B9X2CUeDv/uUeY9CqkzSTfmsLkeJP6PkmXlh4lODBbf9SwpmNuLS30WzUOi863dgsjY3zt3gY5q2F+UdifRi1A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/imagemin-gifsicle": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.1.tgz", + "integrity": "sha512-kUz6sUh0P95JOS0RGEaaemWUrASuw+dLsWIveK2UZJx74id/B9epgblMkCk/r5MjUWbZ83wFvacG5Rb/f97gyA==", + "dependencies": { + "@types/imagemin": "*" + } + }, + "node_modules/@types/imagemin-mozjpeg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz", + "integrity": "sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw==", + "dependencies": { + "@types/imagemin": "*" + } + }, + "node_modules/@types/imagemin-optipng": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", + "integrity": "sha512-XCM/3q+HUL7v4zOqMI+dJ5dTxT+MUukY9KU49DSnYb/4yWtSMHJyADP+WHSMVzTR63J2ZvfUOzSilzBNEQW78g==", + "dependencies": { + "@types/imagemin": "*" + } + }, + "node_modules/@types/imagemin-svgo": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", + "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", + "dependencies": { + "@types/imagemin": "*", + "@types/svgo": "^1" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "node_modules/@types/node": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", + "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/svgo": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", + "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==" + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", + "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", + "dependencies": { + "@vue/shared": "3.1.5" + } + }, + "node_modules/@vue/shared": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", + "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "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==" + }, + "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==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.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==" + }, + "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==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/alpinejs": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.10.2.tgz", + "integrity": "sha512-P6DTX78J94FgsskS3eS23s26hfb0NWQZUidBnkUK7fId1x64/kLm5E79lL3HNItUmHDCKOHvfP8EAcuCVab89w==", + "dependencies": { + "@vue/reactivity": "~3.1.1" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==" + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "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" + } + ] + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/bonjour-service": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz", + "integrity": "sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw==", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "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==" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001341", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", + "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/cli-table3": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", + "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/collect.js": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.33.0.tgz", + "integrity": "sha512-jEFD39H+09JyvjxwwHGX6Z7j+SB4OdXxHWG8Dus5eVQmwngWGNluRBQ2qS92K9MkRH+fjh91u1TGa31LIeBKhQ==" + }, + "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==", + "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==" + }, + "node_modules/colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==" + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/concat": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", + "integrity": "sha1-QPM1MInWVGdpXLGIa0Xt1jfYzKg=", + "dependencies": { + "commander": "^2.9.0" + }, + "bin": { + "concat": "bin/concat" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat/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==" + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/core-js-compat": { + "version": "3.22.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.5.tgz", + "integrity": "sha512-rEF75n3QtInrYICvJjrAgV03HwKiYvtKHdPtaba1KucG+cNZ4NJnH9isqt979e67KZlhpbCOTwnsvnIr+CVeOg==", + "dependencies": { + "browserslist": "^4.20.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "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==" + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "engines": { + "node": "*" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", + "dependencies": { + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/css-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "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/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.7.tgz", + "integrity": "sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==", + "dependencies": { + "cssnano-preset-default": "^5.2.7", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", + "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", + "dependencies": { + "css-declaration-sorter": "^6.2.2", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.1", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.4", + "postcss-merge-rules": "^5.1.1", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.2", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "dependencies": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "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==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "node_modules/dns-packet": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "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" + } + ] + }, + "node_modules/domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dependencies": { + "domelementtype": "^2.0.1" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/domutils/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "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==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "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": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "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==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "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/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "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.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==" + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "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==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "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/file-type": { + "version": "12.4.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", + "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "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==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "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==", + "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==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.2.tgz", + "integrity": "sha512-NzDgHDiJwKYByLrL5lONmQFpK/2G78SMMfo+E9CuGlX4IkvfKDsiQSNPwAYxEy+e6p7ZQ3uslSLlwlJcqezBmQ==", + "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/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==" + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" + }, + "node_modules/html-loader": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", + "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", + "dependencies": { + "html-minifier-terser": "^5.1.1", + "htmlparser2": "^4.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/html-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "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/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dependencies": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/html-minifier-terser/node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/html-minifier-terser/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/html-minifier-terser/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==" + }, + "node_modules/htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "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==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "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" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/imagemin": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", + "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", + "dependencies": { + "file-type": "^12.0.0", + "globby": "^10.0.0", + "graceful-fs": "^4.2.2", + "junk": "^3.1.0", + "make-dir": "^3.0.0", + "p-pipe": "^3.0.0", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/img-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", + "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", + "dependencies": { + "loader-utils": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "imagemin": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/img-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/img-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "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/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "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==" + }, + "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==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "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==", + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "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==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "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==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/laravel-mix": { + "version": "6.0.43", + "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.43.tgz", + "integrity": "sha512-SOO+C1aOpVSAUs30DYc6k/e0QJxfyD42aav4IKJtE5UZKw9ROWcVzkVoek2J475jNeNnl7GkoLAC27gejZsQ8g==", + "dependencies": { + "@babel/core": "^7.15.8", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "@babel/runtime": "^7.15.4", + "@types/babel__core": "^7.1.16", + "@types/clean-css": "^4.2.5", + "@types/imagemin-gifsicle": "^7.0.1", + "@types/imagemin-mozjpeg": "^8.0.1", + "@types/imagemin-optipng": "^5.2.1", + "@types/imagemin-svgo": "^8.0.0", + "autoprefixer": "^10.4.0", + "babel-loader": "^8.2.3", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "clean-css": "^5.2.4", + "cli-table3": "^0.6.0", + "collect.js": "^4.28.5", + "commander": "^7.2.0", + "concat": "^1.0.3", + "css-loader": "^5.2.6", + "cssnano": "^5.0.8", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "glob": "^7.2.0", + "html-loader": "^1.3.2", + "imagemin": "^7.0.1", + "img-loader": "^4.0.0", + "lodash": "^4.17.21", + "md5": "^2.3.0", + "mini-css-extract-plugin": "^1.6.2", + "node-libs-browser": "^2.2.1", + "postcss-load-config": "^3.1.0", + "postcss-loader": "^6.2.0", + "semver": "^7.3.5", + "strip-ansi": "^6.0.0", + "style-loader": "^2.0.0", + "terser": "^5.9.0", + "terser-webpack-plugin": "^5.2.4", + "vue-style-loader": "^4.1.3", + "webpack": "^5.60.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.8.0", + "webpack-notifier": "^1.14.1", + "webpackbar": "^5.0.0-3", + "yargs": "^17.2.1" + }, + "bin": { + "laravel-mix": "bin/cli.js", + "mix": "bin/cli.js" + }, + "engines": { + "node": ">=12.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.15.8", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "postcss": "^8.3.11", + "webpack": "^5.60.0", + "webpack-cli": "^4.9.1" + } + }, + "node_modules/lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "engines": { + "node": ">=10" + } + }, + "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==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "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==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "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==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "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==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", + "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "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/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "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==" + }, + "node_modules/multicast-dns": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-notifier": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", + "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node_modules/node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==" + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "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==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "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==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "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==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "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==", + "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/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "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==", + "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "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==", + "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==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", + "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.3", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", + "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", + "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", + "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", + "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "dependencies": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dependencies": { + "postcss-selector-parser": "^6.0.6" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dependencies": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "engines": { + "node": ">=0.4.x" + } + }, + "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" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==" + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "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==", + "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==", + "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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "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" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "node_modules/selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "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==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.1.1.tgz", + "integrity": "sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw==" + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.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==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/style-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "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/stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dependencies": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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==", + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tailwindcss": { + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz", + "integrity": "sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==", + "dependencies": { + "arg": "^5.0.1", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "detective": "^5.2.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "lilconfig": "^2.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.12", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/tailwindcss/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==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.8.0-beta.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "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/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "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/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==" + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "engines": { + "node": ">=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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } + }, + "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==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/vue-style-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/webpack": { + "version": "5.72.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", + "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "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": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.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-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/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==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/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==" + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/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==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/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==" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-notifier": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", + "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", + "dependencies": { + "node-notifier": "^9.0.0", + "strip-ansi": "^6.0.0" + }, + "peerDependencies": { + "@types/webpack": ">4.41.31" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "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/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "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==", + "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==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" + }, + "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==", + "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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/ws": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "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==", + "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==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.0.tgz", + "integrity": "sha512-3sLxVhbAB5OC8qvVRebCLWuouhwh/rswsiDYx3WGxajUk/l4G20SKfrKKFeNIHboUFt2JFgv2yfn+5cgOr/t5A==", + "dependencies": { + "cliui": "^7.0.2", + "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.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "engines": { + "node": ">=12" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==" + }, + "@babel/core": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/generator": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "requires": { + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "requires": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", + "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "requires": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz", + "integrity": "sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", + "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "requires": { + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz", + "integrity": "sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/preset-env": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.17.10.tgz", + "integrity": "sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g==", + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.17.6", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.17.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@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", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.17.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.17.9", + "@babel/plugin-transform-modules-systemjs": "^7.17.8", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.10", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.17.9", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.17.10", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", + "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.10", + "@babel/types": "^7.17.10", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" + }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, + "@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==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@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==" + }, + "@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==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@tailwindcss/forms": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.1.tgz", + "integrity": "sha512-QSwsFORnC2BAP0lRzQkz1pw+EzIiiPdk4e27vGQjyXkwJPeC7iLIRVndJzf9CJVbcrrIcirb/TfxF3gRTyFEVA==", + "dev": true, + "requires": { + "mini-svg-data-uri": "^1.2.3" + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "requires": { + "@types/node": "*" + } + }, + "@types/clean-css": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.5.tgz", + "integrity": "sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw==", + "requires": { + "@types/node": "*", + "source-map": "^0.6.0" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "requires": { + "@types/node": "*" + } + }, + "@types/imagemin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-8.0.0.tgz", + "integrity": "sha512-B9X2CUeDv/uUeY9CqkzSTfmsLkeJP6PkmXlh4lODBbf9SwpmNuLS30WzUOi863dgsjY3zt3gY5q2F+UdifRi1A==", + "requires": { + "@types/node": "*" + } + }, + "@types/imagemin-gifsicle": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.1.tgz", + "integrity": "sha512-kUz6sUh0P95JOS0RGEaaemWUrASuw+dLsWIveK2UZJx74id/B9epgblMkCk/r5MjUWbZ83wFvacG5Rb/f97gyA==", + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-mozjpeg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz", + "integrity": "sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw==", + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-optipng": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", + "integrity": "sha512-XCM/3q+HUL7v4zOqMI+dJ5dTxT+MUukY9KU49DSnYb/4yWtSMHJyADP+WHSMVzTR63J2ZvfUOzSilzBNEQW78g==", + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-svgo": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", + "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", + "requires": { + "@types/imagemin": "*", + "@types/svgo": "^1" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "@types/node": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", + "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "requires": { + "@types/node": "*" + } + }, + "@types/svgo": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", + "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==" + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "requires": { + "@types/node": "*" + } + }, + "@vue/reactivity": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", + "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", + "requires": { + "@vue/shared": "3.1.5" + } + }, + "@vue/shared": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", + "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==" + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@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==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "requires": {} + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==" + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "alpinejs": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.10.2.tgz", + "integrity": "sha512-P6DTX78J94FgsskS3eS23s26hfb0NWQZUidBnkUK7fId1x64/kLm5E79lL3HNItUmHDCKOHvfP8EAcuCVab89w==", + "requires": { + "@vue/reactivity": "~3.1.1" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "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==" + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "requires": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "bonjour-service": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz", + "integrity": "sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw==", + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "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==" + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "requires": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "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==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001341", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", + "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "requires": { + "source-map": "~0.6.0" + } + }, + "cli-table3": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", + "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "collect.js": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.33.0.tgz", + "integrity": "sha512-jEFD39H+09JyvjxwwHGX6Z7j+SB4OdXxHWG8Dus5eVQmwngWGNluRBQ2qS92K9MkRH+fjh91u1TGa31LIeBKhQ==" + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==" + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "concat": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", + "integrity": "sha1-QPM1MInWVGdpXLGIa0Xt1jfYzKg=", + "requires": { + "commander": "^2.9.0" + }, + "dependencies": { + "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==" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js-compat": { + "version": "3.22.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.5.tgz", + "integrity": "sha512-rEF75n3QtInrYICvJjrAgV03HwKiYvtKHdPtaba1KucG+cNZ4NJnH9isqt979e67KZlhpbCOTwnsvnIr+CVeOg==", + "requires": { + "browserslist": "^4.20.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "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==" + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-declaration-sorter": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "requires": {} + }, + "css-loader": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", + "requires": { + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "dependencies": { + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.7.tgz", + "integrity": "sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==", + "requires": { + "cssnano-preset-default": "^5.2.7", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", + "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", + "requires": { + "css-declaration-sorter": "^6.2.2", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.1", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.4", + "postcss-merge-rules": "^5.1.1", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.2", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "requires": {} + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "requires": { + "css-tree": "^1.1.2" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "requires": { + "execa": "^5.0.0" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "dependencies": { + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "requires": { + "domelementtype": "^2.0.1" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "dependencies": { + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==" + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "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==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "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==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "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" + } + }, + "express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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==" + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "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==" + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==" + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "file-type": { + "version": "12.4.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", + "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "follow-redirects": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==" + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "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==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "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==" + }, + "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==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "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==" + }, + "glob": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.2.tgz", + "integrity": "sha512-NzDgHDiJwKYByLrL5lONmQFpK/2G78SMMfo+E9CuGlX4IkvfKDsiQSNPwAYxEy+e6p7ZQ3uslSLlwlJcqezBmQ==", + "requires": { + "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" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "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==" + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "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==" + } + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=" + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" + }, + "html-loader": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", + "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", + "requires": { + "html-minifier-terser": "^5.1.1", + "htmlparser2": "^4.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "dependencies": { + "clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "requires": { + "source-map": "~0.6.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "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==" + } + } + } + } + }, + "htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "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==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + }, + "imagemin": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", + "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", + "requires": { + "file-type": "^12.0.0", + "globby": "^10.0.0", + "graceful-fs": "^4.2.2", + "junk": "^3.1.0", + "make-dir": "^3.0.0", + "p-pipe": "^3.0.0", + "replace-ext": "^1.0.0" + } + }, + "img-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", + "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", + "requires": { + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "requires": { + "has": "^1.0.3" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "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==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "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==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "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==" + }, + "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==" + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" + }, + "laravel-mix": { + "version": "6.0.43", + "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.43.tgz", + "integrity": "sha512-SOO+C1aOpVSAUs30DYc6k/e0QJxfyD42aav4IKJtE5UZKw9ROWcVzkVoek2J475jNeNnl7GkoLAC27gejZsQ8g==", + "requires": { + "@babel/core": "^7.15.8", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "@babel/runtime": "^7.15.4", + "@types/babel__core": "^7.1.16", + "@types/clean-css": "^4.2.5", + "@types/imagemin-gifsicle": "^7.0.1", + "@types/imagemin-mozjpeg": "^8.0.1", + "@types/imagemin-optipng": "^5.2.1", + "@types/imagemin-svgo": "^8.0.0", + "autoprefixer": "^10.4.0", + "babel-loader": "^8.2.3", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "clean-css": "^5.2.4", + "cli-table3": "^0.6.0", + "collect.js": "^4.28.5", + "commander": "^7.2.0", + "concat": "^1.0.3", + "css-loader": "^5.2.6", + "cssnano": "^5.0.8", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "glob": "^7.2.0", + "html-loader": "^1.3.2", + "imagemin": "^7.0.1", + "img-loader": "^4.0.0", + "lodash": "^4.17.21", + "md5": "^2.3.0", + "mini-css-extract-plugin": "^1.6.2", + "node-libs-browser": "^2.2.1", + "postcss-load-config": "^3.1.0", + "postcss-loader": "^6.2.0", + "semver": "^7.3.5", + "strip-ansi": "^6.0.0", + "style-loader": "^2.0.0", + "terser": "^5.9.0", + "terser-webpack-plugin": "^5.2.4", + "vue-style-loader": "^4.1.3", + "webpack": "^5.60.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.8.0", + "webpack-notifier": "^1.14.1", + "webpackbar": "^5.0.0-3", + "yargs": "^17.2.1" + } + }, + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==" + }, + "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==" + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "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==", + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "requires": { + "fs-monkey": "1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "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==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mini-css-extract-plugin": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", + "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "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==" + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node-notifier": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", + "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "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==", + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "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==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==" + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + } + }, + "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==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "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==", + "requires": { + "@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" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "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==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "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==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "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==", + "requires": { + "find-up": "^4.0.0" + } + }, + "postcss": { + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", + "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==", + "requires": { + "nanoid": "^3.3.3", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", + "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "requires": {} + }, + "postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "requires": { + "camelcase-css": "^2.0.1" + } + }, + "postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "requires": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + } + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + } + }, + "postcss-merge-longhand": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", + "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + } + }, + "postcss-merge-rules": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", + "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", + "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "requires": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "requires": { + "postcss-selector-parser": "^6.0.6" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "requires": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "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==" + } + } + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "requires": { + "resolve": "^1.9.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==" + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "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==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "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==", + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "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==" + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "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==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "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==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "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==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "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==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "std-env": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.1.1.tgz", + "integrity": "sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw==" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "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==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "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==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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==" + }, + "style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "requires": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "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==" + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + }, + "tailwindcss": { + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz", + "integrity": "sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==", + "requires": { + "arg": "^5.0.1", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "detective": "^5.2.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "lilconfig": "^2.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.12", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.0" + }, + "dependencies": { + "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==", + "requires": { + "is-glob": "^4.0.3" + } + } + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "terser": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.8.0-beta.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "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==" + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "requires": { + "whatwg-url": "^7.0.0" + } + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "webpack": { + "version": "5.72.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", + "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "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": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + } + } + }, + "webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + } + }, + "webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "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==" + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "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==" + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-notifier": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", + "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", + "requires": { + "node-notifier": "^9.0.0", + "strip-ansi": "^6.0.0" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "requires": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "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==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" + }, + "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==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "requires": {} + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, + "yargs": { + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.0.tgz", + "integrity": "sha512-3sLxVhbAB5OC8qvVRebCLWuouhwh/rswsiDYx3WGxajUk/l4G20SKfrKKFeNIHboUFt2JFgv2yfn+5cgOr/t5A==", + "requires": { + "cliui": "^7.0.2", + "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.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..90cfd9c70 --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "avored", + "version": "1.0.0", + "description": "AvoRed a laravel ecommerce framework", + "directories": { + "test": "tests" + }, + "keywords": [ + "AvoRed", + "laravel", + "framework" + ], + "scripts": { + "dev": "npm run development", + "development": "mix", + "watch": "mix watch", + "watch-poll": "mix watch -- --watch-options-poll=1000", + "hot": "mix watch --hot", + "prod": "npm run production", + "production": "mix --production" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/avored/framework.git" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/avored/laravel-ecommerce/issues" + }, + "homepage": "https://avored", + "dependencies": { + "alpinejs": "^3.10.2", + "laravel-mix": "^6.0.43", + "tailwindcss": "^3.0.24" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.1" + } +} diff --git a/resources/css/app.css b/resources/css/app.css new file mode 100644 index 000000000..b5c61c956 --- /dev/null +++ b/resources/css/app.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/resources/images/avored_logo.ico b/resources/images/avored_logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..8fa84e1eae69c5fcc7af131760061c787ddf1e06 GIT binary patch literal 112436 zcmeD^2V9Na|F@x%7FlVjtfE0iOC>4|MH;U*S{hokHHcD_Xpja?nlwoB5<*)VN_+3U z$NirZd3$?{cK7}LJ)h5WpL?D&zUw^ae7|RW4+4RKz(K$Z1F;qHelG%{2L4-He-H1% z!$9oWhd}W1{s{9S5Rx1i2o{#_;V0V>2n!34bL)>V2?DXr4+B90p0GR(Yy=`B3IlQT zq?jNf{uX>tG@;P(V-heH-gpqSyulLybMI}TV@D)Sid(%+?@Q);_wxk1M}$N)U5tNx zCcY5|#=Vx{9k&NAoV79yZDzPD|1ui0YBJEH2eM$VHr;nx}B3z5iRtP?=%&AmgK4 zjs0703;6%~(M9rD)_RBeae8lF;zyi%8*&PVtXAca?ZVk&gHy3bZ@mdM8>SZt-Jq{}$m7`dVdYg@d#o~4|=;2_- z2@C5PH`(eXoaZHB!`8+*h{4Hn;z$Tp@D4)_tPh3(u8I{~l=rc$rN<58qtR{ouy#wi z#l4``lA9D9$6AW^uIud$xOzl|q4!laTcYAORn_%U(pAm*Yf!O;pDzsPeY!yu_#|qb zU113#kuVW2k${4fFF?v!DUUk_qlQL8*jiY52MZQGZg7^bv6tejyQkCLb7QV>KKB;I>~07V$}LgKb1FIWZG)xYmTN=X)!qM0%nm2j`CZar$9|5{4T2 z&0|8NyCd~lj8pu_++>am(w^Z-c^Tqx@pRD1!&(~yui;)JX~z=BNZH7TEu}<#q8a4f zd7R!H(`rqIn9pH3gO(K3L-DcZ6no2_wVzqE3#;`K8ZR}6_l$j#X)wq>{JGM|ieLmW zkVHZoGGul^_QpYLiZrwLzF1r?T*eV;&&x+{r1A{jWPg{9VVft^nDe-2m^oA~48FOjj{7%Lwn z+I|g(e{EGT()c<_y_8m-{1%YU-u3e;E}RiIqY;zAu}Dj|yxlSk51L+XRNsn}QbKWD zN$w=1;O8%~F-02D^awI;%54{Rq6s8G@bG_n5bVxKI-K0Kp(ESMz$OPsIn;?5%l&3HfbI%=PhBC}T5GU!QeE zY0frQpPysBx(?_+BK(#3uXUUTHA4!~>Uqyh4F&o-rK*A0`el;&Qmlq{rdD>2U=Dba z&<4qRygx?HOSCmG5#uk4!xnMnoTr1=6(`8V2Hc{hAPP~>Jcm3jUfE${iOa=gi}$o3 zFc;?$1%2%SWO^>0pqUOi54XC^V99L~$?W^Dk-nn@b|s?}EP~nCU#d?sKB7B+xSQF@ zm+Pz6uq*xb;o3vE>CekYokmg3Ry6lM+SyPar|%^^zPA{$o+hvdBYS(659L5xPb0Q* zyENm+jZPz79uz|bFYh$=$XKUHhX?!n6Y^q62;+7{3hXheFJrcP@IG8lN+im#!=k6= z9);=9g`FMD5}$IT5F0tWH|QV^p1)E=jkD3R!=L)*>D|&#+*MEqjt8<0Wa@r?W*SXA zaNuO1>}f%Mo@-xkxprw*+>RzcB%RE97E^%svFzP_BQi>vj1Lc0GchY+bM3J`9#Zfn zH-{BL?jjLygF1fTfK;2pvqwj*1~J~)5$RX7qo@Kb5GE&MeVptMBFrB!5LWwKLycq~ z;~qL5>+V(2plg}>AXaNt#}#_jK+VIHgaAF7z&%*Wmo0~l(sI>(r5JY_-?@8Doa+e3 z`gnX+b>8!I#fX;kFGP1lviG#=o_~93Bwc-VTk$);Bxqd=J-4)98ki7(6-^)xKk{k}O55ql=%v$BDsE@pVC3`)6}Ix_l}5 z=0Vq$E9hm~xZOG}EJDC@k3Zp7$G=WlDG7VAr#4E3N~V9j5@t)Ij9~dI*2~HIpmmD` z{w>aEvja~bF+C_>m!(rC+A^STLqrg@N(b>(b(chek9>U0){x<%BOL1i(h2AyDMCO`-)MH zMS>oeg+JDvPmr9qFK+GTqMp8zkjpicH;2qUB@IVtQks4o zq~t{4U>pi9koW+aR7{CaOh_yNF0q=?eyQ}2B3IQ^Rd%w-$Pj#@Dn>-5syq_pSVv_$0vQY?zrNfOf1voDqBv|o+nOYTDYJi zcp$v?Yuwrl4hMfJErw$tjr%@jvjI1mtyJwD2T;Y=T#j3xy;GFnQDaBVVZ$Epa=Z>8 za)!$NspJ`rMu`B|2BV@@K>=D@=?Lum*q3C&gL6Q$N)r~>8($=+>%w8S{(&g%x1r~; z;dn2}DTq||37KSWQQ6;wp%z*or2*JMan!{?1C+!_I8|?CBhk*J9`>zZVBvta~5%~J@IH) z$61VwJV%=cN6C5BOisQ(rx5mz0U?p*T-`I+(bE9RQk3`>Oxzf>!w?6dyxCUKVy!Yk zj(BV`AE?uu&p%r>pVLh_(R5Fod(^bc-&xOuYkhy7Z~hCC%`DbEoz)+*drsm-Dmdzo zfzS5X_guqd*U!pR%g6UHTi)ls;@R`c(3OzPPgY4$!mRrCHX^DKN8i9~FPeB$RwSLo zCu_~y*FhccW92lhvESVn%rp9qIPdoD04J)zyiAUVv9WRK>7D)U;uigF*`rJ`+GP9O zny@TR#b)vG0tD|!NMn$uY87l{4jVeZ`K@uwBkch_uXkqkAqQNYDQ@1mJK%HJcUZxq zkm+uFN;^`XK$7u5doE56H1u~px#4m`l$=Jnh1>etwks%!_tVG6D2V6}Sx7pO z3-f4G zWEb@Td|hX%V+9dOHCmt5v)3JPVwHQ%sE!A^g42bYt$xEfa*vG2r9hX{# zYp?V_b@v{|JJRd#ysjM7-dul=D^FDurS5OIwqFPILnTjecG${<^S!V3xN_Dao2tsZ zFDE*JsM6qRfp^}3rsfk0PWKP-mz6hrT+yjY>bHM*8LPgD`>GE3>`P3J?O11%6QwF+ z8F-e&V$2k<#ZM(?Yks_;X9yXqUR6!_i)9JPy#k7qAS;on@zayHs~;HbnW{QUDD z1OZF0*2R?9q)~HLwI}9fO*3?i<#Nxi+(M<`pa?NR97W!*Ck~xDsJ;31CdIg_s`BgG`daCp zTk+gKfYn?7%B^8d0Y|cm7mw1GSvM!8emS1)5Ps zEE$YP;x=p!Gutx=l&FogfjyX)b2A?b`Euk3o!{2iLi1dgI@Xyd!i;kxz2Vz6$XC2T-r~9w;o9bug1#h z&J|qSxc{+KXt4!>|8tj)(8#M_PsH78+FMInjF7e7pv%pyUtvv``-wkf&CQEtqC-6w zH0!e4J9;s_-@WSz3#E%Xiv>_Fxg7TF)#joN(aioq*Fgm*OR|0r*cG{X(0Kc;llC1U zQavUOG!6{ArJP0R71Es3WaLCT2J1^o`4|VshTj^ueK~+7ck`gN``$vl>+&uek3EUC zt#D+n>M?oZ!+yFq&XwldMF4ka@_F2w{bgGHo!q2kCc7UUWsWLH@gX$wGpMKPxS8wrkngkYlGCjn>CS#>*4!>}?9fGRCtCR@dA4$ZtGf-E zCHms!i*-X??pCZ}J_#Byh4)TUhqumMwez9v*bz(5Ky9kH@G;AVGwC>DjvtIXHT& z!>sQzUoVV!_aO(=yv>hEK)ch(t%_gPq?v#8#q|i%omHU`2dl@TkE!JCkO&rgWo;Ug z_OMw4D{g=P$76mw63_8Vi?36R#Sc#B&rc-|rPA$N`zB*3x_~F@I{2s}6$x2R2|qQD zRsa}odX2yBfk#n_(%a~PBdd;6atid^KGeXjPDJD^*qakA9Q^R2UtUM0?MCK{mk+9H zt&Ti%?Uq1--zF?($Ai|6hFC1LF&69rd0!9Ti{0K38Xnj@fEl4nZ~LIvxNBP`~+`7{OdRvbdt_IGV~eZa-ek|vQDFIE;#GOsh-V#Pw1-Sro6!{&eiKRDsz0I z)vNW`JPrGGUN;rB2r%O)uG2yI*3*1$bSU^Tl8)`t+brbEel+s>nl(%!IZ_gQy%`T| z3nO&&Y4SytZBuQ-KJd~9IuRt|6(hK>0oxsbp}NWgqO2N*t{=(SScpDJhR$U|&z?&rCGk z7KTG_bdST*tDztq;VewQ#{6L*AT$3Rg(g$I0u`R;^lB~=+2?+x{5-`+HF9Z3t_(|@*?Q(` z?3#_rUkc9`I(>R)pWKP_v^s5-ny21b#%D34ItVMZDA8?Zwow$|Yd*(meAlG?u;!*c zABGu^DCsb|Ri}~4z91mG`GmBq{tS}sk#z6nkK4P3N!@{&bny{Wvf<8;#M~!$@9^Fc zr?J-i;;ZYQnJtd=242`C#i~|ui48CEjK8b{8QJEWmoUeKW8LNX$gMxJ1Wxi8Bw@2kEu)5yWe$vFS?-cCn9oeQEat8R7I zgL-z<8J9ZXiIz;hLGiJd!|iEuQv4dZeqJn6NCLinx0B(*+n;7G(cPQTj*H_ilP1E4?^*$!yO+S>e#NM7XhQHmxg<-5m;GZhxUe{xQ|g8)=a*YjB-N7lAyw zZ)51Q&w_?GzI0X}JEY^M*7hwiechf|e9Ie(CN#|;&yn}le>o=h1KT;Y;NF@`pj8wb zzMa%f1j><0e|6I93|ow`E<@Vw)8Rq2ct={_Tn`ZQ*%o!-p5_5xx+o*Y_k-OS6>9-F z8zLP9k`bvKdM7}W(U&gS{7`3-`BQHm9$kDpv(V7SgBR|;>fPiBC}5Y^DZZ{WYSkrA zmK+;GWc+aU2}&L&Ki%Y~vRUthf>$#tiVn8EJZ&)A8ttW8^C%Q?zK|y=@@m_g#sH(& znCpi7Nz0SuV60-&7P8xBHffStr-bbGBP!Gg&g-$HwU1>6I8o5VtFAdrZB7te9x0o} zPfvdER@B+ljIb06`IAW`uy-5kMdSs#28Q%L@k=GMcI)Fj1k`+1_fYuRspzaWB4ZVZ zb#;_rHD-GMHTu{gU1`R^cea`F#4=bw??1(F$BKA_vw4$jGFSDL#wa163$DW@%4zOQ zlM)%E@Cjjv7xxy{c<12d5R|y?xpDdS!PmH%jy9D0PQ=k|LGGtpAMz~zLmlD12m7P3 zb(0R%M`4?D5ADLlieNLDQL=EY*$ zQ%d5Q-(H0TS~#RO2iCWIJ$CS7hU2RIH8&Icwg4q@*Gl+ zLSMDjVh;sQ0TY)UamkwnLn+(G*2jvQIr2h$vdT5d|coGI*?%wMxHI_EewP+nT!3- z!q1j+w_UM)t*ES0EH9msXNxha&VOpixndaqZfYZ`KlUbThAE zjnbvOATOs=y7ZltoX08H9_<&&DGc4Duv2tvoQja5POzfG2dzk#iyC^EhN@H%sxfXv zXAwwmamyM}C2)K5Esms*2ZjeX53G+%Buc1zD`g z1lU@#uNU_`*a5mhF=sm}qrP?PuNH$*l(%I`+t&9Cr87tzJj9YjxcP~!6Xp6C&{~OD z3;K~CEGl*{X7Y^2)>6xU5w52ZT$xIr(75BO8p09wZswNd*}}AcfDt;-ORqMtcbi_mW)1 zybWAgl;Y0Zkf+lnk2bO6Vz)d6xtJMnq4 zd-GzcaMRnHv=yiFWut_SY(cQBO?|@9^R!8QbN z*a3RhOm-sBSg3~dsyJR{MTC~5e;X)EqU|g*52-B@Xd2M>dwA&dVZ$9+ylQ#H={E=- z=P|y#Z^J`b(N-?1@eW^wL5gU^O_TAfUj+f80rwlF>~qWqq9Fz6cE9F#>`=OLK%p&} z(?2cz!J+J1Zihk}j5dSMkF?|kp|a6q0i2C~7#RonXk@l!YmTX2EqbA|jhJ%ZCM?Pa zrdmk{4qQq?Sw>&INMwBS6Mo|*L-OZx)-)ltD%Y;=L(r?TcgR$FD89i1oy>FU)UBY; zt)&w<>Hhf5<9yiPa;y%Q4K%wXY=5!rn-`zr9k*+1J|V32_ql}-GAc#L+U=u_OuCU< zbl+vq5xZ=`>@+IY=&`P6_L@8Hbh6Q~)|#%%IT7n4dYT1CnQ<&rsHI%|Tse2Xf$Q1* z2iAgdsCb?ZgwMs+;Y6c{EEu|%W4|^>Vlj>>95<;IR-rw$TJ%)-_Pq6=4Y+14w0EsOj5?sdv1%!pZ9`C7Z0gYa5oy9tEZL+uB8s zWbF(j1f58(j9vzvl7`{OXP?P+M`9|}1xrr6+WeT`5y^5xnF((r!K$+eU#78eIlJ61 z0kTeJVRz30)vKY{ea{h^hTef{(AOR#4-x9gJOpg;I?TE!1$Tw;-yp1o_PI1D?&@va zcLcQVRl|L;7dBRehxnD$e6*DbYcP?s^57Nl|BGLB$8q{lspgOCO?43k1sRE;E2P!$ zc%;eBeob@-tW+CbmWwGXH#?L_X5P2SYu>I@99+Ub5a_`|>w;fFlP|lEzle4u55FHqn{s#>`9#wrH-$H2^u-k0_Cbco%Z)7y9kZHs)zu+1DQvFL!H3aB`0kjsK~uBJMd?KCMs8XM7lI^s1i9Au>Ls0^d^2w$9T=k5cXFVB*e5 zLPP_$=$e!fgCjCeE)ZANrt5Fmly`opXLqtRn|ED7`Pk@sgAIXwBqhn-HI=DE_$nLk zwBvMaZM;3?^60kGtgg&rJ$lB8A0DFCjDBR;Am`**D(Qq+stPTLcGNJ zX2l|9TdX(SIkm~Wp7JiWRhX=p7^!^X{VMJ&4g1tGRFz~v-zsnvEB7|Jlt|VEJ~fp` z)Ea^TQWx*M#6f(scTK%qQ|@+Cw_L1iwEw9>T*uwW&i%Th;fmqZ!4bSe8DwDxf*(i- z$1-}B2yv4m6T#5eZohVEnPWTdskv8taB(GiWg@Kw^m8!I#Ro^29}XYC5VV^7eJ}Dj zPzH}GZn1Wa!e!YTW3YW6l?>xfW_!?g!U2YihyAb0*&Q67c=Px+)MZj0Y>tdQR&M#Q z#)a-GmpEyb2o@sfgGP*;Nv~!;M;8tlKJ4&3AbG-9>{NZ0Rc8XQt31zGQHIsXBpeTZ zz9s7x#?TY@Jn611MA&E1==1H#BEXgbqp`a|H&LaR0FW6i*tdVps{|&C zNR68e%hlKWlsz>Wb+)$?AmTRA>*6I1_$AB5-u?3YJkUmhK&Q`kg&QG!G0vvzls~Zi zT+6{rChAjNGc27Sf}&AaDQ-g?DoGB z^k@WFioOwx=Lv_sLnb3PNoieJW2%af_!NP}syv{@p_Z9K0Bgb9$49}i%W-{Q?n?n2IU# z<*PdHAi@tOUe8`#<`57zb<;c?zFn7qSGW;JP3}4wV1^d3$7rq{0ZoSWnTD!+;*uht zwBA4yji>#c{F;-D!BRE1F%Wdt|$R1VPjL0FqU$nO5 ziYit%(q_GaF(on=S@Thci6Uf>wezs~GqY1!(ZXNqR}G#+&w2|e4v##P9A&53CzEU_j{Zi3*W`yFtAfh zk}+~C9;4h1(H+CeJ66|nvFiYNawCg!x@tKj7_rtXm^1n`N8*|Y;N{Bm4eoljk42x> z@5!ThMS2=wP29x7MQp4&>ZvCNTBK4otK|Jr7riwpR~=FQw4S62yW>JWF^w(8$eYrH zLuPwfur>=AYQMwFuykWTkp({WL77dZ@orykl7gv@!&yuU9i{rX$Vi(tp-;4V?XPXW zxAWSE!H3dWq@^)8FI~B^m*sS<`)-$L9KSO`s<&c_>eUjh}of{bf(f4&Skl9{PH z>O9f_WxEy6vX z5Iiq2EoI-FQa1hQO3!hE4QpG*J6@JN+tQF;`Qs5}NIHS@=k;syWu%%vSlMn>#_3DM zjfu1JjNLqND_Tn?RhBa+hBVZ6RIfrHUzTZ`I{3cN;B!%YjdSVw8vUb2>^ew?vLrqx z3x@lwTWvnxd+owX?UJ}1jM_iV3wE^TfEhi?O3i`Bq_sf`l!uDbx32;fPb>FRhoaWr zjzeV+b>B-Vgq!U$bzY0V*0gqmHNC_q;e0c05wXqIvHbgZfKuiJv}OqKP4hb*ORoDu zJUWbzN6agY>@fSwBhA=W9r>=PQr-`fO;`W88VgC_8h1EG<>p0kHw><$H%@+uRN7(^ zA8U-t&cPdbZPlK{hKZ4X^pp8IYKxr2Xt&d)wr=Fsm-{0{d=Ja5|5{WP%a9pJa`i6# zX#~;Pjbj?sXR(pY3Q|%+?e=R!1l>@ZZ+sQVkjG2pkM&Y>B}Y`?svRqcOv`bxY6X5(sNE3$Ns?y9eHGn{DW0BZxYOSZsaNyj-(Sak4?6J8NUy9q@V4|B$W}NLK zBRs6LfzLh9NLckLTw-? zn=xD>Bj;L0p&CP2HkGQZ?Iw4Y^g7^XVi`a)9 zVa6R5;tw4(i=9MwJm>DO#t3}uE=+)AaM{oNTwUCd@bU>x5-MVw)uhNvwpCShash^bUH)8=onu_n6lLYUdg1^wAOhOG-n zLB({uu3}xp*?wna;QS^QK{p&ZLZrj6)yW;}Hh|G{soSp}bvRQycbJje)R(vnqV%q5&t-o65wRM;1AXq;W5+2LM&?-J^_)dw&NLj7*>qlL0Z%#oA z-L?;jNm__@<<0q`G8O&PrSar(?~j^E%{0(0Tn@q2#sy2lw=>K92V#r z^7)XTR}V4mM52Hb#B=9ruwz6z!)Qz82#POD7^%p0x)4o zGgPd#Rh2qJ5ToSTJ7749RlF$bYXzMT&X3N=Tx%?L4b3sS4!f%7=k;A(pCoTH71yp8 zQ=!FB*7_8vz-mo}jD4ak$w4^{=3I_EJ zd29HPWb-S`x^oo)LL4XJZnNQkLEL@Q9IGXI{Tj(YCUf4|t@Yhc9%|vlYiR`<7qNgo ze_gY{g%bBO1%yZjY5n*4v7rj*88%aF-=67WWrgi2*?fWKp&nab^9N)BorB{;b0&(H z&0a?Qm{bP&1;qz~uD<3`BXIisd4Go}QQN4JD;OrND$y-;u?c^hAG`ZaH3pkXA$u#U zbqIs^-U9q%r`C>ryoaIq-r_~pPM-}_;`>?j{lHp^>(S=MwrS@P)J2!YN(hjZ-IZUQ zF&Kk1kO;0qMJ?s`qxC~zcE}6UeK76zQRcB16vjG?_w}jNTVaKKCOBY0Z=7OjbbELE zYEd5oqO?=Wv6_tG?_>!^0*6CFKbL{wdr&K18>SK>1b6Xb4Uo`q=k88rO#K?WJNcA9 z!g9B*{nLUxfrDG$9!c6<#Al1-ytE5R&S!6{5FGmsVM|hPqf_=!o7vpQV}1GMO<7%C zEFI?gvc(Ru!`-{vJ1R519S?ZCE=@4*_G>ib%+^wus)z-x$L0GC8%UTu*hlSp`RuWP zUVM*-ZDh=FY`E=oI9+|`?adfOg4oYuwVb?hI_~Om939(xzJ)@mtdeXWcE6O&0psCJ zV<*hrSpB7TMA!)gVmqZ7uiv&-I823MPFTVAEZHPua}uQq8RoqmH1ZMGkXj+JF`IT9 zRmwy(HMzFC%K>}k%(nvvOd?XKD%eA_{B(-c5Czf&C=(n4WPYfJ_xTKR@GVs&R1>lA z;K2dMq{N%4&skY6hiFo=JA!6dkK-B=KOtMk*f7V9jp8_t^%}otW(yu>uv!u)t2?e5EhjT6O;G zQN(=i7cea=sW~^wI8%kh))2g@_phn6!ze(sKgm(Ss>QPUwU?&mf7OXK~I6abe zJ`pBhug<|Je;hP%A+beH{sFdGr~zj@4=v7)0E5F0*{B^I;hzPm9)s2>zwnJTm(l>H z>gCH@-=0Q_g!C3&k1gswVOO5w-+d_MW@@_(cyia?8JC|Jlu5xSO3On=8V0^UFD8GP<}I0WNP@VpzneJsnP-8i z$Mp9qB=;ZY!ou~z4Z@?*4jpyZ`b){W9J8DuH1ytf;=_{9nt78s+a9IAOu5}*=7DMT zP{c-&{VW2(XP<<0^|KsxGQQF!1ZqgAyXz^6z(C2d2EhRVCxUZjgD;;J1Z-(`?7*UM z^7XJ9Z5C*}MYie?X-BEqZntt2_nT$~LM~0I6Io;iO`38_4j1?fGGIWpmUrBy_=?EjJyIYOaW34-LMl$4r?IEd%A4sS=S!A&e0B<875S&9jI4Q6 zZ%%msg4Fv@^adBRwg+NwCK}lb29MiW%SU!}ww6exYqGY5M);*0r-`jaY-sVm8D*HoZr5}K5J9W@1dHuzHgGWp<2^{ra82jl0 zTd?*Vy!x6vdo<08L^he?^C!$8S!a^<<@&fA#JOyu{i?7sm{BDmsf(C$@m`X=)s*!VgI61ClX>|BetF~x13VY1HBgd=tDog6~rJwb!eQEnay zn5b4kj`TISkiN70j)WP@rV}Y{7qwfy_H_G_g2f4R+H(CZ>9kx_Bh~Lu9aJZZ2npHR zp>*Fyf&FEX@yESSHs)*rYrB!_D>(OUOyG#p_s8Szr?@#f?7~ohOF{JQ%Fsy;oh_io z1AV4teFtU5ncam)?qLMD9zYu3F_7)5cE0j>lhU?CHNr-m1C69kRp%_gXl^5&^T|uC zu|gD19yV6kMm4DlsOTCG*){a4J0B4ZkUtRXcS;$3fybmM3a0H?Xup=LZQ!O(eyF=c z4>f8ccu-lEu#Kt;4rT{DgXY8+IM1k6bl|bKl8z0~qXqbGpwN<&Il)U~GOM zXKdKpU}HR>2RjbXPy0RDwL0wWNR@78zhGkGL2I=DS0?3MER^@{U9YHeiJe1Po-28= zw&eM>o{#qevb`?2(1V^zUs}4VrGOBCH?bp3W!1Rz^&6l4`THB>t%ws>1$65a%i#UR zdKJvNm|(||rgi`gHlyF7pV z<~_h3!`>4$Mw!{qJQkcP&A9cRMcvW8BynrvNH^QMma1|wsq7Jmf4&wNS+|a3lil1} zt#4cC=pVNkC_TIAU!PHQ>M&c&&%e&jpQ;E~``K74VoR?FxA8M02Q$RWbIJ8|Hp%XW)!#B**IGh+c?|gy-M~C9b_#yr!St- zAMe~7iQhfiCx`lWzuox5knxu8!ze`e6&_mK54T%!e!IWn=N1S@6me8U@(uUnrYNvK z10lpOb}WKV`RXq4-x|IEn>XO@j_()T$?@m_``ue9Qeb5KOFeOfj=Dh!+}2> z_``vv;{XbULV$ZMxKE6Yp&a}B$D-@&hqJ$Z8~RpMG+0?#IaJWzKKgcec+4N9(FZpR zxWRt(|NaH&zyLP|xaCGiQSLoGqwzI0!=Fn^hRVKv9jvIX9{$qRHJS|K9)dLIz)cJ8 z{|Q44(18i=69WTd&)>f7>$`os4J9jEhdO+?3bk)v#Xs)-`zug_g4HN}{YF$!P!|f+ zi87G)I=HF-i?smYjSp@WAluZqxSo-#S6fi0PSv8=*(?7+H{`>iLzSo#Cu&d@7R{*V z&%4K3T1GNKUITCw|3_(ub^avy#`E0V+EM)c)&HV-s{E&hVSP|jYd|F>^$rXUj`@P} zDE|w*0C?hp+pw^3unx+6y1G7<)~R7Own~(-aT6*hXP^zVmsX%Wg8u^T5J!OPmcG8R z7%#7mF>daEf9F$aolW@6nL1QPMt?gfTMOK1+cpB+4mLE5rw;CBS{X^l``Q)yXf81ll|xeW#SlBWO;Av!Sv-~-z`jg*w$ z0Y1LPsq>Th1;3-1n4S^P7FYu~nCL|N1TFwCnbg$2ejc91r++dp)YThMZEYiI0N(lu z*em&j@&LNq4cOknIyxEG#r)68`n~=G9oZMaT(y!kPlXNeISKmdL8!+pCe1UIB`;rx z0ywR0RD23IxQRkpBU&S#Yc}WZJR$6 zFK*r(=Y!$2$Sv_pKs!TPT7UOq=y@~IH`9CA7XUkP7~lYW{H@$IGJr%?HQabkCpf@ zAyJD0_U1Ey&je~q{sgcT?%Y|vK7S^@Ub@r-`vLPMCwK|~$ZIer3 zo?0e=BX4HbjF$3;_W01ySO~yzD%uMUgEFNZ9b3_oZaBvb#zLPhn8;Za0Qhhj&dblY zt}b;xB(k?3;7B$LQf8e5)+eC%B_27lGUJ@H;aPL@$j4a|w19+w7uE_2=+_5M@JLs; z5uk`NSpbRu$_mQc1;<+_V4&j@te49F7vf9s0^Q|*@L(leJN6CWxoGPL!5G^uWo7iO z^RPaGd6?yrzu`)b`OoItb9aYJg;2*Aqxyq#R_EsrHld^5H<=f3O~hi*`@1p#Kct|& zF&Q?x{Xc%Z8tOxl0N3A<^V@h(hOC_(dg^@>e201o7>|GYTVfU=0pJJIgP~NI;|VwQJ~K$8X&luj7*Q zp>e)>U|j=k<9!(!^lux%-Yd9HZtGlVh4i(yj-<_J@6K|3^Aj*&9|z_npz?=17y1?> zEr7`y9NdNWx)B_!2G_N@&#-Tw=18<_WpHZI*_$#kye0NCfyeJlvpNhhcAJ`$W{{`(8i zLHHgv4ZlW~H2A6WPL0^s|5qLwHHfK3SYsJ5cJ9te2_=I>t3h7EuwRZC0s*Zbi5 zV{nPjhNh)V1KP^Fa8Li_x`~ee!Tw382X6lrFF-s7m`Bav;#%IlOmpQI+;akaXH)@v zS9~8Jz=1I=tZUi#K+TnB=g-#zR8jW7k^h09pyl7sHCI~T{2REee?`l3#Q{7JVEt(- zx{r}VJrMY0fP=y_>Vd$f^^%lCk39{)suS_?y@P-b>gAI0@8AGjREaPq<$Y zTr$(q1KyK-`qbZv?z#;0kpuL;=hM-!Qttro)_nOg*z~J9iw<$HjRJaLGQjs=tOD;e z(RE$pWZt>Dj<0PH`WFE!`~v8Kx0RI8dyNd_HahI-nk?(7 z|DoPjQ882s@Lh4eZ!-Vje}L02z+1G}17RHn{rv68_ygQIR$?FjRQdictfMnNr@id^ zJty;OrvHG42Qs;3floQ>-+feg_}ws^C)iA^){$X??xF%d^t)A|f?#OjP1L{e}K>7hu0N+|#xZ9ppP3900DT z;GFAX$Y`m`fO|!&s|UvChL;M)Vw5W;Hom7d2!2=pl?&jy3a+_W3Eyb5}>odLLu-n)lBzS1CX&z-9WI$zmO*+cnraJ&a+j-c0`M(EQH%u_s` z58u%x50F20S=mqpI_ZHiG2JM7`q%%EKQ8V|RD66Z3Z2%lz&*C$;y@Q!&KD0rgN3#> zdgxbhUwA}B!#`vXzkhhk%jclb#lH{KPr-b24&dE<*^V~(01XuIY=FuA+DiS0HsA5% zpQe>RA>k{a7j!Mkxh)H&53WN2mnPZ>ae;_{{fXf#=_?z`1AbF)-gKZ~TR-v5PklmL z5YDkLRDKK1pPt?i8~?QnWINhq2eb%yc&w}*2-oy$X??f(rpkRHOhuIp&Kp}T z^j4;AozCW)D)))-O4@?Zmoqrm=o8@8viWjeu1W%E+VuK$-@roq#`)x*&gPqt_tYoU z4-yhuQHynU;au>A-&P z-~jn!)z%IdEZ2Ig$@6?uW&FD^v;~)Q+zR-c7+;UJ5^`Bin4k_AT)wn$xUn}5#p z{Z8IfnAp86Z58yP0oJ3w1HAd4)BC2@EkNUXcwXdO+VJ_Ng*M;%^}o0IrpkUI z3~fPpzSw->&o&?QGX*ZCsl57M4a2jVPM%y^JrMe9c6KhGajb7b#=m+lhb;)lCV-zg zxFKPDKg$2A%qPyWg3xy>SciOPGJpQp z{{#7B*4GbzUaI|;LPFK3@bKy9`KFWeuiimh5bhhFZCgIqbiltX+>g5Fe_iHN=>s%t z!?Ww=%CFg^_w<~*%{NmWfVSXL%?rZy2Ee~G67XUwd;aIcfaY}{KlXRcMxJv?1KSiN zvK_U0b=-pb{>k-Wscb=e`|*8<%W`fPI#wvKzR7#B_3JBFpv{-RXtIa(fSNiPtPfgT zTM+7f;9Lo~p?ftt%4Rum0<<3t3|zc*caW!V-pp>EZ}Rs&oBw`(HK@hhBYyVmxIZd~ z<=`{A!hro=Q`1NmocEeb8$VN8=-c7WorT$aGu4H~wgsc2#`V6P=qj7#!VA;^b=YRl zB-6RPhx2?3wfSa}|6`NY=NjukhzM14a(|aPKS705{!uAV79i_N<5FXfyht4utPTT-5_C9?& ze;=Z7pBxg|v8XoROm$$PwjlJ`4zBCV$zODb1^5Ad$*0ZNm%N3=;@f;P$$z1?;LDdi zqkvu-beG9;;|F+hc0OkcP1t;s_w&spyTy7BZ9%v{YdSsTSMT6nNZ^0+#d7oZzW@)& zpCC7P?!M%q&9~5bzPZ*5PR{qJ`HWlq@Yyc*Uy#R2;0VS8??S&kzxsxz#sNDT#lWzz zdA_;IAEt-<1?Ms^2>nl&mJU^ddOq*-=vG1|%LxR9;@Z#=YI_rkUs|SA^K*v=WaotcuQ^b%~UVuY6~VLjGsqK^g~ zT^_Xz#ldUFrki)vo8y zyGJH}@00(pgv~dT{Glxv5HRx`_Qi|iKHJUEg}46&JYYWw^uVNU#$e<7i9-<@df zvmKpeJ{cDve>`}$@l-t!&hrTir!VUIu7%bSXbYyK{QJCMh%2~`PNwV6|Jic@@a`YJ zlj~L*2dmx6f+>gK^)TmzI`8|NEtb`LeiU$EwHsR_Igw^yy5rls`Ux94apE z?>-R$lf&6j7 zyjc|-^MQVQ*Q{B*eH{~R_hLPLeQU;jh{7{Pz{UOlLqbbWCE(?_FZp-xy3qF9hjj@0 z6^45Rz}`mavmI;cIrIMm0^lW8e0Ac#A1HvQqCGt$Xx;w@1i)q8s7L>Qq_TXJ0=}*q9UUv% zu>*be|FpDr=);M9`MC1`3liY1jih82TJ{0ZF6rzX&ILIB8Sh)7Y6*DD>gtM~1|C;4yVlQp*5bcd=OC?n29f=L&%9f7WmFO3QpId|(H-iHM*_8?bI& zJlNOKTLR?&XFu;$K`l`j@OsmiFI_Eg-Niz`-G%1Ad9xIL`=^(P)IY_}zyZK>xx07E z#}+ETh2-bs`+yo47<~$G`P1*uAg85z4S0?i85wgwdp37P+5k8YU0&W-2=E|TDjNTk z`)dvW-sAN5kG_x$YIB?G5iy|)EodZSOew-Vq|2NXIyamb|fk{ zw-XNZ|FQL#TDY?;AGQNSLt|c07lZy<7t*KyD({IC8DLFke;$BGJ4@95BwHp90GVKb zTj}G+_BQCN?^kl1YaAI_66*f_%2A+iJOD5Vmx-i5VCKOAARkJglLrI^)q?$FZ-05- z=kMylrcH?`3yZH{J4VcIojSn^cs{S3GP2@xmH4mivSbIjtI(daB$S8prHF(NJ!lfT&Ja@laGQvJk-_m z#=mhNpX$+f@7kKXx`tywdOdK{fcuYKzX&owmm;7%!Mz^btl&NYZUu0k1~)gjsldGo zU2y$_#~%*-;lLjb{NcbK4*cQ39}fKCz#k4Q1qXo6yVRF8RJy^1z#4yyArMyZ&&c?K zJ``#IfuM%r4g`Yd#}gMmD-a0cAJ6fO)(FJ-dn5ueULfGc#Cy0h5ET3KJp=&56YpUd zfcrblGY)nfk@5G`e}@4&;|KwC#u1t}3=pe;@e}zbg~#&&L?_}W!pI-#$HM^esbT9W z@&5<|f~SUIatMFCJV5A_@HqLC;(vz6=|Nac4UeCRzKu`pq@bU2cpCkh!{h9m6#pZP9ES~lriRDa^`j=k zG*iRl?3xt+Bm9#=Q^VBX@%_oLsbQWe@jt@fYaD<-HEi`g{Z9r?4S$dRn}I*V6Ab*p zo*y;vC%b+!=x4k&B>pFRe#ZY`*N+TegnzQogr zMBX?-lgJxyLnfg&-bPFU2TK0YH~xfC@sH#`UoZU6F2Gt|a9e{L1F;qSf{S8o3vh~8CZ1OK( z291ILvBc}wTdS?DTiR`HTWUN!+EcQ#2h2hI)_IUMt1JTpWBa|lIzEVt&wRc+FK-nJ z;8hF!qACJhW>xNN5`nUafWO7NIy#Mm&{x=0e|#_u{mEUp&@h~s*y{<>uboY~vrPle zby87NYZ#mk?sV^jg=>KS;9g&V$Aae_z}X43_wKb9LVvT&~ozO-Tg#7826+3i`*H4Xo+XJbKjm9+We$Ic|^- z5fs$*e7bVy@(#3*&7drTDdhb&*w!{8CL%I(TQeIRjvlRszWNk?3v8MM0B2eim4>m| z!1+}g4vtFHw{Jt*(}0-q73BTHhaInfRqkx#K--ZH%bV*3d~_Ntr0z||&&8!}PJ8G8 zzPo`h=mqm0;-IeH0Qc@w&Xs=P`#E4T4GZ}X{YQfKm~*x`fIjTbV(}if!$4;dpDpZ( zbilWL(n4sSnl~b%+i#-mUp;}W@GUKyTc_ql&|M`7Wh{;yyH{vd!Z`+mMK zrppI?je~Dbl2)l{SDBJIe`yo_x1xDb5ZNr*|YVq-GjrR3%WoV zTfn%(&|GQ!ReEUGfODhxClHH?>3R68^z(@WV>QVWIGKggJ&_;yDC8FvU6?I8l?GU+VBG>fa5bTgI5mDD;cM4g;Ndij zb{-`t3ln^^B@4l6YF^l;fH6x8;9EUsYTQD?u-$w6w$FY-c8m1{XO|f*wmt~j{7z}< zxt}-uEB=6U$YHxjw^(#flmp7#sIT8N@GIDJjk|H94t4Qj!=l!GU*C>b0M`k$7xf8s zx4F_dQ+jxIptyJ@%D|v>(ddWgP`9^_N-QeTlL~`#AHN#^pNZD#-kX`#ji2`c_w+4R z-w)20g!^|FJmx-$;=}fSxd1ng4xgQ`O>LnogA4LKfq;M=}COl^I zUQe&&C+(02aBs7zY5jtD>gU%P{SQQ!Fc2Bp{dhKXPL~Fr@wazx>Obg*Jh*V75H(*r z1Gc5$TshGtB>5jjgLaVP^y&Ha+eSu}|Dqkz4}DMQ=*+J#1ZR|0fO8P z2f>(r?sW3~)w_v4Z{oY3`kYT+2Wb z|DS!{RJtd^bLk7=I0CRu1s9#LSr!Q9*AL8AchlAVXP-Ag@6;#k3r$RB*B64d0sk0B znkCwcmJECY2v^tk%*k?|?!Tg9-L!q)RN5!P8XCXv3!yEVn>%2E(YKP*KM>-)Byzr*yp{SbGtW{7gPH}u#Uuk z)<`XLLa=VfWrF^>_IXq3o(RLfP)qB(T?p3^0bf;I%S_g+!GSt3zHSSyIg*vlS+MLU zc%ZFaHa<22Y)^aYeT!NBZ71+!-Z~#1K;7TlyBf}AW1};Tzr(G!cVw@o=9jv;oa+K@MlY|b z7l8KvYwv1+qPni|Dn>F|h1ibOXu8olc8pV-mWZ`%U877KP-Im^VKkb>Ofj7%jQ?62 zFg4@E{4`@HR@(^v!JnUGBU4es@=h z9Ut>J@4k2MJ?Gy0?tS;3`<=6Wjq<-Ao}(Ot3JR(|7(f1??(Z7V?_XtRo@~VL4X!|% zF5A!Psyc+<&bS>rs^5W+#tW&b$2;QVOC*Qm5S95ZzHx_9?o}vv5H_@{sO&SsD^Lg| zJA>e;o$^C%iquK>spkDOmngLeQ3xaxDNhyyH6XJ?Mo!;-#eV`wKZ$c8&VZkY5ePgu z?yDL=quQW*NqG0&`VGMU?t=aE9^gwi!TxwUo`pS!L>@6ECCyoHzFC(KUCh1>8*cn< z*RIBut*sqlzb&x+c;eMpYxk4AF4LbfO4#V-%dee>{$mQ2(dvOTQG53`<^UI4PZ&9t zFQd?@w!=m!AN%Mb`3yL7rX^wF!kU2Io8>Fgl$5G(uurzgiu{nhXMTQtKIv1%{P-|o zp4YCuex|;@eUO#>Vc$M5JNwENJ}!DzD55f( zEd$!^9hTlK&CRVnWQGUc>+hpoZ<)=P;yD}@(y?QAW}A^8GW3N{3Cnh_*iY`jp1WZi zeE8w5Rci0MQF$Diy1MrGP%)d(Ow6xH??FpLML zeJqJ(dg-OBUerOfmAd!WTMyU?d&K93pf61aeR>QDq7=ih{Wj|kOX;l*ac4AV}2`LmiR?PD* zqVB`ibyNFc-TS$fdZ)Mx7oL~*X=7qOlicp$^`~Bb)Nk><{;k!z){2j{Lzxa zu;w@%*k?{pFO~h^>B-DL!#wE@d^`-*lE>vmU5v9ZAzjrjP364~kKwHrMH4)H&z`(BZfo6iS6Bn$QUQ~P9Olm*@!_Wm$xG?r3& z=q8r)JR^BsR@ORQuOH8v;2SeVxmnmZ zmTLE7_!3a{ffLC#fd8sowSFv)nM`JpYK^6&qlE33Gm^5Z<<-#8{sY+71likXWhuu@ zQEnEdv2@Oy;5JyX;u@`+!~Wi?$;{uQaT#`rd-!*V^bTrcCX-pD;#f-Q(Qk8jKKJq( zzIKzyhY~A;)|e^E&B8R6lKlru58Ky9^jkySPNd3&Hh5^sl56J~|G9Iu$4n-(NVBp! z=cRAIT~`n(+05pHJ%%+TztNZ}%FV*b$tNVz^Cc!$k}s@ZnB^O(cxZz`unlQ-yDw;d zub8ZA^pQvYA^d+L@l->90UdPQ7~z7F?9z+wIrgAv^KJJS*|J z=SoAWe=67OuU9reFEyaMxWM_OgZSwx!3I>dohcJ|9 z&o)kE`E(bpt-U)kF77}plglj4$T&$pAMcq@5-atwb!)|Igex>F`|#mkwjVf97q)J} zii~=3QIEaz^3MIee}CgLz;32}+qO!DpFO?2yXqM*aJ})H^RJ8>SJI-^4zwOlNjZMy zhqA>vcGRJ{|Di3 zR}G*|aWH5RD0UorAlyOFu3Vd~jebhZX|uHu{L4-ha4*pM0FCzAVkj(9z`f-ApmI9E zzGT`%rfmfGa#H>{7|kWVI5;X%82@-m@&PXfv=~P{1j9m@Q7^%;5awtMg=H9)lG^FM z49D_OCxvAg7Dr_m7Q!6$)f?_n{J=@@ED962j;O~^>wyBJu(G}hr}a3_i8uo|tyl!^ zgM(h2qet(I#d`2X=ysOCFX=?wGmY~=+~_@f8dIR(T?YKoV(hp4$ZWBJR~ZbQWD&nV zGIlK4W!Ic4D!Og>8yWCZIVm&q@+DrEK)SottFONYztVm52H*MnwbIdj(t!eJqB%cs zyK74H($h2S+ccpbF#;$L=)!+ugnOd&*l+%`GG%9I-n`4E_M)+_4O*LEU(yt|2pAqs zzgt;ZHN{5dr{}0A#o7)ShVKBEX37^d^mKpfEV1$m>$W9k_*38Tcy0&Q#+x_aeBMkt zzdmM)l51zEsj26vor^i^fy0f(ER~Ta)W^qQ)i{_wDoAL#mlvLSz<3?KmyP(cpuFoFug{(OS z@#VqqoqX+bRh#nZgfVre7Ekd$_LqOd^U=CaOZ%@hV}`L$E%E^YEaha8k5(9ao3X$s z+}7et_i21jNH_*P(dmG`PAfk2c(nJSIqs^-0X6sr_NC= z4aW7QYCQDr?cd)#PH%s9^5oNjbzyRHxn>Kz7G1oVMh6c^ZboBE=+?z*lWBDq$h^|gmc@sSN$}cyv?SCF00@A^aVW>t(-W zv{uD>a0|}^zeO{h{}$3U^a8(Pe6Vk~mVZt>po19Co?{*uG@rn4f68Me)^Jf+yI1h( z=^DSOG>fH&{mL-RDHNDHDht*Xe$=QVav4ychQ4>8FPJ)E!g++EDo>my&gIHiWkFz{Rk1qZKq$54KU?h3E8}c)+HC&=T@xZ8 literal 0 HcmV?d00001 diff --git a/resources/images/logo_only.svg b/resources/images/logo_only.svg new file mode 100644 index 000000000..9e9e9910f --- /dev/null +++ b/resources/images/logo_only.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/resources/js/app.js b/resources/js/app.js new file mode 100644 index 000000000..40c55f65c --- /dev/null +++ b/resources/js/app.js @@ -0,0 +1 @@ +require('./bootstrap'); diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js new file mode 100644 index 000000000..d5c788451 --- /dev/null +++ b/resources/js/bootstrap.js @@ -0,0 +1,2 @@ +import Alpine from 'alpinejs' +window.Alpine = Alpine diff --git a/resources/lang/en/system.php b/resources/lang/en/system.php new file mode 100644 index 000000000..10bb7d592 --- /dev/null +++ b/resources/lang/en/system.php @@ -0,0 +1,21 @@ + 'Email Address', + 'password' => 'Password', + 'remember_me' => 'Remember Me', + 'forgot_password' => 'Forgot Password', + 'sign_in' => 'Sign In', + 'login_to_avored_admin' => 'Login to AvoRed Admin', +]; diff --git a/resources/views/system/components/form/form.blade.php b/resources/views/system/components/form/form.blade.php new file mode 100644 index 000000000..9fd1cd2c5 --- /dev/null +++ b/resources/views/system/components/form/form.blade.php @@ -0,0 +1,11 @@ +
+ @csrf + @if (strtoupper($method) === 'PUT') + @method('put') + @endif + @if (strtoupper($method) === 'DELETE') + @method('delete') + @endif + + {{ $slot }} +
diff --git a/resources/views/system/components/form/input.blade.php b/resources/views/system/components/form/input.blade.php new file mode 100644 index 000000000..788964cca --- /dev/null +++ b/resources/views/system/components/form/input.blade.php @@ -0,0 +1,17 @@ +
+ @if ($label) + + @endif +
+ merge([ + 'autofocus' => false, + ]) }} class="form-input w-full ring-red-100 rounded {{ ($errors->has($name)) ? 'ring-red-400' : '' }} {{ $class }}" /> + @if ($errors->has($name)) +
+ {{ $errors->first($name) }} +
+ @endif +
+
diff --git a/resources/views/user/auth/login-form.blade.php b/resources/views/user/auth/login-form.blade.php new file mode 100644 index 000000000..520f0bd72 --- /dev/null +++ b/resources/views/user/auth/login-form.blade.php @@ -0,0 +1,91 @@ + + + + + + + + + + @yield('meta_title', 'AvoRed E commerce') + + + + +
+ + diff --git a/routes/web.php b/routes/web.php index 85af0629a..364e2912f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,5 +1,7 @@ name('admin.') ->group( function () { - // Route::get('', function () { return view('welcome'); })->name('home'); - }); + Route::get('login', [LoginController::class, 'loginForm']) + ->name('login'); + Route::post('login', [LoginController::class, 'login']) + ->name('login.post'); + + /***************** PASSWORD RESET *****************/ + Route::get( + 'password/reset', + [\AvoRed\Framework\User\Controllers\ForgotPasswordController::class, 'linkRequestForm'] + )->name('password.request'); + Route::post( + 'password/email', + [\AvoRed\Framework\User\Controllers\ForgotPasswordController::class, 'sendResetLinkEmail'] + )->name('password.email'); + + Route::get( + 'password/reset/{token}', + [\AvoRed\Framework\User\Controllers\ResetPasswordController::class, 'showResetForm'] + )->name('password.reset'); + Route::post('password/reset', [\AvoRed\Framework\User\Controllers\ResetPasswordController::class, 'reset']) + ->name('password.update'); + }); + + + +Route::middleware(['web', 'admin.auth:admin', 'permission']) + ->prefix($baseAdminUrl) + ->name('admin.') + ->group(function () { + Route::get('', [DashboardController::class, 'index']) + ->name('dashboard'); +}); diff --git a/src/AvoRedServiceProvider.php b/src/AvoRedServiceProvider.php index 1c65a2fc9..762f92ed4 100644 --- a/src/AvoRedServiceProvider.php +++ b/src/AvoRedServiceProvider.php @@ -2,6 +2,10 @@ namespace AvoRed\Framework; +use AvoRed\Framework\Support\Middleware\AdminAuth; +use AvoRed\Framework\Support\Middleware\Permission; +use AvoRed\Framework\Support\Middleware\RedirectIfAdminAuth; +use AvoRed\Framework\Support\Providers\ComponentsProvider; use AvoRed\Framework\Support\Providers\ModelsProvider; use AvoRed\Framework\System\Console\AdminMakeCommand; use AvoRed\Framework\System\Console\InstallCommand; @@ -11,6 +15,7 @@ class AvoRedServiceProvider extends ServiceProvider { protected $providers = [ + ComponentsProvider::class, ModelsProvider::class, ]; @@ -19,6 +24,9 @@ public function register() $this->registerProviders(); $this->registerConfig(); $this->registerConsoleCommands(); + $this->registerViewPath(); + $this->registerTranslationPath(); + $this->registerMiddleware(); } public function boot() @@ -42,6 +50,21 @@ public function registerRoutes() public function registerConfig() { $this->mergeConfigFrom(__DIR__ . '/../config/avored.php', 'avored'); + $avoredConfigData = include __DIR__ . '/../config/avored.php'; + $authConfig = $this->app['config']->get('auth', []); + + $this->app['config']->set( + 'auth.guards', + array_merge($authConfig['guards'], $avoredConfigData['auth']['guards']) + ); + $this->app['config']->set( + 'auth.providers', + array_merge($authConfig['providers'], $avoredConfigData['auth']['providers']) + ); + $this->app['config']->set( + 'auth.passwords', + array_merge($authConfig['passwords'], $avoredConfigData['auth']['passwords']) + ); } public function registerConsoleCommands() @@ -54,4 +77,22 @@ public function registerMigrationPath() { $this->loadMigrationsFrom(__DIR__. '/../database/migrations'); } + + public function registerViewPath() + { + $this->loadViewsFrom(__DIR__ . '/../resources/views', 'avored'); + } + + public function registerTranslationPath() + { + $this->loadTranslationsFrom(__DIR__ . '/../resources/lang', 'avored'); + } + + protected function registerMiddleware() + { + $router = $this->app['router']; + $router->aliasMiddleware('admin.auth', AdminAuth::class); + $router->aliasMiddleware('admin.guest', RedirectIfAdminAuth::class); + $router->aliasMiddleware('permission', Permission::class); + } } diff --git a/src/Database/Models/AdminUser.php b/src/Database/Models/AdminUser.php index 2f95797ba..9b8f50366 100644 --- a/src/Database/Models/AdminUser.php +++ b/src/Database/Models/AdminUser.php @@ -68,18 +68,18 @@ public function role() return $this->belongsTo(Role::class); } - // public function hasPermission($routeName): bool - // { - // if ($this->is_super_admin) { - // return true; - // } - // $role = $this->role; - // if ($role->permissions->pluck('name')->contains($routeName) == false) { - // return false; - // } - - // return true; - // } + public function hasPermission($routeName): bool + { + if ($this->is_super_admin) { + return true; + } + $role = $this->role; + if ($role->permissions->pluck('name')->contains($routeName) == false) { + return false; + } + + return true; + } // public function imagePath() // { diff --git a/src/Support/Middleware/AdminAuth.php b/src/Support/Middleware/AdminAuth.php new file mode 100644 index 000000000..08407dfe9 --- /dev/null +++ b/src/Support/Middleware/AdminAuth.php @@ -0,0 +1,15 @@ +expectsJson()) { + return route('admin.login'); + } + } +} diff --git a/src/Support/Middleware/Permission.php b/src/Support/Middleware/Permission.php new file mode 100644 index 000000000..c6120e074 --- /dev/null +++ b/src/Support/Middleware/Permission.php @@ -0,0 +1,22 @@ +user(); + $routeName = Route::currentRouteName(); + if ($user->hasPermission($routeName)) { + return $next($request); + } + + abort(403); + } +} diff --git a/src/Support/Middleware/RedirectIfAdminAuth.php b/src/Support/Middleware/RedirectIfAdminAuth.php new file mode 100644 index 000000000..fe4c6d417 --- /dev/null +++ b/src/Support/Middleware/RedirectIfAdminAuth.php @@ -0,0 +1,18 @@ +check()) { + return redirect()->route('admin.dashboard'); + } + + return $next($request); + } +} diff --git a/src/Support/Providers/ComponentsProvider.php b/src/Support/Providers/ComponentsProvider.php new file mode 100644 index 000000000..877540cdb --- /dev/null +++ b/src/Support/Providers/ComponentsProvider.php @@ -0,0 +1,25 @@ +registerBlades(); + } + + public function registerBlades() + { + Blade::componentNamespace('AvoRed\\Framework\\System\\Components', 'avored'); + } +} diff --git a/src/System/Components/Form/Form.php b/src/System/Components/Form/Form.php new file mode 100644 index 000000000..bf1b73fb8 --- /dev/null +++ b/src/System/Components/Form/Form.php @@ -0,0 +1,29 @@ +method = $method; + $this->action = $action; + $this->file = $file; + } + + public function render() + { + return view('avored::system.components.form.form'); + } +} diff --git a/src/System/Components/Form/Input.php b/src/System/Components/Form/Input.php new file mode 100644 index 000000000..1a011810d --- /dev/null +++ b/src/System/Components/Form/Input.php @@ -0,0 +1,37 @@ +name = $name; + $this->type = $type; + $this->label = $label; + $this->class = $class; + $this->value = $value; + } + + public function render() + { + return view('avored::system.components.form.input'); + } +} diff --git a/src/System/Controllers/DashboardController.php b/src/System/Controllers/DashboardController.php new file mode 100644 index 000000000..b19adede4 --- /dev/null +++ b/src/System/Controllers/DashboardController.php @@ -0,0 +1,18 @@ +middleware('admin.guest')->except('logout'); + } + + public function login(AdminLoginRequest $request) + { + if ($this->attemptLogin($request)) { + return $this->sendLoginResponse($request); + } + + return $this->sendFailedLoginResponse($request); + } + + /** + * Send the response after the user was authenticated. + * + * @param AdminLoginRequest $request + * @return RedirectResponse + */ + protected function sendLoginResponse(AdminLoginRequest $request): RedirectResponse + { + $request->session()->regenerate(); + + return redirect()->intended($this->redirectPath()); + } + + + public function redirectPath() + { + return route('admin.dashboard'); + } + /** + * Attempt to log the user into the application. + * + * @param AdminLoginRequest $request + * @return bool + */ + protected function attemptLogin(AdminLoginRequest $request) + { + return $this->guard()->attempt( + $request->only('email', 'password'), + $request->filled('remember') + ); + } + + + /** + * Show the AvoRed Login Form to the User. + * @return \Illuminate\View\View + */ + public function loginForm(): View + { + return view('avored::user.auth.login-form'); + } + + protected function guard() + { + return Auth::guard('admin'); + } + + protected function sendFailedLoginResponse(AdminLoginRequest $request) + { + throw ValidationException::withMessages( + ['email' => [trans('avored::system.failed')]] + ); + } + + public function logout(Request $request) + { + $this->guard()->logout(); + $request->session()->flush(); + $request->session()->regenerate(); + + return redirect()->route('admin.login'); + } +} diff --git a/src/User/Requests/AdminLoginRequest.php b/src/User/Requests/AdminLoginRequest.php new file mode 100644 index 000000000..6f9321b27 --- /dev/null +++ b/src/User/Requests/AdminLoginRequest.php @@ -0,0 +1,21 @@ + 'required|email', + 'password' => 'required' + ]; + } +} diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 000000000..036b553eb --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,13 @@ +module.exports = { + content: [ + "./resources/**/*.blade.php", + "./resources/**/*.js", + "./resources/**/*.vue", + ], + theme: { + extend: {}, + }, + plugins: [ + require('@tailwindcss/forms'), + ], +} diff --git a/webpack.mix.js b/webpack.mix.js new file mode 100644 index 000000000..25edde62f --- /dev/null +++ b/webpack.mix.js @@ -0,0 +1,31 @@ +const mix = require('laravel-mix'); + +/* + |-------------------------------------------------------------------------- + | Mix Asset Management + |-------------------------------------------------------------------------- + | + | Mix provides a clean, fluent API for defining some Webpack build steps + | for your Laravel applications. By default, we are compiling the CSS + | file for the application as well as bundling up all the JS files. + | + */ + +let publicPath = '../../../public' + +if (mix.inProduction()) { + publicPath = 'dist/' +} +mix.setPublicPath(publicPath) + +filePath = 'vendor/avored/' + + +/******** AVORED COPY IMAGES **********/ +mix.copyDirectory('resources/images', publicPath + '/' + filePath + '/images') + + +mix.js('resources/js/app.js', filePath + 'js/app.js') + .postCss('resources/css/app.css', filePath + 'css/app.css', [ + require("tailwindcss"), + ]); From 35bd59c26e70c979c9d7c8cf1169204ea56a21ce Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 15 May 2022 05:11:41 +0000 Subject: [PATCH 34/48] Fix styling --- .php-cs-fixer.cache | 2 +- src/Support/Middleware/AdminAuth.php | 2 +- src/User/Controllers/LoginController.php | 3 +-- src/User/Requests/AdminLoginRequest.php | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 21b8a498b..f7bf3c08b 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/AdminUser.php":743579743,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":2189710597,"src\/User\/Requests\/AdminLoginRequest.php":2577581413,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/LoginController.php":1073214523,"src\/System\/Components\/Form\/Input.php":2070411703,"src\/System\/Components\/Form\/Form.php":1868613477,"src\/System\/Controllers\/DashboardController.php":3374376343,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":670879088,"src\/Support\/Middleware\/AdminAuth.php":2494142082,"src\/Support\/Middleware\/Permission.php":596960683,"src\/Support\/Providers\/ComponentsProvider.php":3131435569,"src\/Support\/Providers\/ModelsProvider.php":2037303546}} \ No newline at end of file +{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":2189710597,"src\/System\/Controllers\/DashboardController.php":3374376343,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/System\/Components\/Form\/Input.php":2070411703,"src\/System\/Components\/Form\/Form.php":1868613477,"src\/Support\/Providers\/ModelsProvider.php":2037303546,"src\/Support\/Providers\/ComponentsProvider.php":3131435569,"src\/Support\/Middleware\/AdminAuth.php":1247249623,"src\/Support\/Middleware\/Permission.php":596960683,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":670879088,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/AdminUser.php":743579743,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/LoginController.php":4027571986,"src\/User\/Requests\/AdminLoginRequest.php":3058425419,"tests\/Integration\/ConsoleTest.php":3309535331,"tests\/UnitTests\/AdminUserRepositoryTest.php":3166096953,"tests\/UnitTests\/BaseRepositoryTest.php":2349584337,"tests\/UnitTests\/RoleRepositoryTest.php":3361730473,"tests\/AvoRedBaseTestCase.php":3130496138,"tests\/ExampleTest.php":3276564100}} \ No newline at end of file diff --git a/src/Support/Middleware/AdminAuth.php b/src/Support/Middleware/AdminAuth.php index 08407dfe9..26cf5e17a 100644 --- a/src/Support/Middleware/AdminAuth.php +++ b/src/Support/Middleware/AdminAuth.php @@ -8,7 +8,7 @@ class AdminAuth extends Middleware { protected function redirectTo($request) { - if (!$request->expectsJson()) { + if (! $request->expectsJson()) { return route('admin.login'); } } diff --git a/src/User/Controllers/LoginController.php b/src/User/Controllers/LoginController.php index 496b9631c..637dca3b9 100644 --- a/src/User/Controllers/LoginController.php +++ b/src/User/Controllers/LoginController.php @@ -39,11 +39,11 @@ protected function sendLoginResponse(AdminLoginRequest $request): RedirectRespon return redirect()->intended($this->redirectPath()); } - public function redirectPath() { return route('admin.dashboard'); } + /** * Attempt to log the user into the application. * @@ -58,7 +58,6 @@ protected function attemptLogin(AdminLoginRequest $request) ); } - /** * Show the AvoRed Login Form to the User. * @return \Illuminate\View\View diff --git a/src/User/Requests/AdminLoginRequest.php b/src/User/Requests/AdminLoginRequest.php index 6f9321b27..185936c55 100644 --- a/src/User/Requests/AdminLoginRequest.php +++ b/src/User/Requests/AdminLoginRequest.php @@ -15,7 +15,7 @@ public function rules() { return [ 'email' => 'required|email', - 'password' => 'required' + 'password' => 'required', ]; } } From 945772afb20a40aee39d57a37fc1f7d96e88683a Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 21 May 2022 10:20:49 +1200 Subject: [PATCH 35/48] layout in progress --- .php-cs-fixer.cache | 2 +- resources/lang/en/system.php | 4 + resources/views/admin.blade.php | 26 + resources/views/breadcrumb/index.blade.php | 14 + resources/views/partials/header.blade.php | 44 ++ resources/views/partials/sidebar.blade.php | 42 ++ .../system/components/layouts/app.blade.php | 36 + src/AvoRedServiceProvider.php | 4 + src/Breadcrumb/Breadcrumb.php | 18 + src/Breadcrumb/BreadcrumbInterface.php | 18 + src/Breadcrumb/BreadcrumbItem.php | 83 +++ src/Breadcrumb/BreadcrumbProvider.php | 641 ++++++++++++++++++ src/Breadcrumb/Builder.php | 71 ++ src/Menu/Menu.php | 19 + src/Menu/MenuBuilder.php | 146 ++++ src/Menu/MenuInterface.php | 41 ++ src/Menu/MenuItem.php | 208 ++++++ src/Menu/MenuProvider.php | 233 +++++++ src/System/Components/Layout.php | 44 ++ .../Controllers/DashboardController.php | 2 +- 20 files changed, 1694 insertions(+), 2 deletions(-) create mode 100644 resources/views/admin.blade.php create mode 100644 resources/views/breadcrumb/index.blade.php create mode 100644 resources/views/partials/header.blade.php create mode 100644 resources/views/partials/sidebar.blade.php create mode 100644 resources/views/system/components/layouts/app.blade.php create mode 100644 src/Breadcrumb/Breadcrumb.php create mode 100644 src/Breadcrumb/BreadcrumbInterface.php create mode 100644 src/Breadcrumb/BreadcrumbItem.php create mode 100644 src/Breadcrumb/BreadcrumbProvider.php create mode 100644 src/Breadcrumb/Builder.php create mode 100644 src/Menu/Menu.php create mode 100644 src/Menu/MenuBuilder.php create mode 100644 src/Menu/MenuInterface.php create mode 100644 src/Menu/MenuItem.php create mode 100644 src/Menu/MenuProvider.php create mode 100644 src/System/Components/Layout.php diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index f7bf3c08b..3309b70ce 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.5","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/AvoRedServiceProvider.php":2189710597,"src\/System\/Controllers\/DashboardController.php":3374376343,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/System\/Components\/Form\/Input.php":2070411703,"src\/System\/Components\/Form\/Form.php":1868613477,"src\/Support\/Providers\/ModelsProvider.php":2037303546,"src\/Support\/Providers\/ComponentsProvider.php":3131435569,"src\/Support\/Middleware\/AdminAuth.php":1247249623,"src\/Support\/Middleware\/Permission.php":596960683,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":670879088,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/AdminUser.php":743579743,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/LoginController.php":4027571986,"src\/User\/Requests\/AdminLoginRequest.php":3058425419,"tests\/Integration\/ConsoleTest.php":3309535331,"tests\/UnitTests\/AdminUserRepositoryTest.php":3166096953,"tests\/UnitTests\/BaseRepositoryTest.php":2349584337,"tests\/UnitTests\/RoleRepositoryTest.php":3361730473,"tests\/AvoRedBaseTestCase.php":3130496138,"tests\/ExampleTest.php":3276564100}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/AdminUser.php":743579743,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":815625058,"src\/User\/Requests\/AdminLoginRequest.php":3058425419,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/LoginController.php":4027571986,"src\/System\/Components\/Form\/Input.php":2070411703,"src\/System\/Components\/Form\/Form.php":1868613477,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":670879088,"src\/Support\/Middleware\/AdminAuth.php":1247249623,"src\/Support\/Middleware\/Permission.php":596960683,"src\/Support\/Providers\/ComponentsProvider.php":3131435569,"src\/Support\/Providers\/ModelsProvider.php":2037303546,"src\/Menu\/MenuProvider.php":3755719315,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuInterface.php":1575349914,"src\/Menu\/MenuItem.php":442476537,"src\/Menu\/MenuBuilder.php":1981955860,"src\/Breadcrumb\/BreadcrumbProvider.php":1412750075,"src\/Breadcrumb\/Builder.php":1940732788,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433}} \ No newline at end of file diff --git a/resources/lang/en/system.php b/resources/lang/en/system.php index 10bb7d592..49e31e6b2 100644 --- a/resources/lang/en/system.php +++ b/resources/lang/en/system.php @@ -18,4 +18,8 @@ 'forgot_password' => 'Forgot Password', 'sign_in' => 'Sign In', 'login_to_avored_admin' => 'Login to AvoRed Admin', + 'dashboard' => 'Dashboard', + 'edit_profile' => 'Edit Profile', + 'logout' => 'Logout', + 'settings' => 'Settings', ]; diff --git a/resources/views/admin.blade.php b/resources/views/admin.blade.php new file mode 100644 index 000000000..1adf5a8a5 --- /dev/null +++ b/resources/views/admin.blade.php @@ -0,0 +1,26 @@ + +
+
+
+
500k
+
Projects
+
100% of our projects are delivered
+
+
+
300k
+
Customers
+
We managed to add a quite list of customers
+
+
+
$1,500k
+
Budget
+
We set our budget for next year services
+
+
+
50
+
Countries
+
We are located in many countries accross the globe
+
+
+
+
diff --git a/resources/views/breadcrumb/index.blade.php b/resources/views/breadcrumb/index.blade.php new file mode 100644 index 000000000..d3debc092 --- /dev/null +++ b/resources/views/breadcrumb/index.blade.php @@ -0,0 +1,14 @@ +
+
    + @if(isset($breadcrumb->parents) && $breadcrumb->parents->count() >0) + @foreach($breadcrumb->parents as $parentBreadcrumb) +
  1. + + {{ __($parentBreadcrumb->label) }} + >   +
  2. + @endforeach + @endif +
  3. {{ __($breadcrumb->label) }}
  4. +
+
diff --git a/resources/views/partials/header.blade.php b/resources/views/partials/header.blade.php new file mode 100644 index 000000000..c6503c287 --- /dev/null +++ b/resources/views/partials/header.blade.php @@ -0,0 +1,44 @@ +
+
+ +
+ + + +
+
+
+
+ + {{ Auth::guard('admin')->user()->full_name }} + {{ Auth::guard('admin')->user()->full_name }} + + + + + +
+ +
+ + +
+
+
+
diff --git a/resources/views/partials/sidebar.blade.php b/resources/views/partials/sidebar.blade.php new file mode 100644 index 000000000..5322e5a31 --- /dev/null +++ b/resources/views/partials/sidebar.blade.php @@ -0,0 +1,42 @@ +
+
+ AvoRed Ecommerce + AvoRed +
+ +
+ +
+
diff --git a/resources/views/system/components/layouts/app.blade.php b/resources/views/system/components/layouts/app.blade.php new file mode 100644 index 000000000..51c62420f --- /dev/null +++ b/resources/views/system/components/layouts/app.blade.php @@ -0,0 +1,36 @@ + + + + + + + + + + @yield('meta_title', 'AvoRed E commerce') + + + + + + +
+ @include('avored::partials.sidebar') + +
+ @include('avored::partials.header') + + {!! Breadcrumb::render(Route::currentRouteName()) !!} + {{ $slot }} +
+
+ + @stack('scripts') + + + diff --git a/src/AvoRedServiceProvider.php b/src/AvoRedServiceProvider.php index 762f92ed4..9a660ecfc 100644 --- a/src/AvoRedServiceProvider.php +++ b/src/AvoRedServiceProvider.php @@ -2,6 +2,8 @@ namespace AvoRed\Framework; +use AvoRed\Framework\Breadcrumb\BreadcrumbProvider; +use AvoRed\Framework\Menu\MenuProvider; use AvoRed\Framework\Support\Middleware\AdminAuth; use AvoRed\Framework\Support\Middleware\Permission; use AvoRed\Framework\Support\Middleware\RedirectIfAdminAuth; @@ -15,8 +17,10 @@ class AvoRedServiceProvider extends ServiceProvider { protected $providers = [ + BreadcrumbProvider::class, ComponentsProvider::class, ModelsProvider::class, + MenuProvider::class, ]; public function register() diff --git a/src/Breadcrumb/Breadcrumb.php b/src/Breadcrumb/Breadcrumb.php new file mode 100644 index 000000000..d3dae2ae3 --- /dev/null +++ b/src/Breadcrumb/Breadcrumb.php @@ -0,0 +1,18 @@ +parents = new Collection(); + + $callable($this); + } + + /** + * Get/Set AvoRed BreakCrumb Label. + * + * @var string|null + * @return mixed + */ + public function label($label = null) + { + if (null === $label) { + return $this->label; + } + $this->label = $label; + + return $this; + } + + /** + * Get/Set AvoRed BreakCrumb Route. + * + * @var string|null + * @return mixed + */ + public function route($route = null) + { + if (null === $route) { + return $this->route; + } + $this->route = $route; + + return $this; + } + + /** + * Set AvoRed BreakCrumb Parents. + * + * @var string + * @return \AvoRed\Framework\Breadcrumb\Breadcrumb + */ + public function parent($key): self + { + $breadcrumb = Breadcrumb::get($key); + $this->parents->put($key, $breadcrumb); + + return $this; + } +} diff --git a/src/Breadcrumb/BreadcrumbProvider.php b/src/Breadcrumb/BreadcrumbProvider.php new file mode 100644 index 000000000..e2ccc2719 --- /dev/null +++ b/src/Breadcrumb/BreadcrumbProvider.php @@ -0,0 +1,641 @@ +registerBreadcrumb(); + } + + /** + * Register the service provider. + * @return void + */ + public function register() + { + $this->registerServices(); + $this->app->alias('breadcrumb', Builder::class); + } + + /** + * Register the Admin Menu instance. + * + * @return void + */ + protected function registerServices() + { + $this->app->singleton( + 'breadcrumb', + function () { + return new Builder(); + } + ); + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + return ['breadcrumb', Builder::class]; + } + + /** + * Register the Menus. + * + * @return void + */ + protected function registerBreadcrumb() + { + Breadcrumb::make( + 'admin.dashboard', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.dashboard'); + } + ); + + Breadcrumb::make( + 'admin.category.index', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.category') + ->parent('admin.dashboard'); + } + ); + + Breadcrumb::make( + 'admin.category.create', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.create') + ->parent('admin.dashboard') + ->parent('admin.category.index'); + } + ); + + Breadcrumb::make( + 'admin.category.edit', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.edit') + ->parent('admin.dashboard') + ->parent('admin.category.index'); + } + ); + + // Breadcrumb::make( + // 'admin.promotion-code.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.promotion-code.index') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.promotion-code.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.promotion-code.create') + // ->parent('admin.dashboard') + // ->parent('admin.promotion-code.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.promotion-code.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.promotion-code.edit') + // ->parent('admin.dashboard') + // ->parent('admin.promotion-code.index'); + // } + // ); + + Breadcrumb::make( + 'admin.role.index', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.role') + ->parent('admin.dashboard'); + } + ); + + Breadcrumb::make( + 'admin.role.create', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.create') + ->parent('admin.dashboard') + ->parent('admin.role.index'); + } + ); + + Breadcrumb::make( + 'admin.role.edit', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.edit') + ->parent('admin.dashboard') + ->parent('admin.role.index'); + } + ); + + Breadcrumb::make( + 'admin.subscriber.index', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.subscriber') + ->parent('admin.dashboard'); + } + ); + + Breadcrumb::make( + 'admin.subscriber.create', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.create') + ->parent('admin.dashboard') + ->parent('admin.subscriber.index'); + } + ); + + Breadcrumb::make( + 'admin.subscriber.edit', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.edit') + ->parent('admin.dashboard') + ->parent('admin.subscriber.index'); + } + ); + + Breadcrumb::make( + 'admin.staff.index', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.staff') + ->parent('admin.dashboard'); + } + ); + + Breadcrumb::make( + 'admin.staff.create', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.create') + ->parent('admin.dashboard') + ->parent('admin.staff.index'); + } + ); + + Breadcrumb::make( + 'admin.staff.edit', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.edit') + ->parent('admin.dashboard') + ->parent('admin.staff.index'); + } + ); + + // Breadcrumb::make( + // 'admin.language.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.language.index') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.language.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.language.create') + // ->parent('admin.dashboard') + // ->parent('admin.language.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.language.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.language.edit') + // ->parent('admin.dashboard') + // ->parent('admin.language.index'); + // } + // ); + + Breadcrumb::make( + 'admin.property.index', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.property') + ->parent('admin.dashboard'); + } + ); + + Breadcrumb::make( + 'admin.property.create', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.create') + ->parent('admin.dashboard') + ->parent('admin.property.index'); + } + ); + + Breadcrumb::make( + 'admin.property.edit', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.edit') + ->parent('admin.dashboard') + ->parent('admin.property.index'); + } + ); + + Breadcrumb::make( + 'admin.order-status.index', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.order-status') + ->parent('admin.dashboard'); + } + ); + + Breadcrumb::make( + 'admin.order-status.create', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.create') + ->parent('admin.dashboard') + ->parent('admin.order-status.index'); + } + ); + + Breadcrumb::make( + 'admin.order-status.edit', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.edit') + ->parent('admin.dashboard') + ->parent('admin.order-status.index'); + } + ); + // Breadcrumb::make( + // 'admin.status.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.status.index') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.status.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.status.create') + // ->parent('admin.dashboard') + // ->parent('admin.status.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.status.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.status.edit') + // ->parent('admin.dashboard') + // ->parent('admin.status.index'); + // } + // ); + // Breadcrumb::make( + // 'admin.admin-user.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.admin-user.index') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.admin-user.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.admin-user.create') + // ->parent('admin.dashboard') + // ->parent('admin.admin-user.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.admin-user.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.admin-user.edit') + // ->parent('admin.dashboard') + // ->parent('admin.admin-user.index'); + // } + // ); + // Breadcrumb::make( + // 'admin.currency.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.currency.index') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.currency.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.currency.create') + // ->parent('admin.dashboard') + // ->parent('admin.currency.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.currency.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.currency.edit') + // ->parent('admin.dashboard') + // ->parent('admin.currency.index'); + // } + // ); + + Breadcrumb::make( + 'admin.page.index', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.page') + ->parent('admin.dashboard'); + } + ); + + Breadcrumb::make( + 'admin.page.create', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.create') + ->parent('admin.dashboard') + ->parent('admin.page.index'); + } + ); + + Breadcrumb::make( + 'admin.page.edit', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.edit') + ->parent('admin.dashboard') + ->parent('admin.page.index'); + } + ); + Breadcrumb::make( + 'admin.attribute.index', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.attribute') + ->parent('admin.dashboard'); + } + ); + + Breadcrumb::make( + 'admin.attribute.create', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.create') + ->parent('admin.dashboard') + ->parent('admin.attribute.index'); + } + ); + + Breadcrumb::make( + 'admin.attribute.edit', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.edit') + ->parent('admin.dashboard') + ->parent('admin.attribute.index'); + } + ); + // Breadcrumb::make( + // 'admin.user-group.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.user-group.index') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.user-group.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.user-group.create') + // ->parent('admin.dashboard') + // ->parent('admin.user-group.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.user-group.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.user-group.edit') + // ->parent('admin.dashboard') + // ->parent('admin.user-group.index'); + // } + // ); + // Breadcrumb::make( + // 'admin.tax-group.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.tax-group.index') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.tax-group.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.tax-group.create') + // ->parent('admin.dashboard') + // ->parent('admin.tax-group.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.tax-group.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.tax-group.edit') + // ->parent('admin.dashboard') + // ->parent('admin.user-group.index'); + // } + // ); + // Breadcrumb::make( + // 'admin.tax-rate.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.tax-rate.index') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.tax-rate.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.tax-rate.create') + // ->parent('admin.dashboard') + // ->parent('admin.tax-rate.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.tax-rate.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.tax-rate.edit') + // ->parent('admin.dashboard') + // ->parent('admin.tax-rate.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.configuration.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.configuration') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.order.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.order.index') + // ->parent('admin.dashboard'); + // } + // ); + // Breadcrumb::make( + // 'admin.order.show', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.order.show') + // ->parent('admin.dashboard') + // ->parent('admin.order.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.menu-group.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.menu.index') + // ->parent('admin.dashboard'); + // } + // ); + // Breadcrumb::make( + // 'admin.menu-group.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.menu.create') + // ->parent('admin.dashboard') + // ->parent('admin.menu-group.index'); + // } + // ); + // Breadcrumb::make( + // 'admin.menu-group.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.menu.edit') + // ->parent('admin.dashboard'); + // } + // ); + // Breadcrumb::make( + // 'admin.menu.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.menu.index') + // ->parent('admin.dashboard'); + // } + // ); + // Breadcrumb::make( + // 'admin.menu.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.menu.create') + // ->parent('admin.dashboard'); + // } + // ); + // Breadcrumb::make( + // 'admin.menu.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.menu.edit') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.customer.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.customer.index') + // ->parent('admin.dashboard'); + // } + // ); + // Breadcrumb::make( + // 'admin.customer.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.customer.create') + // ->parent('admin.dashboard'); + // } + // ); + // Breadcrumb::make( + // 'admin.customer.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.customer.edit') + // ->parent('admin.dashboard'); + // } + // ); + + Breadcrumb::make( + 'admin.product.index', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.product') + ->parent('admin.dashboard'); + } + ); + + Breadcrumb::make( + 'admin.product.create', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.create') + ->parent('admin.dashboard') + ->parent('admin.product.index'); + } + ); + + Breadcrumb::make( + 'admin.product.edit', + function (BreadcrumbItem $breadcrumb) { + $breadcrumb->label('avored::system.edit') + ->parent('admin.dashboard') + ->parent('admin.product.index'); + } + ); + + // Breadcrumb::make( + // 'admin.state.index', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.state.index') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.state.create', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.state.create') + // ->parent('admin.dashboard') + // ->parent('admin.state.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.state.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.state.edit') + // ->parent('admin.dashboard') + // ->parent('admin.state.index'); + // } + // ); + + // Breadcrumb::make( + // 'admin.promotion.code.table', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.promotion-code.index') + // ->parent('admin.dashboard'); + // } + // ); + + // Breadcrumb::make( + // 'admin.promotion.code.edit', + // function (BreadcrumbItem $breadcrumb) { + // $breadcrumb->label('avored::system.breadcrumb.promotion-code.edit') + // ->parent('admin.dashboard') + // ->parent('admin.promotion.code.table'); + // } + // ); + } +} diff --git a/src/Breadcrumb/Builder.php b/src/Breadcrumb/Builder.php new file mode 100644 index 000000000..62a383179 --- /dev/null +++ b/src/Breadcrumb/Builder.php @@ -0,0 +1,71 @@ +collection = new Collection(); + } + + /** + * Breadcrumb Make an Object. + * + * @param string $name + * @param callable $callable + * @return void + */ + public function make($name, callable $callable) + { + $breadcrumb = new BreadcrumbItem($callable); + $breadcrumb->route($name); + + $this->collection->put($name, $breadcrumb); + } + + /** + * Render BreakCrumb for the Route Name. + * + * @param string $routeName + * @return string|\Illuminate\View\View + */ + public function render($routeName) + { + $breadcrumb = $this->collection->get($routeName); + + if (null === $breadcrumb) { + return ''; + } + return view('avored::breadcrumb.index') + ->with(compact('breadcrumb')); + } + + /** + * Get Breadcrum from collection. + * + * @param string $key + * @return mixed $route + */ + public function get($key) + { + return $this->collection->get($key); + } +} diff --git a/src/Menu/Menu.php b/src/Menu/Menu.php new file mode 100644 index 000000000..fb11d0542 --- /dev/null +++ b/src/Menu/Menu.php @@ -0,0 +1,19 @@ +collection = Collection::make([]); + } + + /** + * Make a Front End Menu an Object. + * @param string $key + * @param callable $callable + * @return self + */ + public function make($key, callable $callable) + { + $menu = new MenuItem($callable); + $menu->key($key); + $this->collection->put($key, $menu); + + return $this; + } + + /** + * Return Menu Object. + * @var string + * @return \AvoRed\Framework\Menu\Menu + */ + public function get($key) + { + return $this->collection->get($key); + } + + /** + * Return all available Menu in Menu. + * @param void + * @return \Illuminate\Support\Collection + */ + public function all($admin = false) + { + if ($admin) { + return $this->collection->filter(function ($item) { + return $item->type() === MenuItem::ADMIN; + }); + } else { + return $this->collection->filter(function ($item) { + return $item->type() === MenuItem::FRONT; + }); + } + } + + public function getMenuItemFromRouteName($name) + { + $currentOpenKey = ''; + $currentMenuItemKey = ''; + foreach ($this->collection as $key => $menuGroup) { + if ($menuGroup->hasSubMenu()) { + $subMenus = $menuGroup->subMenu($key); + + foreach ($subMenus as $subKey => $subMenu) { + if ($subMenu->route() == $name) { + $currentOpenKey = $key; + $currentMenuItemKey = $subMenu->key(); + } + } + } + } + + return [$currentOpenKey, $currentMenuItemKey]; + } + + /** + * Return all available Menu in Menu. + * @param void + * @return \Illuminate\Support\Collection + */ + public function frontMenus() + { + $frontMenus = collect(); + + $i = 1; + foreach ($this->collection as $item) { + if ($item->type() === MenuItem::FRONT) { + $menu = new stdClass(); + $menu->id = $i; + $menu->name = $item->label; + $menu->route = $item->route(); + $menu->params = $item->params(); + $menu->url = route($item->route(), $item->params()); + $menu->submenus = $item->submenus ?? []; + $frontMenus->push($menu); + $i++; + } + } + + return $frontMenus; + } + + /** + * Return all available Menu in Menu. + * @param void + * @return \Illuminate\Support\Collection + */ + public function adminMenus() + { + return $adminMenus = $this->all(true); + + + $result = $adminMenus->map(function ($item, $index) { + $routeName = $item->route(); + if ($item->hasSubMenu()) { + $subMenus = collect($item->subMenu)->map(function ($item) { + $routeName = $item->route(); + return [ + 'name' => $item->label(), + 'url' => $routeName === '#' ? '#' : route($routeName, $item->params()), + ]; + }); + } + return [ + 'name' => $item->label(), + 'icon' => $item->icon(), + 'url' => $routeName === '#' ? '#' : route($routeName, $item->params()), + 'submenus' => $subMenus + ]; + }); + + + return $result; + } +} diff --git a/src/Menu/MenuInterface.php b/src/Menu/MenuInterface.php new file mode 100644 index 000000000..1e3ddcb73 --- /dev/null +++ b/src/Menu/MenuInterface.php @@ -0,0 +1,41 @@ +callback = $callable; + $callable($this); + } + + /** + * Get/Set Admin Menu Label. + * @param string|null $label + * @return \AvoRed\Framework\Menu\MenuItem|string + */ + public function label($label = null) + { + if (null !== $label) { + $this->label = $label; + + return $this; + } + + return trans($this->label); + } + + /** + * Get/Set Admin Menu Type. + * @return mixed + */ + public function type($type = null) + { + if (null !== $type) { + $this->type = $type; + + return $this; + } + + return $this->type; + } + + /** + * Get/Set Admin Menu Identifier. + * @return \AvoRed\Framework\Menu\MenuItem|string + */ + public function key($key = null) + { + if (null !== $key) { + $this->key = $key; + + return $this; + } + + return $this->key; + } + + /** + * Get/Set Admin Menu Route Name. + * @return \AvoRed\Framework\Menu\MenuItem|string + */ + public function route($routeName = null, $params = []) + { + if (null !== $routeName) { + $this->routeName = $routeName; + + return $this; + } + + return $this->routeName; + } + + /** + * Get/Set Admin Menu Route Params Name. + * @return \AvoRed\Framework\Menu\MenuItem|string + */ + public function params($params = null) + { + if (null !== $params) { + $this->params = $params; + + return $this; + } + + return $this->params; + } + + /** + * Get/Set Admin Menu Icon. + * @return \AvoRed\Framework\Menu\MenuItem|string + */ + public function icon($icon = null) + { + if (null !== $icon) { + $this->icon = $icon; + + return $this; + } + + return $this->icon; + } + + /** + * Get/Set Admin Menu Icon. + * @return \AvoRed\Framework\Menu\MenuItem|string + */ + public function attributes($attributes = null) + { + if (null !== $attributes) { + $this->attributes = $attributes; + + return $this; + } + + return $this->attributes; + } + + /** + * Get/Set Admin Menu Sub Menu. + * @param null|string $key + * @param mixed $menuItem + * @return \AvoRed\Framework\AdminMenu\AdminMenu + */ + public function subMenu($key = null, $menuItem = null) + { + if (null === $menuItem) { + return $this->subMenu; + } + $menu = new self($menuItem); + $this->subMenu[$key] = $menu; + + return $this; + } + + /** + * To check if a menu has submenu or not. + * @return bool + */ + public function hasSubMenu() + { + if (isset($this->subMenu) && count($this->subMenu) > 0) { + return true; + } + + return false; + } +} diff --git a/src/Menu/MenuProvider.php b/src/Menu/MenuProvider.php new file mode 100644 index 000000000..de6b3732d --- /dev/null +++ b/src/Menu/MenuProvider.php @@ -0,0 +1,233 @@ +registerAdminMenu(); + } + + /** + * Register the service provider. + * @return void + */ + public function register() + { + $this->registerServices(); + $this->app->alias('menu', MenuBuilder::class); + } + + /** + * Register the Admin Menu instance. + * @return void + */ + protected function registerServices() + { + $this->app->singleton( + 'menu', + function () { + return new MenuBuilder(); + } + ); + } + + /** + * Get the services provided by the provider. + * @return array + */ + public function provides() + { + return ['menu', MenuBuilder::class]; + } + + /** + * Register Admin Menu for the AvoRed E commerce package. + * @return void + */ + public function registerAdminMenu() + { + // Menu::make('catalog', function (MenuItem $menu) { + // $menu->label('avored::system.catalog') + // ->type(MenuItem::ADMIN) + // ->icon('shopping-bag') + // ->route('#'); + // }); + + // $catalogMenu = Menu::get('catalog'); + + // /** @var Builder $catalogMenu */ + // $catalogMenu->subMenu('product', function (MenuItem $menu) { + // $menu->key('product') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.product') + // ->route('admin.product.index'); + // }); + // $catalogMenu->subMenu('category', function (MenuItem $menu) { + // $menu->key('category') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.category') + // ->route('admin.category.index'); + // }); + // $catalogMenu->subMenu('property', function (MenuItem $menu) { + // $menu->key('property') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.property') + // ->route('admin.property.index'); + // }); + + // $catalogMenu->subMenu('attribute', function (MenuItem $menu) { + // $menu->key('attribute') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.attribute') + // ->route('admin.attribute.index'); + // }); + + // Menu::make('cms', function (MenuItem $menu) { + // $menu->label('avored::system.cms') + // ->type(MenuItem::ADMIN) + // ->icon('book-open') + // ->route('#'); + // }); + /** @var Builder $cmsMenu */ + // $cmsMenu = Menu::get('cms'); + // $cmsMenu->subMenu('menu-group', function (MenuItem $menu) { + // $menu->key('menu-group') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.menu') + // ->route('admin.menu-group.index'); + // }); + // $cmsMenu->subMenu('page', function (MenuItem $menu) { + // $menu->key('page') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.page') + // ->route('admin.page.index'); + // }); + // Menu::make('order', function (MenuItem $menu) { + // $menu->label('avored::system.order') + // ->icon('dollar-sign') + // ->type(MenuItem::ADMIN) + // ->route('#'); + // }); + // /** @var Builder $orderMenu */ + // $orderMenu = Menu::get('order'); + + // $orderMenu->subMenu('order', function (MenuItem $menu) { + // $menu->key('order') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.order') + // ->route('admin.order.index'); + // }); + // $orderMenu->subMenu('order-status', function (MenuItem $menu) { + // $menu->key('order-status') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.order-status') + // ->route('admin.order-status.index'); + // }); + + // Menu::make('report', function (MenuItem $menu) { + // $menu->label('avored::system.admin_menus.report') + // ->type(MenuItem::ADMIN) + // ->icon('book-reference') + // ->route('#'); + // }); + // $reportMenu = Menu::get('report'); + // $reportMenu->subMenu('new_customer', function (MenuItem $menu) { + // $menu->key('new_customer') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.admin_menus.new_customer') + // ->route('admin.report.index') + // ->params(['identifier' => 'new-customer']); + // }); + + // Menu::make('promotion', function (MenuItem $menu) { + // $menu->label('avored::system.admin_menus.promotion') + // ->icon('ticket') + // ->type(MenuItem::ADMIN) + // ->route('#'); + // }); + // $promotionMenu = Menu::get('promotion'); + // /** @var Builder $promotionMenu */ + // $promotionMenu->subMenu('promotion_code', function (MenuItem $menu) { + // $menu->key('promotion_code') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.admin_menus.promo-code') + // ->route('admin.promotion-code.index'); + // }); + + // Menu::make('user', function (MenuItem $menu) { + // $menu->label('avored::system.user') + // ->type(MenuItem::ADMIN) + // ->icon('users') + // ->route('#'); + // }); + /** @var $userMenu \AvoRed\Framework\Menu\MenuBuilder */ + // $userMenu = Menu::get('user'); + + // $userMenu->subMenu('customer_group', function (MenuItem $menu) { + // $menu->key('customer_group') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.admin_menus.customer-group') + // ->route('admin.customer-group.index'); + // }); + + // $userMenu->subMenu('staff', function (MenuItem $menu) { + // $menu->key('staff') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.staff') + // ->route('admin.staff.index'); + // }); + // $userMenu->subMenu('subscriber', function (MenuItem $menu) { + // $menu->key('subscriber') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.subscriber') + // ->route('admin.subscriber.index'); + // }); + + // Menu::make('system', function (MenuItem $menu) { + // $menu->label('avored::system.system') + // ->type(MenuItem::ADMIN) + // ->icon('settings') + // ->route('#'); + // }); + + /** @var $systemMenu \AvoRed\Framework\Menu\MenuBuilder */ + // $systemMenu = Menu::get('system'); + // /** @var Builder $systemMenu */ + // $systemMenu->subMenu('configuration', function (MenuItem $menu) { + // $menu->key('configuration') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.configuration') + // ->route('admin.configuration.index'); + // }); + + // $systemMenu->subMenu('currency', function (MenuItem $menu) { + // $menu->key('currency') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.admin_menus.currency') + // ->route('admin.currency.index'); + // }); + + // $systemMenu->subMenu('role', function (MenuItem $menu) { + // $menu->key('role') + // ->type(MenuItem::ADMIN) + // ->label('avored::system.role') + // ->route('admin.role.index'); + // }); + } +} diff --git a/src/System/Components/Layout.php b/src/System/Components/Layout.php new file mode 100644 index 000000000..829e5ada4 --- /dev/null +++ b/src/System/Components/Layout.php @@ -0,0 +1,44 @@ +name = $name; + $this->adminMenus = Menu::adminMenus(); + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ + public function render() + { + return view('avored::system.components.layouts.' . $this->name); + } +} diff --git a/src/System/Controllers/DashboardController.php b/src/System/Controllers/DashboardController.php index b19adede4..cc2bcf8ff 100644 --- a/src/System/Controllers/DashboardController.php +++ b/src/System/Controllers/DashboardController.php @@ -13,6 +13,6 @@ class DashboardController extends Controller */ public function index(): View { - return view('welcome'); + return view('avored::admin'); } } From 4003d32d9489b6c12396d9affd57aa0c0da15e7a Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Fri, 20 May 2022 22:21:14 +0000 Subject: [PATCH 36/48] Fix styling --- .php-cs-fixer.cache | 2 +- src/Breadcrumb/Builder.php | 1 + src/Menu/MenuBuilder.php | 6 ++++-- src/Menu/MenuItem.php | 2 +- src/Menu/MenuProvider.php | 2 -- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 3309b70ce..3db53a2cd 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/AdminUser.php":743579743,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":815625058,"src\/User\/Requests\/AdminLoginRequest.php":3058425419,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/LoginController.php":4027571986,"src\/System\/Components\/Form\/Input.php":2070411703,"src\/System\/Components\/Form\/Form.php":1868613477,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":670879088,"src\/Support\/Middleware\/AdminAuth.php":1247249623,"src\/Support\/Middleware\/Permission.php":596960683,"src\/Support\/Providers\/ComponentsProvider.php":3131435569,"src\/Support\/Providers\/ModelsProvider.php":2037303546,"src\/Menu\/MenuProvider.php":3755719315,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuInterface.php":1575349914,"src\/Menu\/MenuItem.php":442476537,"src\/Menu\/MenuBuilder.php":1981955860,"src\/Breadcrumb\/BreadcrumbProvider.php":1412750075,"src\/Breadcrumb\/Builder.php":1940732788,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/System\/Components\/Form\/Form.php":1868613477,"src\/System\/Components\/Form\/Input.php":2070411703,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuProvider.php":3855515973,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Menu\/MenuInterface.php":1575349914,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":670879088,"src\/Support\/Middleware\/Permission.php":596960683,"src\/Support\/Middleware\/AdminAuth.php":1247249623,"src\/Support\/Providers\/ModelsProvider.php":2037303546,"src\/Support\/Providers\/ComponentsProvider.php":3131435569,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Controllers\/LoginController.php":4027571986,"src\/User\/Requests\/AdminLoginRequest.php":3058425419,"src\/AvoRedServiceProvider.php":815625058,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbProvider.php":1412750075,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/AdminUser.php":743579743,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"tests\/UnitTests\/RoleRepositoryTest.php":3361730473,"tests\/UnitTests\/AdminUserRepositoryTest.php":3166096953,"tests\/UnitTests\/BaseRepositoryTest.php":2349584337,"tests\/ExampleTest.php":3276564100,"tests\/AvoRedBaseTestCase.php":3130496138,"tests\/Integration\/ConsoleTest.php":3309535331}} \ No newline at end of file diff --git a/src/Breadcrumb/Builder.php b/src/Breadcrumb/Builder.php index 62a383179..d9b1fa922 100644 --- a/src/Breadcrumb/Builder.php +++ b/src/Breadcrumb/Builder.php @@ -54,6 +54,7 @@ public function render($routeName) if (null === $breadcrumb) { return ''; } + return view('avored::breadcrumb.index') ->with(compact('breadcrumb')); } diff --git a/src/Menu/MenuBuilder.php b/src/Menu/MenuBuilder.php index 12dd3c0d6..47000ca6b 100644 --- a/src/Menu/MenuBuilder.php +++ b/src/Menu/MenuBuilder.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Menu; -use stdClass; use Illuminate\Support\Collection; +use stdClass; class MenuBuilder { @@ -126,17 +126,19 @@ public function adminMenus() if ($item->hasSubMenu()) { $subMenus = collect($item->subMenu)->map(function ($item) { $routeName = $item->route(); + return [ 'name' => $item->label(), 'url' => $routeName === '#' ? '#' : route($routeName, $item->params()), ]; }); } + return [ 'name' => $item->label(), 'icon' => $item->icon(), 'url' => $routeName === '#' ? '#' : route($routeName, $item->params()), - 'submenus' => $subMenus + 'submenus' => $subMenus, ]; }); diff --git a/src/Menu/MenuItem.php b/src/Menu/MenuItem.php index 050c4da6b..d88aba2bc 100644 --- a/src/Menu/MenuItem.php +++ b/src/Menu/MenuItem.php @@ -57,7 +57,7 @@ class MenuItem implements MenuInterface public $callback; /** - * @var array $subMenu + * @var array */ public $subMenu; diff --git a/src/Menu/MenuProvider.php b/src/Menu/MenuProvider.php index de6b3732d..d397cf6b5 100644 --- a/src/Menu/MenuProvider.php +++ b/src/Menu/MenuProvider.php @@ -2,8 +2,6 @@ namespace AvoRed\Framework\Menu; -use AvoRed\Framework\Menu\MenuItem; -use AvoRed\Framework\Menu\MenuBuilder; use Illuminate\Support\ServiceProvider; class MenuProvider extends ServiceProvider From 9cfa5a47b771cc9f1f44bb543fe9b8b6b3b5bd64 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 21 May 2022 10:42:24 +1200 Subject: [PATCH 37/48] wip --- .php-cs-fixer.cache | 2 +- assets/countries.json | 1 + build/framework-build | 1 + build/logs/clover.xml | 4243 +++- composer.json | 4 +- config/avored.php | 100 +- database/factories/AddressFactory.php | 47 + database/factories/AdminUserFactory.php | 10 + database/factories/AttributeFactory.php | 32 + database/factories/CategoryFactory.php | 35 + database/factories/CustomerFactory.php | 31 + database/factories/DocumentFactory.php | 33 + database/factories/OrderFactory.php | 41 + database/factories/OrderStatusFactory.php | 31 + database/factories/PageFactory.php | 35 + database/factories/ProductFactory.php | 49 + database/factories/PropertyFactory.php | 35 + database/factories/RoleFactory.php | 10 + ...1_000001_create_oauth_auth_codes_table.php | 62 + ...00002_create_oauth_access_tokens_table.php | 64 + ...0003_create_oauth_refresh_tokens_table.php | 60 + ...6_01_000004_create_oauth_clients_table.php | 66 + ...te_oauth_personal_access_clients_table.php | 59 + ...7_03_29_000000_avored_framework_schema.php | 332 + ..._03_29_0000_avored_framework_schema501.php | 37 + ..._021036_create_avored_schema_framework.php | 50 - dist/mix-manifest.json | 6 + dist/vendor/avored/css/app.css | 4 + dist/vendor/avored/images/avored_logo.ico | Bin 0 -> 112436 bytes dist/vendor/avored/images/logo_only.svg | 16 + dist/vendor/avored/js/app.js | 2 + dist/vendor/avored/js/app.js.LICENSE.txt | 506 + package-lock.json | 248 + package.json | 4 + public/avored/css/app.css | 1 + public/avored/js/app.js | 19694 ++++++++++++++++ resources/css/app.css | 8 + resources/js/bootstrap.js | 153 + resources/lang/en/system.php | 92 +- .../views/catalog/attribute/_fields.blade.php | 127 + .../views/catalog/attribute/create.blade.php | 53 + .../views/catalog/attribute/edit.blade.php | 50 + .../views/catalog/attribute/index.blade.php | 143 + .../views/catalog/category/_fields.blade.php | 68 + .../views/catalog/category/create.blade.php | 53 + .../views/catalog/category/edit.blade.php | 50 + .../views/catalog/category/index.blade.php | 152 + .../views/catalog/product/_fields.blade.php | 188 + .../views/catalog/product/create.blade.php | 83 + .../views/catalog/product/edit.blade.php | 50 + .../views/catalog/product/index.blade.php | 146 + .../views/catalog/property/_fields.blade.php | 186 + .../views/catalog/property/create.blade.php | 53 + .../views/catalog/property/edit.blade.php | 50 + .../views/catalog/property/index.blade.php | 143 + resources/views/cms/page/_fields.blade.php | 51 + resources/views/cms/page/create.blade.php | 53 + resources/views/cms/page/edit.blade.php | 50 + resources/views/cms/page/index.blade.php | 132 + .../order/order-status/_fields.blade.php | 17 + .../views/order/order-status/create.blade.php | 53 + .../views/order/order-status/edit.blade.php | 50 + .../views/order/order-status/index.blade.php | 136 + resources/views/order/order/index.blade.php | 62 + resources/views/partials/header.blade.php | 2 +- .../system/components/form/alert.blade.php | 5 + .../system/components/form/checkbox.blade.php | 10 + .../system/components/form/easymde.blade.php | 21 + .../system/components/form/input.blade.php | 4 +- .../system/components/form/link.blade.php | 24 + .../system/components/form/select.blade.php | 22 + .../system/components/form/select2.blade.php | 92 + .../system/components/form/toggle.blade.php | 18 + .../system/components/form/upload.blade.php | 138 + .../views/system/components/table.blade.php | 20 + .../system/components/table/cell.blade.php | 3 + .../system/components/table/header.blade.php | 3 + .../system/components/table/row.blade.php | 3 + .../configuration/cards/basic.blade.php | 23 + .../system/configuration/cards/tax.blade.php | 0 .../system/configuration/index.blade.php | 53 + resources/views/system/role/_fields.blade.php | 33 + resources/views/system/role/create.blade.php | 53 + resources/views/system/role/edit.blade.php | 50 + resources/views/system/role/index.blade.php | 114 + .../views/user/auth/password/new.blade.php | 84 + resources/views/user/auth/reset.blade.php | 69 + resources/views/user/staff/_fields.blade.php | 88 + resources/views/user/staff/create.blade.php | 53 + resources/views/user/staff/edit.blade.php | 50 + resources/views/user/staff/index.blade.php | 122 + .../views/user/subscriber/_fields.blade.php | 24 + .../views/user/subscriber/create.blade.php | 53 + .../views/user/subscriber/edit.blade.php | 50 + .../views/user/subscriber/index.blade.php | 132 + routes/web.php | 95 +- src/AvoRedServiceProvider.php | 196 +- src/Breadcrumb/BreadcrumbProvider.php | 4 +- src/Cart/Cart.php | 17 + src/Cart/CartManager.php | 232 + src/Cart/CartProduct.php | 197 + src/Cart/CartProvider.php | 51 + .../Controllers/AttributeController.php | 120 + .../Controllers/CategoryController.php | 117 + src/Catalog/Controllers/ProductController.php | 130 + .../Controllers/PropertyController.php | 124 + src/Catalog/Requests/AttributeRequest.php | 32 + src/Catalog/Requests/CategoryRequest.php | 30 + src/Catalog/Requests/ProductRequest.php | 32 + src/Catalog/Requests/PropertyRequest.php | 31 + src/Cms/Controllers/PageController.php | 112 + src/Cms/Requests/PageRequest.php | 31 + .../Contracts/AddressModelInterface.php | 16 + .../Contracts/AdminUserModelInterface.php | 5 + .../AttributeDropdownOptionModelInterface.php | 7 + .../Contracts/AttributeModelInterface.php | 17 + src/Database/Contracts/BaseInterface.php | 30 +- .../Contracts/CartProductModelInterface.php | 7 + .../Contracts/CategoryModelInterface.php | 39 + .../Contracts/ConfigurationModelInterface.php | 20 + .../Contracts/CustomerModelInterface.php | 25 + .../Contracts/DocumentModelInterface.php | 7 + .../Contracts/OrderModelInterface.php | 28 + .../Contracts/OrderProductModelInterface.php | 7 + .../Contracts/OrderStatusModelInterface.php | 22 + src/Database/Contracts/PageModelInterface.php | 13 + .../Contracts/PermissionModelInterface.php | 10 + .../Contracts/ProductModelInterface.php | 40 + .../Contracts/PropertyModelInterface.php | 7 + src/Database/Contracts/RoleModelInterface.php | 8 + .../Contracts/SubscriberModelInterface.php | 7 + src/Database/Models/Address.php | 45 + src/Database/Models/AdminUser.php | 84 +- src/Database/Models/Attribute.php | 57 + .../Models/AttributeDropdownOption.php | 21 + src/Database/Models/CartProduct.php | 49 + src/Database/Models/Category.php | 49 + src/Database/Models/Configuration.php | 12 + src/Database/Models/Country.php | 22 + src/Database/Models/Customer.php | 156 + src/Database/Models/Document.php | 40 + src/Database/Models/OauthClient.php | 48 + src/Database/Models/Order.php | 77 + src/Database/Models/OrderProduct.php | 36 + src/Database/Models/OrderStatus.php | 15 + src/Database/Models/Page.php | 44 + src/Database/Models/Permission.php | 21 + src/Database/Models/Product.php | 89 + src/Database/Models/Property.php | 109 + .../Models/PropertyDropdownOption.php | 12 + src/Database/Models/Role.php | 46 +- src/Database/Models/Subscriber.php | 28 + src/Database/Repository/AddressRepository.php | 43 + .../Repository/AdminUserRepository.php | 21 +- .../AttributeDropdownOptionRepository.php | 40 + .../Repository/AttributeRepository.php | 79 + src/Database/Repository/BaseRepository.php | 32 + .../Repository/CartProductRepository.php | 31 + .../Repository/CategoryRepository.php | 183 + .../Repository/ConfigurationRepository.php | 76 + .../Repository/CustomerRepository.php | 74 + .../Repository/DocumentRepository.php | 31 + .../Repository/OrderProductRepository.php | 45 + src/Database/Repository/OrderRepository.php | 95 + .../Repository/OrderStatusRepository.php | 64 + src/Database/Repository/PageRepository.php | 56 + .../Repository/PermissionRepository.php | 43 + src/Database/Repository/ProductRepository.php | 91 + .../Repository/PropertyRepository.php | 69 + src/Database/Repository/RoleRepository.php | 75 +- .../Repository/SubscriberRepository.php | 31 + src/Database/Traits/FilterTrait.php | 26 + src/Document/Document.php | 16 + src/Document/DocumentProvider.php | 67 + src/Document/Manager.php | 56 + .../Mutations/Auth/ForgotPasswordMutation.php | 74 + src/Graphql/Mutations/Auth/LoginMutation.php | 117 + .../Mutations/Auth/RegisterMutation.php | 128 + .../Mutations/Auth/ResetPasswordMutation.php | 120 + .../Mutations/Cart/AddToCartMutation.php | 64 + .../Mutations/Cart/DeleteCartMutation.php | 45 + .../Mutations/Cart/UpdateCartMutation.php | 63 + .../Customer/CreateAddressMutation.php | 122 + .../Customer/CreateSubscriberMutation.php | 59 + .../Customer/CustomerUpdateMutation.php | 66 + .../Customer/DeleteAddressMutation.php | 62 + .../Customer/UpdateAddressMutation.php | 128 + src/Graphql/Mutations/PlaceOrderMutation.php | 130 + src/Graphql/Queries/AddressQuery.php | 75 + src/Graphql/Queries/AllAddressQuery.php | 73 + src/Graphql/Queries/AllCategoryQuery.php | 70 + src/Graphql/Queries/AllOrdersQuery.php | 73 + src/Graphql/Queries/CartItemsQuery.php | 60 + src/Graphql/Queries/CategoryQuery.php | 80 + src/Graphql/Queries/CountryOptionsQuery.php | 53 + src/Graphql/Queries/CustomerQuery.php | 80 + src/Graphql/Queries/LatestProductQuery.php | 70 + src/Graphql/Queries/OrderQuery.php | 78 + src/Graphql/Queries/PaymentQuery.php | 71 + src/Graphql/Queries/ProductQuery.php | 72 + src/Graphql/Queries/ShippingQuery.php | 71 + src/Graphql/Traits/AuthorizedTrait.php | 24 + src/Graphql/Types/AddressType.php | 109 + src/Graphql/Types/CartProductType.php | 57 + src/Graphql/Types/CategoryType.php | 125 + src/Graphql/Types/CustomerType.php | 83 + src/Graphql/Types/NotificationType.php | 36 + src/Graphql/Types/OptionType.php | 57 + src/Graphql/Types/OrderType.php | 123 + src/Graphql/Types/PaymentType.php | 70 + src/Graphql/Types/ProductType.php | 143 + src/Graphql/Types/ShippingType.php | 70 + src/Graphql/Types/SubscriberType.php | 53 + src/Menu/MenuProvider.php | 220 +- src/Module/Console/ControllerMakeCommand.php | 189 + src/Module/Console/ModuleInstallCommand.php | 92 + src/Module/Console/ModuleMakeCommand.php | 191 + src/Module/Console/Provider.php | 94 + src/Module/Console/stubs/controller.stub | 11 + src/Module/Console/stubs/module.stub | 41 + src/Module/Console/stubs/register.stub | 5 + src/Module/Manager.php | 239 + src/Module/Module.php | 21 + src/Module/ModuleItem.php | 180 + src/Module/ModuleProvider.php | 70 + src/Order/Controllers/OrderController.php | 36 + .../Controllers/OrderStatusController.php | 117 + src/Order/Events/OrderProductCreated.php | 26 + .../Listeners/OrderProductCreatedListener.php | 28 + src/Order/Requests/OrderStatusRequest.php | 31 + src/Payment/Payment.php | 16 + src/Payment/PaymentManager.php | 49 + src/Payment/PaymentProvider.php | 37 + src/Permission/Manager.php | 77 + src/Permission/Permission.php | 18 + src/Permission/PermissionGroup.php | 97 + src/Permission/PermissionInterface.php | 27 + src/Permission/PermissionItem.php | 88 + src/Permission/PermissionProvider.php | 689 + src/Shipping/Manager.php | 40 + src/Shipping/Shipping.php | 16 + src/Shipping/ShippingProvider.php | 38 + src/Support/Middleware/AdminAuth.php | 8 +- src/Support/Middleware/Permission.php | 7 + .../Middleware/RedirectIfAdminAuth.php | 8 + src/Support/Providers/ComponentsProvider.php | 19 + src/Support/Providers/EventsProvider.php | 32 + src/Support/Providers/GraphqlProvider.php | 50 + src/Support/Providers/ModelsProvider.php | 55 + src/System/Components/Alert.php | 47 + src/System/Components/Form/Checkbox.php | 66 + src/System/Components/Form/Easymde.php | 59 + src/System/Components/Form/Form.php | 26 + src/System/Components/Form/Input.php | 36 +- src/System/Components/Form/Select.php | 59 + src/System/Components/Form/Select2.php | 59 + src/System/Components/Form/Toggle.php | 73 + src/System/Components/Form/Upload.php | 74 + src/System/Components/Link.php | 52 + src/System/Components/Table.php | 28 + src/System/Components/Table/Cell.php | 27 + src/System/Components/Table/Header.php | 36 + src/System/Components/Table/Row.php | 34 + src/System/Composers/LayoutComposer.php | 30 + src/System/Console/AdminMakeCommand.php | 16 + src/System/Console/InstallCommand.php | 23 +- .../Controllers/ConfigurationController.php | 64 + src/System/Controllers/RoleController.php | 118 + src/System/Requests/RoleRequest.php | 30 + src/Tab/Manager.php | 62 + src/Tab/Tab.php | 18 + src/Tab/TabItem.php | 75 + src/Tab/TabProvider.php | 225 + .../Controllers/ForgotPasswordController.php | 106 + src/User/Controllers/LoginController.php | 39 +- .../Controllers/ResetPasswordController.php | 180 + src/User/Controllers/StaffController.php | 131 + src/User/Controllers/SubscriberController.php | 113 + .../Notifications/CustomerResetPassword.php | 67 + src/User/Notifications/ResetPassword.php | 52 + src/User/Requests/AdminLoginRequest.php | 12 +- src/User/Requests/AdminUserRequest.php | 32 + src/User/Requests/ForgotPasswordRequest.php | 30 + src/User/Requests/ResetAdminUserRequest.php | 32 + src/User/Requests/SubscriberRequest.php | 30 + tests/ExampleTest.php | 11 - tests/Feature/AdminUserControllerTest.php | 90 + tests/Feature/AuthControllerTest.php | 62 + tests/Feature/CategoryControllerTest.php | 80 + tests/Feature/ConfigurationControllerTest.php | 29 + tests/Feature/DashboardControllerTest.php | 17 + tests/Feature/LoginControllerTest.php | 83 + tests/Feature/OrderControllerTest.php | 30 + tests/Feature/OrderStatusControllerTest.php | 73 + tests/Feature/PageControllerTest.php | 78 + tests/Feature/ProductControllerTest.php | 78 + tests/Feature/RoleControllerTest.php | 116 + tests/Functional/BreadcrumbTest.php | 61 + tests/Functional/PermissionTest.php | 32 + tests/Functional/ProductModelTest.php | 33 + tests/Integration/ConsoleTest.php | 33 - .../{AvoRedBaseTestCase.php => TestCase.php} | 65 +- tests/UnitTests/AdminUserRepositoryTest.php | 17 - tests/UnitTests/BaseRepositoryTest.php | 56 - tests/UnitTests/RoleRepositoryTest.php | 23 - 305 files changed, 42718 insertions(+), 615 deletions(-) create mode 100644 assets/countries.json create mode 120000 build/framework-build create mode 100644 database/factories/AddressFactory.php create mode 100644 database/factories/AttributeFactory.php create mode 100644 database/factories/CategoryFactory.php create mode 100644 database/factories/CustomerFactory.php create mode 100644 database/factories/DocumentFactory.php create mode 100644 database/factories/OrderFactory.php create mode 100644 database/factories/OrderStatusFactory.php create mode 100644 database/factories/PageFactory.php create mode 100644 database/factories/ProductFactory.php create mode 100644 database/factories/PropertyFactory.php create mode 100644 database/migrations/2016_06_01_000001_create_oauth_auth_codes_table.php create mode 100644 database/migrations/2016_06_01_000002_create_oauth_access_tokens_table.php create mode 100644 database/migrations/2016_06_01_000003_create_oauth_refresh_tokens_table.php create mode 100644 database/migrations/2016_06_01_000004_create_oauth_clients_table.php create mode 100644 database/migrations/2016_06_01_000005_create_oauth_personal_access_clients_table.php create mode 100644 database/migrations/2017_03_29_000000_avored_framework_schema.php create mode 100644 database/migrations/2017_03_29_0000_avored_framework_schema501.php delete mode 100644 database/migrations/2022_05_15_021036_create_avored_schema_framework.php create mode 100644 dist/mix-manifest.json create mode 100644 dist/vendor/avored/css/app.css create mode 100644 dist/vendor/avored/images/avored_logo.ico create mode 100644 dist/vendor/avored/images/logo_only.svg create mode 100644 dist/vendor/avored/js/app.js create mode 100644 dist/vendor/avored/js/app.js.LICENSE.txt create mode 100644 public/avored/css/app.css create mode 100644 public/avored/js/app.js create mode 100644 resources/views/catalog/attribute/_fields.blade.php create mode 100644 resources/views/catalog/attribute/create.blade.php create mode 100644 resources/views/catalog/attribute/edit.blade.php create mode 100644 resources/views/catalog/attribute/index.blade.php create mode 100644 resources/views/catalog/category/_fields.blade.php create mode 100644 resources/views/catalog/category/create.blade.php create mode 100644 resources/views/catalog/category/edit.blade.php create mode 100644 resources/views/catalog/category/index.blade.php create mode 100644 resources/views/catalog/product/_fields.blade.php create mode 100644 resources/views/catalog/product/create.blade.php create mode 100644 resources/views/catalog/product/edit.blade.php create mode 100644 resources/views/catalog/product/index.blade.php create mode 100644 resources/views/catalog/property/_fields.blade.php create mode 100644 resources/views/catalog/property/create.blade.php create mode 100644 resources/views/catalog/property/edit.blade.php create mode 100644 resources/views/catalog/property/index.blade.php create mode 100644 resources/views/cms/page/_fields.blade.php create mode 100644 resources/views/cms/page/create.blade.php create mode 100644 resources/views/cms/page/edit.blade.php create mode 100644 resources/views/cms/page/index.blade.php create mode 100644 resources/views/order/order-status/_fields.blade.php create mode 100644 resources/views/order/order-status/create.blade.php create mode 100644 resources/views/order/order-status/edit.blade.php create mode 100644 resources/views/order/order-status/index.blade.php create mode 100644 resources/views/order/order/index.blade.php create mode 100644 resources/views/system/components/form/alert.blade.php create mode 100644 resources/views/system/components/form/checkbox.blade.php create mode 100644 resources/views/system/components/form/easymde.blade.php create mode 100644 resources/views/system/components/form/link.blade.php create mode 100644 resources/views/system/components/form/select.blade.php create mode 100644 resources/views/system/components/form/select2.blade.php create mode 100644 resources/views/system/components/form/toggle.blade.php create mode 100644 resources/views/system/components/form/upload.blade.php create mode 100644 resources/views/system/components/table.blade.php create mode 100644 resources/views/system/components/table/cell.blade.php create mode 100644 resources/views/system/components/table/header.blade.php create mode 100644 resources/views/system/components/table/row.blade.php create mode 100644 resources/views/system/configuration/cards/basic.blade.php create mode 100644 resources/views/system/configuration/cards/tax.blade.php create mode 100644 resources/views/system/configuration/index.blade.php create mode 100644 resources/views/system/role/_fields.blade.php create mode 100644 resources/views/system/role/create.blade.php create mode 100644 resources/views/system/role/edit.blade.php create mode 100644 resources/views/system/role/index.blade.php create mode 100644 resources/views/user/auth/password/new.blade.php create mode 100644 resources/views/user/auth/reset.blade.php create mode 100644 resources/views/user/staff/_fields.blade.php create mode 100644 resources/views/user/staff/create.blade.php create mode 100644 resources/views/user/staff/edit.blade.php create mode 100644 resources/views/user/staff/index.blade.php create mode 100644 resources/views/user/subscriber/_fields.blade.php create mode 100644 resources/views/user/subscriber/create.blade.php create mode 100644 resources/views/user/subscriber/edit.blade.php create mode 100644 resources/views/user/subscriber/index.blade.php create mode 100644 src/Cart/Cart.php create mode 100644 src/Cart/CartManager.php create mode 100644 src/Cart/CartProduct.php create mode 100644 src/Cart/CartProvider.php create mode 100644 src/Catalog/Controllers/AttributeController.php create mode 100644 src/Catalog/Controllers/CategoryController.php create mode 100644 src/Catalog/Controllers/ProductController.php create mode 100644 src/Catalog/Controllers/PropertyController.php create mode 100644 src/Catalog/Requests/AttributeRequest.php create mode 100644 src/Catalog/Requests/CategoryRequest.php create mode 100644 src/Catalog/Requests/ProductRequest.php create mode 100644 src/Catalog/Requests/PropertyRequest.php create mode 100644 src/Cms/Controllers/PageController.php create mode 100644 src/Cms/Requests/PageRequest.php create mode 100644 src/Database/Contracts/AddressModelInterface.php create mode 100644 src/Database/Contracts/AttributeDropdownOptionModelInterface.php create mode 100644 src/Database/Contracts/AttributeModelInterface.php create mode 100644 src/Database/Contracts/CartProductModelInterface.php create mode 100644 src/Database/Contracts/CategoryModelInterface.php create mode 100644 src/Database/Contracts/ConfigurationModelInterface.php create mode 100644 src/Database/Contracts/CustomerModelInterface.php create mode 100644 src/Database/Contracts/DocumentModelInterface.php create mode 100644 src/Database/Contracts/OrderModelInterface.php create mode 100644 src/Database/Contracts/OrderProductModelInterface.php create mode 100644 src/Database/Contracts/OrderStatusModelInterface.php create mode 100644 src/Database/Contracts/PageModelInterface.php create mode 100644 src/Database/Contracts/PermissionModelInterface.php create mode 100644 src/Database/Contracts/ProductModelInterface.php create mode 100644 src/Database/Contracts/PropertyModelInterface.php create mode 100644 src/Database/Contracts/SubscriberModelInterface.php create mode 100644 src/Database/Models/Address.php create mode 100644 src/Database/Models/Attribute.php create mode 100644 src/Database/Models/AttributeDropdownOption.php create mode 100644 src/Database/Models/CartProduct.php create mode 100644 src/Database/Models/Category.php create mode 100644 src/Database/Models/Configuration.php create mode 100644 src/Database/Models/Country.php create mode 100644 src/Database/Models/Customer.php create mode 100644 src/Database/Models/Document.php create mode 100644 src/Database/Models/OauthClient.php create mode 100644 src/Database/Models/Order.php create mode 100644 src/Database/Models/OrderProduct.php create mode 100644 src/Database/Models/OrderStatus.php create mode 100644 src/Database/Models/Page.php create mode 100644 src/Database/Models/Permission.php create mode 100644 src/Database/Models/Product.php create mode 100644 src/Database/Models/Property.php create mode 100644 src/Database/Models/PropertyDropdownOption.php create mode 100644 src/Database/Models/Subscriber.php create mode 100644 src/Database/Repository/AddressRepository.php create mode 100644 src/Database/Repository/AttributeDropdownOptionRepository.php create mode 100644 src/Database/Repository/AttributeRepository.php create mode 100644 src/Database/Repository/CartProductRepository.php create mode 100644 src/Database/Repository/CategoryRepository.php create mode 100644 src/Database/Repository/ConfigurationRepository.php create mode 100644 src/Database/Repository/CustomerRepository.php create mode 100644 src/Database/Repository/DocumentRepository.php create mode 100644 src/Database/Repository/OrderProductRepository.php create mode 100644 src/Database/Repository/OrderRepository.php create mode 100644 src/Database/Repository/OrderStatusRepository.php create mode 100644 src/Database/Repository/PageRepository.php create mode 100644 src/Database/Repository/PermissionRepository.php create mode 100644 src/Database/Repository/ProductRepository.php create mode 100644 src/Database/Repository/PropertyRepository.php create mode 100644 src/Database/Repository/SubscriberRepository.php create mode 100644 src/Database/Traits/FilterTrait.php create mode 100644 src/Document/Document.php create mode 100644 src/Document/DocumentProvider.php create mode 100644 src/Document/Manager.php create mode 100644 src/Graphql/Mutations/Auth/ForgotPasswordMutation.php create mode 100644 src/Graphql/Mutations/Auth/LoginMutation.php create mode 100644 src/Graphql/Mutations/Auth/RegisterMutation.php create mode 100644 src/Graphql/Mutations/Auth/ResetPasswordMutation.php create mode 100644 src/Graphql/Mutations/Cart/AddToCartMutation.php create mode 100644 src/Graphql/Mutations/Cart/DeleteCartMutation.php create mode 100644 src/Graphql/Mutations/Cart/UpdateCartMutation.php create mode 100644 src/Graphql/Mutations/Customer/CreateAddressMutation.php create mode 100644 src/Graphql/Mutations/Customer/CreateSubscriberMutation.php create mode 100644 src/Graphql/Mutations/Customer/CustomerUpdateMutation.php create mode 100644 src/Graphql/Mutations/Customer/DeleteAddressMutation.php create mode 100644 src/Graphql/Mutations/Customer/UpdateAddressMutation.php create mode 100644 src/Graphql/Mutations/PlaceOrderMutation.php create mode 100644 src/Graphql/Queries/AddressQuery.php create mode 100644 src/Graphql/Queries/AllAddressQuery.php create mode 100644 src/Graphql/Queries/AllCategoryQuery.php create mode 100644 src/Graphql/Queries/AllOrdersQuery.php create mode 100644 src/Graphql/Queries/CartItemsQuery.php create mode 100644 src/Graphql/Queries/CategoryQuery.php create mode 100644 src/Graphql/Queries/CountryOptionsQuery.php create mode 100644 src/Graphql/Queries/CustomerQuery.php create mode 100644 src/Graphql/Queries/LatestProductQuery.php create mode 100644 src/Graphql/Queries/OrderQuery.php create mode 100644 src/Graphql/Queries/PaymentQuery.php create mode 100644 src/Graphql/Queries/ProductQuery.php create mode 100644 src/Graphql/Queries/ShippingQuery.php create mode 100644 src/Graphql/Traits/AuthorizedTrait.php create mode 100644 src/Graphql/Types/AddressType.php create mode 100644 src/Graphql/Types/CartProductType.php create mode 100644 src/Graphql/Types/CategoryType.php create mode 100644 src/Graphql/Types/CustomerType.php create mode 100644 src/Graphql/Types/NotificationType.php create mode 100644 src/Graphql/Types/OptionType.php create mode 100644 src/Graphql/Types/OrderType.php create mode 100644 src/Graphql/Types/PaymentType.php create mode 100644 src/Graphql/Types/ProductType.php create mode 100644 src/Graphql/Types/ShippingType.php create mode 100644 src/Graphql/Types/SubscriberType.php create mode 100644 src/Module/Console/ControllerMakeCommand.php create mode 100644 src/Module/Console/ModuleInstallCommand.php create mode 100644 src/Module/Console/ModuleMakeCommand.php create mode 100644 src/Module/Console/Provider.php create mode 100644 src/Module/Console/stubs/controller.stub create mode 100644 src/Module/Console/stubs/module.stub create mode 100644 src/Module/Console/stubs/register.stub create mode 100644 src/Module/Manager.php create mode 100644 src/Module/Module.php create mode 100644 src/Module/ModuleItem.php create mode 100644 src/Module/ModuleProvider.php create mode 100644 src/Order/Controllers/OrderController.php create mode 100644 src/Order/Controllers/OrderStatusController.php create mode 100644 src/Order/Events/OrderProductCreated.php create mode 100644 src/Order/Listeners/OrderProductCreatedListener.php create mode 100644 src/Order/Requests/OrderStatusRequest.php create mode 100644 src/Payment/Payment.php create mode 100644 src/Payment/PaymentManager.php create mode 100644 src/Payment/PaymentProvider.php create mode 100644 src/Permission/Manager.php create mode 100644 src/Permission/Permission.php create mode 100644 src/Permission/PermissionGroup.php create mode 100644 src/Permission/PermissionInterface.php create mode 100644 src/Permission/PermissionItem.php create mode 100644 src/Permission/PermissionProvider.php create mode 100644 src/Shipping/Manager.php create mode 100644 src/Shipping/Shipping.php create mode 100644 src/Shipping/ShippingProvider.php create mode 100644 src/Support/Providers/EventsProvider.php create mode 100644 src/Support/Providers/GraphqlProvider.php create mode 100644 src/System/Components/Alert.php create mode 100644 src/System/Components/Form/Checkbox.php create mode 100644 src/System/Components/Form/Easymde.php create mode 100644 src/System/Components/Form/Select.php create mode 100644 src/System/Components/Form/Select2.php create mode 100644 src/System/Components/Form/Toggle.php create mode 100644 src/System/Components/Form/Upload.php create mode 100644 src/System/Components/Link.php create mode 100644 src/System/Components/Table.php create mode 100644 src/System/Components/Table/Cell.php create mode 100644 src/System/Components/Table/Header.php create mode 100644 src/System/Components/Table/Row.php create mode 100644 src/System/Composers/LayoutComposer.php create mode 100644 src/System/Controllers/ConfigurationController.php create mode 100644 src/System/Controllers/RoleController.php create mode 100644 src/System/Requests/RoleRequest.php create mode 100644 src/Tab/Manager.php create mode 100644 src/Tab/Tab.php create mode 100644 src/Tab/TabItem.php create mode 100644 src/Tab/TabProvider.php create mode 100644 src/User/Controllers/ForgotPasswordController.php create mode 100644 src/User/Controllers/ResetPasswordController.php create mode 100644 src/User/Controllers/StaffController.php create mode 100644 src/User/Controllers/SubscriberController.php create mode 100644 src/User/Notifications/CustomerResetPassword.php create mode 100644 src/User/Notifications/ResetPassword.php create mode 100644 src/User/Requests/AdminUserRequest.php create mode 100644 src/User/Requests/ForgotPasswordRequest.php create mode 100644 src/User/Requests/ResetAdminUserRequest.php create mode 100644 src/User/Requests/SubscriberRequest.php delete mode 100644 tests/ExampleTest.php create mode 100644 tests/Feature/AdminUserControllerTest.php create mode 100644 tests/Feature/AuthControllerTest.php create mode 100644 tests/Feature/CategoryControllerTest.php create mode 100644 tests/Feature/ConfigurationControllerTest.php create mode 100644 tests/Feature/DashboardControllerTest.php create mode 100644 tests/Feature/LoginControllerTest.php create mode 100644 tests/Feature/OrderControllerTest.php create mode 100644 tests/Feature/OrderStatusControllerTest.php create mode 100644 tests/Feature/PageControllerTest.php create mode 100644 tests/Feature/ProductControllerTest.php create mode 100644 tests/Feature/RoleControllerTest.php create mode 100644 tests/Functional/BreadcrumbTest.php create mode 100644 tests/Functional/PermissionTest.php create mode 100644 tests/Functional/ProductModelTest.php delete mode 100644 tests/Integration/ConsoleTest.php rename tests/{AvoRedBaseTestCase.php => TestCase.php} (52%) delete mode 100644 tests/UnitTests/AdminUserRepositoryTest.php delete mode 100644 tests/UnitTests/BaseRepositoryTest.php delete mode 100644 tests/UnitTests/RoleRepositoryTest.php diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 3db53a2cd..c10584166 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/System\/Components\/Form\/Form.php":1868613477,"src\/System\/Components\/Form\/Input.php":2070411703,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Console\/InstallCommand.php":3697787042,"src\/System\/Console\/AdminMakeCommand.php":4151664424,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuProvider.php":3855515973,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Menu\/MenuInterface.php":1575349914,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":670879088,"src\/Support\/Middleware\/Permission.php":596960683,"src\/Support\/Middleware\/AdminAuth.php":1247249623,"src\/Support\/Providers\/ModelsProvider.php":2037303546,"src\/Support\/Providers\/ComponentsProvider.php":3131435569,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Controllers\/LoginController.php":4027571986,"src\/User\/Requests\/AdminLoginRequest.php":3058425419,"src\/AvoRedServiceProvider.php":815625058,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbProvider.php":1412750075,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/Role.php":4107469269,"src\/Database\/Models\/AdminUser.php":743579743,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/AdminUserModelInterface.php":3522285346,"src\/Database\/Contracts\/BaseInterface.php":851777967,"src\/Database\/Contracts\/RoleModelInterface.php":430447239,"src\/Database\/Repository\/BaseRepository.php":2677542127,"src\/Database\/Repository\/RoleRepository.php":3416730450,"src\/Database\/Repository\/AdminUserRepository.php":598468317,"tests\/UnitTests\/RoleRepositoryTest.php":3361730473,"tests\/UnitTests\/AdminUserRepositoryTest.php":3166096953,"tests\/UnitTests\/BaseRepositoryTest.php":2349584337,"tests\/ExampleTest.php":3276564100,"tests\/AvoRedBaseTestCase.php":3130496138,"tests\/Integration\/ConsoleTest.php":3309535331}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Order\/Events\/OrderProductCreated.php":1528893551,"src\/Order\/Controllers\/OrderStatusController.php":1400239856,"src\/Order\/Controllers\/OrderController.php":1537988571,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1812169795,"src\/Database\/Repository\/PageRepository.php":1296245559,"src\/Database\/Repository\/SubscriberRepository.php":2441220535,"src\/Database\/Repository\/CustomerRepository.php":935827715,"src\/Database\/Repository\/OrderProductRepository.php":2036702350,"src\/Database\/Repository\/CategoryRepository.php":2052188414,"src\/Database\/Repository\/ProductRepository.php":1539605481,"src\/Database\/Repository\/DocumentRepository.php":497435682,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/PropertyRepository.php":1963240101,"src\/Database\/Repository\/AttributeRepository.php":2007838458,"src\/Database\/Repository\/OrderRepository.php":4124839598,"src\/Database\/Repository\/RoleRepository.php":1176044799,"src\/Database\/Repository\/CartProductRepository.php":589455053,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":4216189234,"src\/Database\/Repository\/AdminUserRepository.php":2801591033,"src\/Database\/Repository\/ConfigurationRepository.php":971518208,"src\/Database\/Repository\/PermissionRepository.php":3025360127,"src\/Database\/Repository\/OrderStatusRepository.php":3241299236,"src\/Database\/Repository\/AddressRepository.php":207149573,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Contracts\/AddressModelInterface.php":3581688014,"src\/Database\/Contracts\/ProductModelInterface.php":3846104672,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/CategoryModelInterface.php":3667202206,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/PermissionModelInterface.php":1360075160,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/OrderModelInterface.php":3723550286,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/AttributeModelInterface.php":2224873832,"src\/Database\/Contracts\/BaseInterface.php":1813084432,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Models\/Category.php":1464399609,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/Product.php":2993975445,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Role.php":1752576467,"src\/Database\/Models\/OauthClient.php":1440842663,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/Customer.php":523575596,"src\/Database\/Models\/Property.php":1257858976,"src\/Database\/Models\/AdminUser.php":402903989,"src\/Database\/Models\/CartProduct.php":3113747468,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/Subscriber.php":2390864955,"src\/Database\/Models\/Page.php":616965477,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":564657769,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/Payment\/PaymentManager.php":1326422825,"src\/Module\/ModuleProvider.php":2092405550,"src\/Module\/ModuleItem.php":4245231948,"src\/Module\/Module.php":3950494461,"src\/Module\/Manager.php":680188364,"src\/Module\/Console\/ModuleInstallCommand.php":679095954,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ControllerMakeCommand.php":3204171975,"src\/Catalog\/Requests\/AttributeRequest.php":1147984769,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/PropertyRequest.php":4089735173,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Controllers\/AttributeController.php":775643906,"src\/Catalog\/Controllers\/PropertyController.php":4280995445,"src\/Catalog\/Controllers\/ProductController.php":2323923796,"src\/Catalog\/Controllers\/CategoryController.php":1450919641,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":451718423,"src\/User\/Requests\/AdminUserRequest.php":2143175587,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/LoginController.php":2239366889,"src\/User\/Controllers\/ResetPasswordController.php":226987416,"src\/User\/Controllers\/SubscriberController.php":1909420315,"src\/User\/Controllers\/StaffController.php":2114448292,"src\/User\/Notifications\/ResetPassword.php":3793034681,"src\/User\/Notifications\/CustomerResetPassword.php":4134193684,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":1249849406,"src\/Document\/DocumentProvider.php":1459771598,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/ShippingProvider.php":2285804052,"src\/Shipping\/Manager.php":1350564326,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabProvider.php":3720276227,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/Manager.php":3567895349,"src\/System\/Composers\/LayoutComposer.php":2581943850,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Form.php":3482749620,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":976386463,"src\/System\/Components\/Table.php":185782146,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Controllers\/RoleController.php":1472651088,"src\/System\/Console\/InstallCommand.php":1971759778,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/Cms\/Requests\/PageRequest.php":984930776,"src\/Cms\/Controllers\/PageController.php":4158793068,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/AdminAuth.php":2346265437,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/ComponentsProvider.php":955346371,"src\/Support\/Providers\/GraphqlProvider.php":1132517345,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Graphql\/Types\/CustomerType.php":686829122,"src\/Graphql\/Types\/SubscriberType.php":3891506096,"src\/Graphql\/Types\/PaymentType.php":1195970565,"src\/Graphql\/Types\/ShippingType.php":1180121003,"src\/Graphql\/Types\/NotificationType.php":3787412298,"src\/Graphql\/Types\/CategoryType.php":602024373,"src\/Graphql\/Types\/ProductType.php":2694262131,"src\/Graphql\/Types\/OptionType.php":4259117618,"src\/Graphql\/Types\/CartProductType.php":2523479532,"src\/Graphql\/Types\/AddressType.php":2174043942,"src\/Graphql\/Types\/OrderType.php":343463084,"src\/Graphql\/Traits\/AuthorizedTrait.php":2692613217,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":1690985432,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3073249732,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":2348479573,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":550413192,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":40428100,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":3982908288,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":981867420,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1023285160,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":4160146473,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":1579556282,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":3210081622,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":604650241,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":3763794885,"src\/Graphql\/Queries\/OrderQuery.php":834093877,"src\/Graphql\/Queries\/ShippingQuery.php":3099769485,"src\/Graphql\/Queries\/LatestProductQuery.php":2014650160,"src\/Graphql\/Queries\/ProductQuery.php":31702862,"src\/Graphql\/Queries\/AllOrdersQuery.php":3040324227,"src\/Graphql\/Queries\/CountryOptionsQuery.php":1928709050,"src\/Graphql\/Queries\/CustomerQuery.php":3121299700,"src\/Graphql\/Queries\/CategoryQuery.php":2428543783,"src\/Graphql\/Queries\/AllAddressQuery.php":4220698610,"src\/Graphql\/Queries\/CartItemsQuery.php":2414856708,"src\/Graphql\/Queries\/PaymentQuery.php":609968158,"src\/Graphql\/Queries\/AllCategoryQuery.php":3384162295,"src\/Graphql\/Queries\/AddressQuery.php":3458096766,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuInterface.php":1575349914,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Cart\/CartManager.php":81526128,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartProduct.php":2851308658,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionItem.php":1303807498,"src\/Permission\/Permission.php":3394431707}} \ No newline at end of file diff --git a/assets/countries.json b/assets/countries.json new file mode 100644 index 000000000..a50b724d1 --- /dev/null +++ b/assets/countries.json @@ -0,0 +1 @@ +[{"name":"Afghanistan","topLevelDomain":[".af"],"alpha2Code":"AF","alpha3Code":"AFG","callingCodes":["93"],"capital":"Kabul","altSpellings":["AF","Afġānistān"],"region":"Asia","subregion":"Southern Asia","population":27657145,"latlng":[33.0,65.0],"demonym":"Afghan","area":652230.0,"gini":27.8,"timezones":["UTC+04:30"],"borders":["IRN","PAK","TKM","UZB","TJK","CHN"],"nativeName":"افغانستان","numericCode":"004","currencies":[{"code":"AFN","name":"Afghan afghani","symbol":"؋"}],"languages":[{"iso639_1":"ps","iso639_2":"pus","name":"Pashto","nativeName":"پښتو"},{"iso639_1":"uz","iso639_2":"uzb","name":"Uzbek","nativeName":"Oʻzbek"},{"iso639_1":"tk","iso639_2":"tuk","name":"Turkmen","nativeName":"Türkmen"}],"translations":{"de":"Afghanistan","es":"Afganistán","fr":"Afghanistan","ja":"アフガニスタン","it":"Afghanistan","br":"Afeganistão","pt":"Afeganistão","nl":"Afghanistan","hr":"Afganistan","fa":"افغانستان"},"flag":"https://restcountries.eu/data/afg.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"AFG"},{"name":"Åland Islands","topLevelDomain":[".ax"],"alpha2Code":"AX","alpha3Code":"ALA","callingCodes":["358"],"capital":"Mariehamn","altSpellings":["AX","Aaland","Aland","Ahvenanmaa"],"region":"Europe","subregion":"Northern Europe","population":28875,"latlng":[60.116667,19.9],"demonym":"Ålandish","area":1580.0,"gini":null,"timezones":["UTC+02:00"],"borders":[],"nativeName":"Åland","numericCode":"248","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"sv","iso639_2":"swe","name":"Swedish","nativeName":"svenska"}],"translations":{"de":"Åland","es":"Alandia","fr":"Åland","ja":"オーランド諸島","it":"Isole Aland","br":"Ilhas de Aland","pt":"Ilhas de Aland","nl":"Ålandeilanden","hr":"Ålandski otoci","fa":"جزایر الند"},"flag":"https://restcountries.eu/data/ala.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":""},{"name":"Albania","topLevelDomain":[".al"],"alpha2Code":"AL","alpha3Code":"ALB","callingCodes":["355"],"capital":"Tirana","altSpellings":["AL","Shqipëri","Shqipëria","Shqipnia"],"region":"Europe","subregion":"Southern Europe","population":2886026,"latlng":[41.0,20.0],"demonym":"Albanian","area":28748.0,"gini":34.5,"timezones":["UTC+01:00"],"borders":["MNE","GRC","MKD","KOS"],"nativeName":"Shqipëria","numericCode":"008","currencies":[{"code":"ALL","name":"Albanian lek","symbol":"L"}],"languages":[{"iso639_1":"sq","iso639_2":"sqi","name":"Albanian","nativeName":"Shqip"}],"translations":{"de":"Albanien","es":"Albania","fr":"Albanie","ja":"アルバニア","it":"Albania","br":"Albânia","pt":"Albânia","nl":"Albanië","hr":"Albanija","fa":"آلبانی"},"flag":"https://restcountries.eu/data/alb.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"ALB"},{"name":"Algeria","topLevelDomain":[".dz"],"alpha2Code":"DZ","alpha3Code":"DZA","callingCodes":["213"],"capital":"Algiers","altSpellings":["DZ","Dzayer","Algérie"],"region":"Africa","subregion":"Northern Africa","population":40400000,"latlng":[28.0,3.0],"demonym":"Algerian","area":2381741.0,"gini":35.3,"timezones":["UTC+01:00"],"borders":["TUN","LBY","NER","ESH","MRT","MLI","MAR"],"nativeName":"الجزائر","numericCode":"012","currencies":[{"code":"DZD","name":"Algerian dinar","symbol":"د.ج"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Algerien","es":"Argelia","fr":"Algérie","ja":"アルジェリア","it":"Algeria","br":"Argélia","pt":"Argélia","nl":"Algerije","hr":"Alžir","fa":"الجزایر"},"flag":"https://restcountries.eu/data/dza.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"ALG"},{"name":"American Samoa","topLevelDomain":[".as"],"alpha2Code":"AS","alpha3Code":"ASM","callingCodes":["1684"],"capital":"Pago Pago","altSpellings":["AS","Amerika Sāmoa","Amelika Sāmoa","Sāmoa Amelika"],"region":"Oceania","subregion":"Polynesia","population":57100,"latlng":[-14.33333333,-170.0],"demonym":"American Samoan","area":199.0,"gini":null,"timezones":["UTC-11:00"],"borders":[],"nativeName":"American Samoa","numericCode":"016","currencies":[{"code":"USD","name":"United State Dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"sm","iso639_2":"smo","name":"Samoan","nativeName":"gagana fa'a Samoa"}],"translations":{"de":"Amerikanisch-Samoa","es":"Samoa Americana","fr":"Samoa américaines","ja":"アメリカ領サモア","it":"Samoa Americane","br":"Samoa Americana","pt":"Samoa Americana","nl":"Amerikaans Samoa","hr":"Američka Samoa","fa":"ساموآی آمریکا"},"flag":"https://restcountries.eu/data/asm.svg","regionalBlocs":[],"cioc":"ASA"},{"name":"Andorra","topLevelDomain":[".ad"],"alpha2Code":"AD","alpha3Code":"AND","callingCodes":["376"],"capital":"Andorra la Vella","altSpellings":["AD","Principality of Andorra","Principat d'Andorra"],"region":"Europe","subregion":"Southern Europe","population":78014,"latlng":[42.5,1.5],"demonym":"Andorran","area":468.0,"gini":null,"timezones":["UTC+01:00"],"borders":["FRA","ESP"],"nativeName":"Andorra","numericCode":"020","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"ca","iso639_2":"cat","name":"Catalan","nativeName":"català"}],"translations":{"de":"Andorra","es":"Andorra","fr":"Andorre","ja":"アンドラ","it":"Andorra","br":"Andorra","pt":"Andorra","nl":"Andorra","hr":"Andora","fa":"آندورا"},"flag":"https://restcountries.eu/data/and.svg","regionalBlocs":[],"cioc":"AND"},{"name":"Angola","topLevelDomain":[".ao"],"alpha2Code":"AO","alpha3Code":"AGO","callingCodes":["244"],"capital":"Luanda","altSpellings":["AO","República de Angola","ʁɛpublika de an'ɡɔla"],"region":"Africa","subregion":"Middle Africa","population":25868000,"latlng":[-12.5,18.5],"demonym":"Angolan","area":1246700.0,"gini":58.6,"timezones":["UTC+01:00"],"borders":["COG","COD","ZMB","NAM"],"nativeName":"Angola","numericCode":"024","currencies":[{"code":"AOA","name":"Angolan kwanza","symbol":"Kz"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Angola","es":"Angola","fr":"Angola","ja":"アンゴラ","it":"Angola","br":"Angola","pt":"Angola","nl":"Angola","hr":"Angola","fa":"آنگولا"},"flag":"https://restcountries.eu/data/ago.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"ANG"},{"name":"Anguilla","topLevelDomain":[".ai"],"alpha2Code":"AI","alpha3Code":"AIA","callingCodes":["1264"],"capital":"The Valley","altSpellings":["AI"],"region":"Americas","subregion":"Caribbean","population":13452,"latlng":[18.25,-63.16666666],"demonym":"Anguillian","area":91.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Anguilla","numericCode":"660","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Anguilla","es":"Anguilla","fr":"Anguilla","ja":"アンギラ","it":"Anguilla","br":"Anguila","pt":"Anguila","nl":"Anguilla","hr":"Angvila","fa":"آنگویلا"},"flag":"https://restcountries.eu/data/aia.svg","regionalBlocs":[],"cioc":""},{"name":"Antarctica","topLevelDomain":[".aq"],"alpha2Code":"AQ","alpha3Code":"ATA","callingCodes":["672"],"capital":"","altSpellings":[],"region":"Polar","subregion":"","population":1000,"latlng":[-74.65,4.48],"demonym":"","area":1.4E7,"gini":null,"timezones":["UTC-03:00","UTC+03:00","UTC+05:00","UTC+06:00","UTC+07:00","UTC+08:00","UTC+10:00","UTC+12:00"],"borders":[],"nativeName":"Antarctica","numericCode":"010","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"},{"code":"GBP","name":"British pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Antarktika","es":"Antártida","fr":"Antarctique","ja":"南極大陸","it":"Antartide","br":"Antártida","pt":"Antárctida","nl":"Antarctica","hr":"Antarktika","fa":"جنوبگان"},"flag":"https://restcountries.eu/data/ata.svg","regionalBlocs":[],"cioc":""},{"name":"Antigua and Barbuda","topLevelDomain":[".ag"],"alpha2Code":"AG","alpha3Code":"ATG","callingCodes":["1268"],"capital":"Saint John's","altSpellings":["AG"],"region":"Americas","subregion":"Caribbean","population":86295,"latlng":[17.05,-61.8],"demonym":"Antiguan, Barbudan","area":442.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Antigua and Barbuda","numericCode":"028","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Antigua und Barbuda","es":"Antigua y Barbuda","fr":"Antigua-et-Barbuda","ja":"アンティグア・バーブーダ","it":"Antigua e Barbuda","br":"Antígua e Barbuda","pt":"Antígua e Barbuda","nl":"Antigua en Barbuda","hr":"Antigva i Barbuda","fa":"آنتیگوا و باربودا"},"flag":"https://restcountries.eu/data/atg.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"ANT"},{"name":"Argentina","topLevelDomain":[".ar"],"alpha2Code":"AR","alpha3Code":"ARG","callingCodes":["54"],"capital":"Buenos Aires","altSpellings":["AR","Argentine Republic","República Argentina"],"region":"Americas","subregion":"South America","population":43590400,"latlng":[-34.0,-64.0],"demonym":"Argentinean","area":2780400.0,"gini":44.5,"timezones":["UTC-03:00"],"borders":["BOL","BRA","CHL","PRY","URY"],"nativeName":"Argentina","numericCode":"032","currencies":[{"code":"ARS","name":"Argentine peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"},{"iso639_1":"gn","iso639_2":"grn","name":"Guaraní","nativeName":"Avañe'ẽ"}],"translations":{"de":"Argentinien","es":"Argentina","fr":"Argentine","ja":"アルゼンチン","it":"Argentina","br":"Argentina","pt":"Argentina","nl":"Argentinië","hr":"Argentina","fa":"آرژانتین"},"flag":"https://restcountries.eu/data/arg.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"ARG"},{"name":"Armenia","topLevelDomain":[".am"],"alpha2Code":"AM","alpha3Code":"ARM","callingCodes":["374"],"capital":"Yerevan","altSpellings":["AM","Hayastan","Republic of Armenia","Հայաստանի Հանրապետություն"],"region":"Asia","subregion":"Western Asia","population":2994400,"latlng":[40.0,45.0],"demonym":"Armenian","area":29743.0,"gini":30.9,"timezones":["UTC+04:00"],"borders":["AZE","GEO","IRN","TUR"],"nativeName":"Հայաստան","numericCode":"051","currencies":[{"code":"AMD","name":"Armenian dram","symbol":null}],"languages":[{"iso639_1":"hy","iso639_2":"hye","name":"Armenian","nativeName":"Հայերեն"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Armenien","es":"Armenia","fr":"Arménie","ja":"アルメニア","it":"Armenia","br":"Armênia","pt":"Arménia","nl":"Armenië","hr":"Armenija","fa":"ارمنستان"},"flag":"https://restcountries.eu/data/arm.svg","regionalBlocs":[{"acronym":"EEU","name":"Eurasian Economic Union","otherAcronyms":["EAEU"],"otherNames":[]}],"cioc":"ARM"},{"name":"Aruba","topLevelDomain":[".aw"],"alpha2Code":"AW","alpha3Code":"ABW","callingCodes":["297"],"capital":"Oranjestad","altSpellings":["AW"],"region":"Americas","subregion":"Caribbean","population":107394,"latlng":[12.5,-69.96666666],"demonym":"Aruban","area":180.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Aruba","numericCode":"533","currencies":[{"code":"AWG","name":"Aruban florin","symbol":"ƒ"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"},{"iso639_1":"pa","iso639_2":"pan","name":"(Eastern) Punjabi","nativeName":"ਪੰਜਾਬੀ"}],"translations":{"de":"Aruba","es":"Aruba","fr":"Aruba","ja":"アルバ","it":"Aruba","br":"Aruba","pt":"Aruba","nl":"Aruba","hr":"Aruba","fa":"آروبا"},"flag":"https://restcountries.eu/data/abw.svg","regionalBlocs":[],"cioc":"ARU"},{"name":"Australia","topLevelDomain":[".au"],"alpha2Code":"AU","alpha3Code":"AUS","callingCodes":["61"],"capital":"Canberra","altSpellings":["AU"],"region":"Oceania","subregion":"Australia and New Zealand","population":24117360,"latlng":[-27.0,133.0],"demonym":"Australian","area":7692024.0,"gini":30.5,"timezones":["UTC+05:00","UTC+06:30","UTC+07:00","UTC+08:00","UTC+09:30","UTC+10:00","UTC+10:30","UTC+11:30"],"borders":[],"nativeName":"Australia","numericCode":"036","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Australien","es":"Australia","fr":"Australie","ja":"オーストラリア","it":"Australia","br":"Austrália","pt":"Austrália","nl":"Australië","hr":"Australija","fa":"استرالیا"},"flag":"https://restcountries.eu/data/aus.svg","regionalBlocs":[],"cioc":"AUS"},{"name":"Austria","topLevelDomain":[".at"],"alpha2Code":"AT","alpha3Code":"AUT","callingCodes":["43"],"capital":"Vienna","altSpellings":["AT","Österreich","Osterreich","Oesterreich"],"region":"Europe","subregion":"Western Europe","population":8725931,"latlng":[47.33333333,13.33333333],"demonym":"Austrian","area":83871.0,"gini":26.0,"timezones":["UTC+01:00"],"borders":["CZE","DEU","HUN","ITA","LIE","SVK","SVN","CHE"],"nativeName":"Österreich","numericCode":"040","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"}],"translations":{"de":"Österreich","es":"Austria","fr":"Autriche","ja":"オーストリア","it":"Austria","br":"áustria","pt":"áustria","nl":"Oostenrijk","hr":"Austrija","fa":"اتریش"},"flag":"https://restcountries.eu/data/aut.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"AUT"},{"name":"Azerbaijan","topLevelDomain":[".az"],"alpha2Code":"AZ","alpha3Code":"AZE","callingCodes":["994"],"capital":"Baku","altSpellings":["AZ","Republic of Azerbaijan","Azərbaycan Respublikası"],"region":"Asia","subregion":"Western Asia","population":9730500,"latlng":[40.5,47.5],"demonym":"Azerbaijani","area":86600.0,"gini":33.7,"timezones":["UTC+04:00"],"borders":["ARM","GEO","IRN","RUS","TUR"],"nativeName":"Azərbaycan","numericCode":"031","currencies":[{"code":"AZN","name":"Azerbaijani manat","symbol":null}],"languages":[{"iso639_1":"az","iso639_2":"aze","name":"Azerbaijani","nativeName":"azərbaycan dili"}],"translations":{"de":"Aserbaidschan","es":"Azerbaiyán","fr":"Azerbaïdjan","ja":"アゼルバイジャン","it":"Azerbaijan","br":"Azerbaijão","pt":"Azerbaijão","nl":"Azerbeidzjan","hr":"Azerbajdžan","fa":"آذربایجان"},"flag":"https://restcountries.eu/data/aze.svg","regionalBlocs":[],"cioc":"AZE"},{"name":"Bahamas","topLevelDomain":[".bs"],"alpha2Code":"BS","alpha3Code":"BHS","callingCodes":["1242"],"capital":"Nassau","altSpellings":["BS","Commonwealth of the Bahamas"],"region":"Americas","subregion":"Caribbean","population":378040,"latlng":[24.25,-76.0],"demonym":"Bahamian","area":13943.0,"gini":null,"timezones":["UTC-05:00"],"borders":[],"nativeName":"Bahamas","numericCode":"044","currencies":[{"code":"BSD","name":"Bahamian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Bahamas","es":"Bahamas","fr":"Bahamas","ja":"バハマ","it":"Bahamas","br":"Bahamas","pt":"Baamas","nl":"Bahama’s","hr":"Bahami","fa":"باهاما"},"flag":"https://restcountries.eu/data/bhs.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"BAH"},{"name":"Bahrain","topLevelDomain":[".bh"],"alpha2Code":"BH","alpha3Code":"BHR","callingCodes":["973"],"capital":"Manama","altSpellings":["BH","Kingdom of Bahrain","Mamlakat al-Baḥrayn"],"region":"Asia","subregion":"Western Asia","population":1404900,"latlng":[26.0,50.55],"demonym":"Bahraini","area":765.0,"gini":null,"timezones":["UTC+03:00"],"borders":[],"nativeName":"‏البحرين","numericCode":"048","currencies":[{"code":"BHD","name":"Bahraini dinar","symbol":".د.ب"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Bahrain","es":"Bahrein","fr":"Bahreïn","ja":"バーレーン","it":"Bahrein","br":"Bahrein","pt":"Barém","nl":"Bahrein","hr":"Bahrein","fa":"بحرین"},"flag":"https://restcountries.eu/data/bhr.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"BRN"},{"name":"Bangladesh","topLevelDomain":[".bd"],"alpha2Code":"BD","alpha3Code":"BGD","callingCodes":["880"],"capital":"Dhaka","altSpellings":["BD","People's Republic of Bangladesh","Gônôprôjatôntri Bangladesh"],"region":"Asia","subregion":"Southern Asia","population":161006790,"latlng":[24.0,90.0],"demonym":"Bangladeshi","area":147570.0,"gini":32.1,"timezones":["UTC+06:00"],"borders":["MMR","IND"],"nativeName":"Bangladesh","numericCode":"050","currencies":[{"code":"BDT","name":"Bangladeshi taka","symbol":"৳"}],"languages":[{"iso639_1":"bn","iso639_2":"ben","name":"Bengali","nativeName":"বাংলা"}],"translations":{"de":"Bangladesch","es":"Bangladesh","fr":"Bangladesh","ja":"バングラデシュ","it":"Bangladesh","br":"Bangladesh","pt":"Bangladeche","nl":"Bangladesh","hr":"Bangladeš","fa":"بنگلادش"},"flag":"https://restcountries.eu/data/bgd.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"BAN"},{"name":"Barbados","topLevelDomain":[".bb"],"alpha2Code":"BB","alpha3Code":"BRB","callingCodes":["1246"],"capital":"Bridgetown","altSpellings":["BB"],"region":"Americas","subregion":"Caribbean","population":285000,"latlng":[13.16666666,-59.53333333],"demonym":"Barbadian","area":430.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Barbados","numericCode":"052","currencies":[{"code":"BBD","name":"Barbadian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Barbados","es":"Barbados","fr":"Barbade","ja":"バルバドス","it":"Barbados","br":"Barbados","pt":"Barbados","nl":"Barbados","hr":"Barbados","fa":"باربادوس"},"flag":"https://restcountries.eu/data/brb.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"BAR"},{"name":"Belarus","topLevelDomain":[".by"],"alpha2Code":"BY","alpha3Code":"BLR","callingCodes":["375"],"capital":"Minsk","altSpellings":["BY","Bielaruś","Republic of Belarus","Белоруссия","Республика Беларусь","Belorussiya","Respublika Belarus’"],"region":"Europe","subregion":"Eastern Europe","population":9498700,"latlng":[53.0,28.0],"demonym":"Belarusian","area":207600.0,"gini":26.5,"timezones":["UTC+03:00"],"borders":["LVA","LTU","POL","RUS","UKR"],"nativeName":"Белару́сь","numericCode":"112","currencies":[{"code":"BYN","name":"New Belarusian ruble","symbol":"Br"},{"code":"BYR","name":"Old Belarusian ruble","symbol":"Br"}],"languages":[{"iso639_1":"be","iso639_2":"bel","name":"Belarusian","nativeName":"беларуская мова"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Weißrussland","es":"Bielorrusia","fr":"Biélorussie","ja":"ベラルーシ","it":"Bielorussia","br":"Bielorrússia","pt":"Bielorrússia","nl":"Wit-Rusland","hr":"Bjelorusija","fa":"بلاروس"},"flag":"https://restcountries.eu/data/blr.svg","regionalBlocs":[{"acronym":"EEU","name":"Eurasian Economic Union","otherAcronyms":["EAEU"],"otherNames":[]}],"cioc":"BLR"},{"name":"Belgium","topLevelDomain":[".be"],"alpha2Code":"BE","alpha3Code":"BEL","callingCodes":["32"],"capital":"Brussels","altSpellings":["BE","België","Belgie","Belgien","Belgique","Kingdom of Belgium","Koninkrijk België","Royaume de Belgique","Königreich Belgien"],"region":"Europe","subregion":"Western Europe","population":11319511,"latlng":[50.83333333,4.0],"demonym":"Belgian","area":30528.0,"gini":33.0,"timezones":["UTC+01:00"],"borders":["FRA","DEU","LUX","NLD"],"nativeName":"België","numericCode":"056","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"}],"translations":{"de":"Belgien","es":"Bélgica","fr":"Belgique","ja":"ベルギー","it":"Belgio","br":"Bélgica","pt":"Bélgica","nl":"België","hr":"Belgija","fa":"بلژیک"},"flag":"https://restcountries.eu/data/bel.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"BEL"},{"name":"Belize","topLevelDomain":[".bz"],"alpha2Code":"BZ","alpha3Code":"BLZ","callingCodes":["501"],"capital":"Belmopan","altSpellings":["BZ"],"region":"Americas","subregion":"Central America","population":370300,"latlng":[17.25,-88.75],"demonym":"Belizean","area":22966.0,"gini":53.1,"timezones":["UTC-06:00"],"borders":["GTM","MEX"],"nativeName":"Belize","numericCode":"084","currencies":[{"code":"BZD","name":"Belize dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Belize","es":"Belice","fr":"Belize","ja":"ベリーズ","it":"Belize","br":"Belize","pt":"Belize","nl":"Belize","hr":"Belize","fa":"بلیز"},"flag":"https://restcountries.eu/data/blz.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]},{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"BIZ"},{"name":"Benin","topLevelDomain":[".bj"],"alpha2Code":"BJ","alpha3Code":"BEN","callingCodes":["229"],"capital":"Porto-Novo","altSpellings":["BJ","Republic of Benin","République du Bénin"],"region":"Africa","subregion":"Western Africa","population":10653654,"latlng":[9.5,2.25],"demonym":"Beninese","area":112622.0,"gini":38.6,"timezones":["UTC+01:00"],"borders":["BFA","NER","NGA","TGO"],"nativeName":"Bénin","numericCode":"204","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Benin","es":"Benín","fr":"Bénin","ja":"ベナン","it":"Benin","br":"Benin","pt":"Benim","nl":"Benin","hr":"Benin","fa":"بنین"},"flag":"https://restcountries.eu/data/ben.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"BEN"},{"name":"Bermuda","topLevelDomain":[".bm"],"alpha2Code":"BM","alpha3Code":"BMU","callingCodes":["1441"],"capital":"Hamilton","altSpellings":["BM","The Islands of Bermuda","The Bermudas","Somers Isles"],"region":"Americas","subregion":"Northern America","population":61954,"latlng":[32.33333333,-64.75],"demonym":"Bermudian","area":54.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Bermuda","numericCode":"060","currencies":[{"code":"BMD","name":"Bermudian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Bermuda","es":"Bermudas","fr":"Bermudes","ja":"バミューダ","it":"Bermuda","br":"Bermudas","pt":"Bermudas","nl":"Bermuda","hr":"Bermudi","fa":"برمودا"},"flag":"https://restcountries.eu/data/bmu.svg","regionalBlocs":[],"cioc":"BER"},{"name":"Bhutan","topLevelDomain":[".bt"],"alpha2Code":"BT","alpha3Code":"BTN","callingCodes":["975"],"capital":"Thimphu","altSpellings":["BT","Kingdom of Bhutan"],"region":"Asia","subregion":"Southern Asia","population":775620,"latlng":[27.5,90.5],"demonym":"Bhutanese","area":38394.0,"gini":38.1,"timezones":["UTC+06:00"],"borders":["CHN","IND"],"nativeName":"ʼbrug-yul","numericCode":"064","currencies":[{"code":"BTN","name":"Bhutanese ngultrum","symbol":"Nu."},{"code":"INR","name":"Indian rupee","symbol":"₹"}],"languages":[{"iso639_1":"dz","iso639_2":"dzo","name":"Dzongkha","nativeName":"རྫོང་ཁ"}],"translations":{"de":"Bhutan","es":"Bután","fr":"Bhoutan","ja":"ブータン","it":"Bhutan","br":"Butão","pt":"Butão","nl":"Bhutan","hr":"Butan","fa":"بوتان"},"flag":"https://restcountries.eu/data/btn.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"BHU"},{"name":"Bolivia (Plurinational State of)","topLevelDomain":[".bo"],"alpha2Code":"BO","alpha3Code":"BOL","callingCodes":["591"],"capital":"Sucre","altSpellings":["BO","Buliwya","Wuliwya","Plurinational State of Bolivia","Estado Plurinacional de Bolivia","Buliwya Mamallaqta","Wuliwya Suyu","Tetã Volívia"],"region":"Americas","subregion":"South America","population":10985059,"latlng":[-17.0,-65.0],"demonym":"Bolivian","area":1098581.0,"gini":56.3,"timezones":["UTC-04:00"],"borders":["ARG","BRA","CHL","PRY","PER"],"nativeName":"Bolivia","numericCode":"068","currencies":[{"code":"BOB","name":"Bolivian boliviano","symbol":"Bs."}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"},{"iso639_1":"ay","iso639_2":"aym","name":"Aymara","nativeName":"aymar aru"},{"iso639_1":"qu","iso639_2":"que","name":"Quechua","nativeName":"Runa Simi"}],"translations":{"de":"Bolivien","es":"Bolivia","fr":"Bolivie","ja":"ボリビア多民族国","it":"Bolivia","br":"Bolívia","pt":"Bolívia","nl":"Bolivia","hr":"Bolivija","fa":"بولیوی"},"flag":"https://restcountries.eu/data/bol.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"BOL"},{"name":"Bonaire, Sint Eustatius and Saba","topLevelDomain":[".an",".nl"],"alpha2Code":"BQ","alpha3Code":"BES","callingCodes":["5997"],"capital":"Kralendijk","altSpellings":["BQ","Boneiru"],"region":"Americas","subregion":"Caribbean","population":17408,"latlng":[12.15,-68.266667],"demonym":"Dutch","area":294.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Bonaire","numericCode":"535","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"}],"translations":{"de":"Bonaire, Sint Eustatius und Saba","es":null,"fr":"Bonaire, Saint-Eustache et Saba","ja":null,"it":"Bonaire, Saint-Eustache e Saba","br":"Bonaire","pt":"Bonaire","nl":null,"hr":null,"fa":"بونیر"},"flag":"https://restcountries.eu/data/bes.svg","regionalBlocs":[],"cioc":null},{"name":"Bosnia and Herzegovina","topLevelDomain":[".ba"],"alpha2Code":"BA","alpha3Code":"BIH","callingCodes":["387"],"capital":"Sarajevo","altSpellings":["BA","Bosnia-Herzegovina","Босна и Херцеговина"],"region":"Europe","subregion":"Southern Europe","population":3531159,"latlng":[44.0,18.0],"demonym":"Bosnian, Herzegovinian","area":51209.0,"gini":36.2,"timezones":["UTC+01:00"],"borders":["HRV","MNE","SRB"],"nativeName":"Bosna i Hercegovina","numericCode":"070","currencies":[{"code":"BAM","name":"Bosnia and Herzegovina convertible mark","symbol":null}],"languages":[{"iso639_1":"bs","iso639_2":"bos","name":"Bosnian","nativeName":"bosanski jezik"},{"iso639_1":"hr","iso639_2":"hrv","name":"Croatian","nativeName":"hrvatski jezik"},{"iso639_1":"sr","iso639_2":"srp","name":"Serbian","nativeName":"српски језик"}],"translations":{"de":"Bosnien und Herzegowina","es":"Bosnia y Herzegovina","fr":"Bosnie-Herzégovine","ja":"ボスニア・ヘルツェゴビナ","it":"Bosnia ed Erzegovina","br":"Bósnia e Herzegovina","pt":"Bósnia e Herzegovina","nl":"Bosnië en Herzegovina","hr":"Bosna i Hercegovina","fa":"بوسنی و هرزگوین"},"flag":"https://restcountries.eu/data/bih.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"BIH"},{"name":"Botswana","topLevelDomain":[".bw"],"alpha2Code":"BW","alpha3Code":"BWA","callingCodes":["267"],"capital":"Gaborone","altSpellings":["BW","Republic of Botswana","Lefatshe la Botswana"],"region":"Africa","subregion":"Southern Africa","population":2141206,"latlng":[-22.0,24.0],"demonym":"Motswana","area":582000.0,"gini":61.0,"timezones":["UTC+02:00"],"borders":["NAM","ZAF","ZMB","ZWE"],"nativeName":"Botswana","numericCode":"072","currencies":[{"code":"BWP","name":"Botswana pula","symbol":"P"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"tn","iso639_2":"tsn","name":"Tswana","nativeName":"Setswana"}],"translations":{"de":"Botswana","es":"Botswana","fr":"Botswana","ja":"ボツワナ","it":"Botswana","br":"Botsuana","pt":"Botsuana","nl":"Botswana","hr":"Bocvana","fa":"بوتسوانا"},"flag":"https://restcountries.eu/data/bwa.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"BOT"},{"name":"Bouvet Island","topLevelDomain":[".bv"],"alpha2Code":"BV","alpha3Code":"BVT","callingCodes":[""],"capital":"","altSpellings":["BV","Bouvetøya","Bouvet-øya"],"region":"","subregion":"","population":0,"latlng":[-54.43333333,3.4],"demonym":"","area":49.0,"gini":null,"timezones":["UTC+01:00"],"borders":[],"nativeName":"Bouvetøya","numericCode":"074","currencies":[{"code":"NOK","name":"Norwegian krone","symbol":"kr"}],"languages":[{"iso639_1":"no","iso639_2":"nor","name":"Norwegian","nativeName":"Norsk"},{"iso639_1":"nb","iso639_2":"nob","name":"Norwegian Bokmål","nativeName":"Norsk bokmål"},{"iso639_1":"nn","iso639_2":"nno","name":"Norwegian Nynorsk","nativeName":"Norsk nynorsk"}],"translations":{"de":"Bouvetinsel","es":"Isla Bouvet","fr":"Île Bouvet","ja":"ブーベ島","it":"Isola Bouvet","br":"Ilha Bouvet","pt":"Ilha Bouvet","nl":"Bouveteiland","hr":"Otok Bouvet","fa":"جزیره بووه"},"flag":"https://restcountries.eu/data/bvt.svg","regionalBlocs":[],"cioc":""},{"name":"Brazil","topLevelDomain":[".br"],"alpha2Code":"BR","alpha3Code":"BRA","callingCodes":["55"],"capital":"Brasília","altSpellings":["BR","Brasil","Federative Republic of Brazil","República Federativa do Brasil"],"region":"Americas","subregion":"South America","population":206135893,"latlng":[-10.0,-55.0],"demonym":"Brazilian","area":8515767.0,"gini":54.7,"timezones":["UTC-05:00","UTC-04:00","UTC-03:00","UTC-02:00"],"borders":["ARG","BOL","COL","GUF","GUY","PRY","PER","SUR","URY","VEN"],"nativeName":"Brasil","numericCode":"076","currencies":[{"code":"BRL","name":"Brazilian real","symbol":"R$"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Brasilien","es":"Brasil","fr":"Brésil","ja":"ブラジル","it":"Brasile","br":"Brasil","pt":"Brasil","nl":"Brazilië","hr":"Brazil","fa":"برزیل"},"flag":"https://restcountries.eu/data/bra.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"BRA"},{"name":"British Indian Ocean Territory","topLevelDomain":[".io"],"alpha2Code":"IO","alpha3Code":"IOT","callingCodes":["246"],"capital":"Diego Garcia","altSpellings":["IO"],"region":"Africa","subregion":"Eastern Africa","population":3000,"latlng":[-6.0,71.5],"demonym":"Indian","area":60.0,"gini":null,"timezones":["UTC+06:00"],"borders":[],"nativeName":"British Indian Ocean Territory","numericCode":"086","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Britisches Territorium im Indischen Ozean","es":"Territorio Británico del Océano Índico","fr":"Territoire britannique de l'océan Indien","ja":"イギリス領インド洋地域","it":"Territorio britannico dell'oceano indiano","br":"Território Britânico do Oceano íÍdico","pt":"Território Britânico do Oceano Índico","nl":"Britse Gebieden in de Indische Oceaan","hr":"Britanski Indijskooceanski teritorij","fa":"قلمرو بریتانیا در اقیانوس هند"},"flag":"https://restcountries.eu/data/iot.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"United States Minor Outlying Islands","topLevelDomain":[".us"],"alpha2Code":"UM","alpha3Code":"UMI","callingCodes":[""],"capital":"","altSpellings":["UM"],"region":"Americas","subregion":"Northern America","population":300,"latlng":[],"demonym":"American","area":null,"gini":null,"timezones":["UTC-11:00","UTC-10:00","UTC+12:00"],"borders":[],"nativeName":"United States Minor Outlying Islands","numericCode":"581","currencies":[{"code":"USD","name":"United States Dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Kleinere Inselbesitzungen der Vereinigten Staaten","es":"Islas Ultramarinas Menores de Estados Unidos","fr":"Îles mineures éloignées des États-Unis","ja":"合衆国領有小離島","it":"Isole minori esterne degli Stati Uniti d'America","br":"Ilhas Menores Distantes dos Estados Unidos","pt":"Ilhas Menores Distantes dos Estados Unidos","nl":"Kleine afgelegen eilanden van de Verenigde Staten","hr":"Mali udaljeni otoci SAD-a","fa":"جزایر کوچک حاشیه‌ای ایالات متحده آمریکا"},"flag":"https://restcountries.eu/data/umi.svg","regionalBlocs":[],"cioc":""},{"name":"Virgin Islands (British)","topLevelDomain":[".vg"],"alpha2Code":"VG","alpha3Code":"VGB","callingCodes":["1284"],"capital":"Road Town","altSpellings":["VG"],"region":"Americas","subregion":"Caribbean","population":28514,"latlng":[18.431383,-64.62305],"demonym":"Virgin Islander","area":151.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"British Virgin Islands","numericCode":"092","currencies":[{"code":null,"name":"[D]","symbol":"$"},{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Britische Jungferninseln","es":"Islas Vírgenes del Reino Unido","fr":"Îles Vierges britanniques","ja":"イギリス領ヴァージン諸島","it":"Isole Vergini Britanniche","br":"Ilhas Virgens Britânicas","pt":"Ilhas Virgens Britânicas","nl":"Britse Maagdeneilanden","hr":"Britanski Djevičanski Otoci","fa":"جزایر ویرجین بریتانیا"},"flag":"https://restcountries.eu/data/vgb.svg","regionalBlocs":[],"cioc":"IVB"},{"name":"Virgin Islands (U.S.)","topLevelDomain":[".vi"],"alpha2Code":"VI","alpha3Code":"VIR","callingCodes":["1 340"],"capital":"Charlotte Amalie","altSpellings":["VI","USVI","American Virgin Islands","U.S. Virgin Islands"],"region":"Americas","subregion":"Caribbean","population":114743,"latlng":[18.34,-64.93],"demonym":"Virgin Islander","area":346.36,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Virgin Islands of the United States","numericCode":"850","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Amerikanische Jungferninseln","es":"Islas Vírgenes de los Estados Unidos","fr":"Îles Vierges des États-Unis","ja":"アメリカ領ヴァージン諸島","it":"Isole Vergini americane","br":"Ilhas Virgens Americanas","pt":"Ilhas Virgens Americanas","nl":"Verenigde Staten Maagdeneilanden","hr":null,"fa":"جزایر ویرجین آمریکا"},"flag":"https://restcountries.eu/data/vir.svg","regionalBlocs":[],"cioc":"ISV"},{"name":"Brunei Darussalam","topLevelDomain":[".bn"],"alpha2Code":"BN","alpha3Code":"BRN","callingCodes":["673"],"capital":"Bandar Seri Begawan","altSpellings":["BN","Nation of Brunei"," the Abode of Peace"],"region":"Asia","subregion":"South-Eastern Asia","population":411900,"latlng":[4.5,114.66666666],"demonym":"Bruneian","area":5765.0,"gini":null,"timezones":["UTC+08:00"],"borders":["MYS"],"nativeName":"Negara Brunei Darussalam","numericCode":"096","currencies":[{"code":"BND","name":"Brunei dollar","symbol":"$"},{"code":"SGD","name":"Singapore dollar","symbol":"$"}],"languages":[{"iso639_1":"ms","iso639_2":"msa","name":"Malay","nativeName":"bahasa Melayu"}],"translations":{"de":"Brunei","es":"Brunei","fr":"Brunei","ja":"ブルネイ・ダルサラーム","it":"Brunei","br":"Brunei","pt":"Brunei","nl":"Brunei","hr":"Brunej","fa":"برونئی"},"flag":"https://restcountries.eu/data/brn.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"BRU"},{"name":"Bulgaria","topLevelDomain":[".bg"],"alpha2Code":"BG","alpha3Code":"BGR","callingCodes":["359"],"capital":"Sofia","altSpellings":["BG","Republic of Bulgaria","Република България"],"region":"Europe","subregion":"Eastern Europe","population":7153784,"latlng":[43.0,25.0],"demonym":"Bulgarian","area":110879.0,"gini":28.2,"timezones":["UTC+02:00"],"borders":["GRC","MKD","ROU","SRB","TUR"],"nativeName":"България","numericCode":"100","currencies":[{"code":"BGN","name":"Bulgarian lev","symbol":"лв"}],"languages":[{"iso639_1":"bg","iso639_2":"bul","name":"Bulgarian","nativeName":"български език"}],"translations":{"de":"Bulgarien","es":"Bulgaria","fr":"Bulgarie","ja":"ブルガリア","it":"Bulgaria","br":"Bulgária","pt":"Bulgária","nl":"Bulgarije","hr":"Bugarska","fa":"بلغارستان"},"flag":"https://restcountries.eu/data/bgr.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"BUL"},{"name":"Burkina Faso","topLevelDomain":[".bf"],"alpha2Code":"BF","alpha3Code":"BFA","callingCodes":["226"],"capital":"Ouagadougou","altSpellings":["BF"],"region":"Africa","subregion":"Western Africa","population":19034397,"latlng":[13.0,-2.0],"demonym":"Burkinabe","area":272967.0,"gini":39.8,"timezones":["UTC"],"borders":["BEN","CIV","GHA","MLI","NER","TGO"],"nativeName":"Burkina Faso","numericCode":"854","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ff","iso639_2":"ful","name":"Fula","nativeName":"Fulfulde"}],"translations":{"de":"Burkina Faso","es":"Burkina Faso","fr":"Burkina Faso","ja":"ブルキナファソ","it":"Burkina Faso","br":"Burkina Faso","pt":"Burquina Faso","nl":"Burkina Faso","hr":"Burkina Faso","fa":"بورکینافاسو"},"flag":"https://restcountries.eu/data/bfa.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"BUR"},{"name":"Burundi","topLevelDomain":[".bi"],"alpha2Code":"BI","alpha3Code":"BDI","callingCodes":["257"],"capital":"Bujumbura","altSpellings":["BI","Republic of Burundi","Republika y'Uburundi","République du Burundi"],"region":"Africa","subregion":"Eastern Africa","population":10114505,"latlng":[-3.5,30.0],"demonym":"Burundian","area":27834.0,"gini":33.3,"timezones":["UTC+02:00"],"borders":["COD","RWA","TZA"],"nativeName":"Burundi","numericCode":"108","currencies":[{"code":"BIF","name":"Burundian franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"rn","iso639_2":"run","name":"Kirundi","nativeName":"Ikirundi"}],"translations":{"de":"Burundi","es":"Burundi","fr":"Burundi","ja":"ブルンジ","it":"Burundi","br":"Burundi","pt":"Burúndi","nl":"Burundi","hr":"Burundi","fa":"بوروندی"},"flag":"https://restcountries.eu/data/bdi.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"BDI"},{"name":"Cambodia","topLevelDomain":[".kh"],"alpha2Code":"KH","alpha3Code":"KHM","callingCodes":["855"],"capital":"Phnom Penh","altSpellings":["KH","Kingdom of Cambodia"],"region":"Asia","subregion":"South-Eastern Asia","population":15626444,"latlng":[13.0,105.0],"demonym":"Cambodian","area":181035.0,"gini":37.9,"timezones":["UTC+07:00"],"borders":["LAO","THA","VNM"],"nativeName":"Kâmpŭchéa","numericCode":"116","currencies":[{"code":"KHR","name":"Cambodian riel","symbol":"៛"},{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"km","iso639_2":"khm","name":"Khmer","nativeName":"ខ្មែរ"}],"translations":{"de":"Kambodscha","es":"Camboya","fr":"Cambodge","ja":"カンボジア","it":"Cambogia","br":"Camboja","pt":"Camboja","nl":"Cambodja","hr":"Kambodža","fa":"کامبوج"},"flag":"https://restcountries.eu/data/khm.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"CAM"},{"name":"Cameroon","topLevelDomain":[".cm"],"alpha2Code":"CM","alpha3Code":"CMR","callingCodes":["237"],"capital":"Yaoundé","altSpellings":["CM","Republic of Cameroon","République du Cameroun"],"region":"Africa","subregion":"Middle Africa","population":22709892,"latlng":[6.0,12.0],"demonym":"Cameroonian","area":475442.0,"gini":38.9,"timezones":["UTC+01:00"],"borders":["CAF","TCD","COG","GNQ","GAB","NGA"],"nativeName":"Cameroon","numericCode":"120","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Kamerun","es":"Camerún","fr":"Cameroun","ja":"カメルーン","it":"Camerun","br":"Camarões","pt":"Camarões","nl":"Kameroen","hr":"Kamerun","fa":"کامرون"},"flag":"https://restcountries.eu/data/cmr.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CMR"},{"name":"Canada","topLevelDomain":[".ca"],"alpha2Code":"CA","alpha3Code":"CAN","callingCodes":["1"],"capital":"Ottawa","altSpellings":["CA"],"region":"Americas","subregion":"Northern America","population":36155487,"latlng":[60.0,-95.0],"demonym":"Canadian","area":9984670.0,"gini":32.6,"timezones":["UTC-08:00","UTC-07:00","UTC-06:00","UTC-05:00","UTC-04:00","UTC-03:30"],"borders":["USA"],"nativeName":"Canada","numericCode":"124","currencies":[{"code":"CAD","name":"Canadian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Kanada","es":"Canadá","fr":"Canada","ja":"カナダ","it":"Canada","br":"Canadá","pt":"Canadá","nl":"Canada","hr":"Kanada","fa":"کانادا"},"flag":"https://restcountries.eu/data/can.svg","regionalBlocs":[{"acronym":"NAFTA","name":"North American Free Trade Agreement","otherAcronyms":[],"otherNames":["Tratado de Libre Comercio de América del Norte","Accord de Libre-échange Nord-Américain"]}],"cioc":"CAN"},{"name":"Cabo Verde","topLevelDomain":[".cv"],"alpha2Code":"CV","alpha3Code":"CPV","callingCodes":["238"],"capital":"Praia","altSpellings":["CV","Republic of Cabo Verde","República de Cabo Verde"],"region":"Africa","subregion":"Western Africa","population":531239,"latlng":[16.0,-24.0],"demonym":"Cape Verdian","area":4033.0,"gini":50.5,"timezones":["UTC-01:00"],"borders":[],"nativeName":"Cabo Verde","numericCode":"132","currencies":[{"code":"CVE","name":"Cape Verdean escudo","symbol":"Esc"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Kap Verde","es":"Cabo Verde","fr":"Cap Vert","ja":"カーボベルデ","it":"Capo Verde","br":"Cabo Verde","pt":"Cabo Verde","nl":"Kaapverdië","hr":"Zelenortska Republika","fa":"کیپ ورد"},"flag":"https://restcountries.eu/data/cpv.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CPV"},{"name":"Cayman Islands","topLevelDomain":[".ky"],"alpha2Code":"KY","alpha3Code":"CYM","callingCodes":["1345"],"capital":"George Town","altSpellings":["KY"],"region":"Americas","subregion":"Caribbean","population":58238,"latlng":[19.5,-80.5],"demonym":"Caymanian","area":264.0,"gini":null,"timezones":["UTC-05:00"],"borders":[],"nativeName":"Cayman Islands","numericCode":"136","currencies":[{"code":"KYD","name":"Cayman Islands dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Kaimaninseln","es":"Islas Caimán","fr":"Îles Caïmans","ja":"ケイマン諸島","it":"Isole Cayman","br":"Ilhas Cayman","pt":"Ilhas Caimão","nl":"Caymaneilanden","hr":"Kajmanski otoci","fa":"جزایر کیمن"},"flag":"https://restcountries.eu/data/cym.svg","regionalBlocs":[],"cioc":"CAY"},{"name":"Central African Republic","topLevelDomain":[".cf"],"alpha2Code":"CF","alpha3Code":"CAF","callingCodes":["236"],"capital":"Bangui","altSpellings":["CF","Central African Republic","République centrafricaine"],"region":"Africa","subregion":"Middle Africa","population":4998000,"latlng":[7.0,21.0],"demonym":"Central African","area":622984.0,"gini":56.3,"timezones":["UTC+01:00"],"borders":["CMR","TCD","COD","COG","SSD","SDN"],"nativeName":"Ködörösêse tî Bêafrîka","numericCode":"140","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"sg","iso639_2":"sag","name":"Sango","nativeName":"yângâ tî sängö"}],"translations":{"de":"Zentralafrikanische Republik","es":"República Centroafricana","fr":"République centrafricaine","ja":"中央アフリカ共和国","it":"Repubblica Centrafricana","br":"República Centro-Africana","pt":"República Centro-Africana","nl":"Centraal-Afrikaanse Republiek","hr":"Srednjoafrička Republika","fa":"جمهوری آفریقای مرکزی"},"flag":"https://restcountries.eu/data/caf.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CAF"},{"name":"Chad","topLevelDomain":[".td"],"alpha2Code":"TD","alpha3Code":"TCD","callingCodes":["235"],"capital":"N'Djamena","altSpellings":["TD","Tchad","Republic of Chad","République du Tchad"],"region":"Africa","subregion":"Middle Africa","population":14497000,"latlng":[15.0,19.0],"demonym":"Chadian","area":1284000.0,"gini":39.8,"timezones":["UTC+01:00"],"borders":["CMR","CAF","LBY","NER","NGA","SSD"],"nativeName":"Tchad","numericCode":"148","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Tschad","es":"Chad","fr":"Tchad","ja":"チャド","it":"Ciad","br":"Chade","pt":"Chade","nl":"Tsjaad","hr":"Čad","fa":"چاد"},"flag":"https://restcountries.eu/data/tcd.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CHA"},{"name":"Chile","topLevelDomain":[".cl"],"alpha2Code":"CL","alpha3Code":"CHL","callingCodes":["56"],"capital":"Santiago","altSpellings":["CL","Republic of Chile","República de Chile"],"region":"Americas","subregion":"South America","population":18191900,"latlng":[-30.0,-71.0],"demonym":"Chilean","area":756102.0,"gini":52.1,"timezones":["UTC-06:00","UTC-04:00"],"borders":["ARG","BOL","PER"],"nativeName":"Chile","numericCode":"152","currencies":[{"code":"CLP","name":"Chilean peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Chile","es":"Chile","fr":"Chili","ja":"チリ","it":"Cile","br":"Chile","pt":"Chile","nl":"Chili","hr":"Čile","fa":"شیلی"},"flag":"https://restcountries.eu/data/chl.svg","regionalBlocs":[{"acronym":"PA","name":"Pacific Alliance","otherAcronyms":[],"otherNames":["Alianza del Pacífico"]},{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"CHI"},{"name":"China","topLevelDomain":[".cn"],"alpha2Code":"CN","alpha3Code":"CHN","callingCodes":["86"],"capital":"Beijing","altSpellings":["CN","Zhōngguó","Zhongguo","Zhonghua","People's Republic of China","中华人民共和国","Zhōnghuá Rénmín Gònghéguó"],"region":"Asia","subregion":"Eastern Asia","population":1377422166,"latlng":[35.0,105.0],"demonym":"Chinese","area":9640011.0,"gini":47.0,"timezones":["UTC+08:00"],"borders":["AFG","BTN","MMR","HKG","IND","KAZ","PRK","KGZ","LAO","MAC","MNG","PAK","RUS","TJK","VNM"],"nativeName":"中国","numericCode":"156","currencies":[{"code":"CNY","name":"Chinese yuan","symbol":"¥"}],"languages":[{"iso639_1":"zh","iso639_2":"zho","name":"Chinese","nativeName":"中文 (Zhōngwén)"}],"translations":{"de":"China","es":"China","fr":"Chine","ja":"中国","it":"Cina","br":"China","pt":"China","nl":"China","hr":"Kina","fa":"چین"},"flag":"https://restcountries.eu/data/chn.svg","regionalBlocs":[],"cioc":"CHN"},{"name":"Christmas Island","topLevelDomain":[".cx"],"alpha2Code":"CX","alpha3Code":"CXR","callingCodes":["61"],"capital":"Flying Fish Cove","altSpellings":["CX","Territory of Christmas Island"],"region":"Oceania","subregion":"Australia and New Zealand","population":2072,"latlng":[-10.5,105.66666666],"demonym":"Christmas Island","area":135.0,"gini":null,"timezones":["UTC+07:00"],"borders":[],"nativeName":"Christmas Island","numericCode":"162","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Weihnachtsinsel","es":"Isla de Navidad","fr":"Île Christmas","ja":"クリスマス島","it":"Isola di Natale","br":"Ilha Christmas","pt":"Ilha do Natal","nl":"Christmaseiland","hr":"Božićni otok","fa":"جزیره کریسمس"},"flag":"https://restcountries.eu/data/cxr.svg","regionalBlocs":[],"cioc":""},{"name":"Cocos (Keeling) Islands","topLevelDomain":[".cc"],"alpha2Code":"CC","alpha3Code":"CCK","callingCodes":["61"],"capital":"West Island","altSpellings":["CC","Territory of the Cocos (Keeling) Islands","Keeling Islands"],"region":"Oceania","subregion":"Australia and New Zealand","population":550,"latlng":[-12.5,96.83333333],"demonym":"Cocos Islander","area":14.0,"gini":null,"timezones":["UTC+06:30"],"borders":[],"nativeName":"Cocos (Keeling) Islands","numericCode":"166","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Kokosinseln","es":"Islas Cocos o Islas Keeling","fr":"Îles Cocos","ja":"ココス(キーリング)諸島","it":"Isole Cocos e Keeling","br":"Ilhas Cocos","pt":"Ilhas dos Cocos","nl":"Cocoseilanden","hr":"Kokosovi Otoci","fa":"جزایر کوکوس"},"flag":"https://restcountries.eu/data/cck.svg","regionalBlocs":[],"cioc":""},{"name":"Colombia","topLevelDomain":[".co"],"alpha2Code":"CO","alpha3Code":"COL","callingCodes":["57"],"capital":"Bogotá","altSpellings":["CO","Republic of Colombia","República de Colombia"],"region":"Americas","subregion":"South America","population":48759958,"latlng":[4.0,-72.0],"demonym":"Colombian","area":1141748.0,"gini":55.9,"timezones":["UTC-05:00"],"borders":["BRA","ECU","PAN","PER","VEN"],"nativeName":"Colombia","numericCode":"170","currencies":[{"code":"COP","name":"Colombian peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Kolumbien","es":"Colombia","fr":"Colombie","ja":"コロンビア","it":"Colombia","br":"Colômbia","pt":"Colômbia","nl":"Colombia","hr":"Kolumbija","fa":"کلمبیا"},"flag":"https://restcountries.eu/data/col.svg","regionalBlocs":[{"acronym":"PA","name":"Pacific Alliance","otherAcronyms":[],"otherNames":["Alianza del Pacífico"]},{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"COL"},{"name":"Comoros","topLevelDomain":[".km"],"alpha2Code":"KM","alpha3Code":"COM","callingCodes":["269"],"capital":"Moroni","altSpellings":["KM","Union of the Comoros","Union des Comores","Udzima wa Komori","al-Ittiḥād al-Qumurī"],"region":"Africa","subregion":"Eastern Africa","population":806153,"latlng":[-12.16666666,44.25],"demonym":"Comoran","area":1862.0,"gini":64.3,"timezones":["UTC+03:00"],"borders":[],"nativeName":"Komori","numericCode":"174","currencies":[{"code":"KMF","name":"Comorian franc","symbol":"Fr"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Union der Komoren","es":"Comoras","fr":"Comores","ja":"コモロ","it":"Comore","br":"Comores","pt":"Comores","nl":"Comoren","hr":"Komori","fa":"کومور"},"flag":"https://restcountries.eu/data/com.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"COM"},{"name":"Congo","topLevelDomain":[".cg"],"alpha2Code":"CG","alpha3Code":"COG","callingCodes":["242"],"capital":"Brazzaville","altSpellings":["CG","Congo-Brazzaville"],"region":"Africa","subregion":"Middle Africa","population":4741000,"latlng":[-1.0,15.0],"demonym":"Congolese","area":342000.0,"gini":47.3,"timezones":["UTC+01:00"],"borders":["AGO","CMR","CAF","COD","GAB"],"nativeName":"République du Congo","numericCode":"178","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ln","iso639_2":"lin","name":"Lingala","nativeName":"Lingála"}],"translations":{"de":"Kongo","es":"Congo","fr":"Congo","ja":"コンゴ共和国","it":"Congo","br":"Congo","pt":"Congo","nl":"Congo [Republiek]","hr":"Kongo","fa":"کنگو"},"flag":"https://restcountries.eu/data/cog.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CGO"},{"name":"Congo (Democratic Republic of the)","topLevelDomain":[".cd"],"alpha2Code":"CD","alpha3Code":"COD","callingCodes":["243"],"capital":"Kinshasa","altSpellings":["CD","DR Congo","Congo-Kinshasa","DRC"],"region":"Africa","subregion":"Middle Africa","population":85026000,"latlng":[0.0,25.0],"demonym":"Congolese","area":2344858.0,"gini":null,"timezones":["UTC+01:00","UTC+02:00"],"borders":["AGO","BDI","CAF","COG","RWA","SSD","TZA","UGA","ZMB"],"nativeName":"République démocratique du Congo","numericCode":"180","currencies":[{"code":"CDF","name":"Congolese franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ln","iso639_2":"lin","name":"Lingala","nativeName":"Lingála"},{"iso639_1":"kg","iso639_2":"kon","name":"Kongo","nativeName":"Kikongo"},{"iso639_1":"sw","iso639_2":"swa","name":"Swahili","nativeName":"Kiswahili"},{"iso639_1":"lu","iso639_2":"lub","name":"Luba-Katanga","nativeName":"Tshiluba"}],"translations":{"de":"Kongo (Dem. Rep.)","es":"Congo (Rep. Dem.)","fr":"Congo (Rép. dém.)","ja":"コンゴ民主共和国","it":"Congo (Rep. Dem.)","br":"RD Congo","pt":"RD Congo","nl":"Congo [DRC]","hr":"Kongo, Demokratska Republika","fa":"جمهوری کنگو"},"flag":"https://restcountries.eu/data/cod.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"COD"},{"name":"Cook Islands","topLevelDomain":[".ck"],"alpha2Code":"CK","alpha3Code":"COK","callingCodes":["682"],"capital":"Avarua","altSpellings":["CK","Kūki 'Āirani"],"region":"Oceania","subregion":"Polynesia","population":18100,"latlng":[-21.23333333,-159.76666666],"demonym":"Cook Islander","area":236.0,"gini":null,"timezones":["UTC-10:00"],"borders":[],"nativeName":"Cook Islands","numericCode":"184","currencies":[{"code":"NZD","name":"New Zealand dollar","symbol":"$"},{"code":"CKD","name":"Cook Islands dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Cookinseln","es":"Islas Cook","fr":"Îles Cook","ja":"クック諸島","it":"Isole Cook","br":"Ilhas Cook","pt":"Ilhas Cook","nl":"Cookeilanden","hr":"Cookovo Otočje","fa":"جزایر کوک"},"flag":"https://restcountries.eu/data/cok.svg","regionalBlocs":[],"cioc":"COK"},{"name":"Costa Rica","topLevelDomain":[".cr"],"alpha2Code":"CR","alpha3Code":"CRI","callingCodes":["506"],"capital":"San José","altSpellings":["CR","Republic of Costa Rica","República de Costa Rica"],"region":"Americas","subregion":"Central America","population":4890379,"latlng":[10.0,-84.0],"demonym":"Costa Rican","area":51100.0,"gini":50.7,"timezones":["UTC-06:00"],"borders":["NIC","PAN"],"nativeName":"Costa Rica","numericCode":"188","currencies":[{"code":"CRC","name":"Costa Rican colón","symbol":"₡"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Costa Rica","es":"Costa Rica","fr":"Costa Rica","ja":"コスタリカ","it":"Costa Rica","br":"Costa Rica","pt":"Costa Rica","nl":"Costa Rica","hr":"Kostarika","fa":"کاستاریکا"},"flag":"https://restcountries.eu/data/cri.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"CRC"},{"name":"Croatia","topLevelDomain":[".hr"],"alpha2Code":"HR","alpha3Code":"HRV","callingCodes":["385"],"capital":"Zagreb","altSpellings":["HR","Hrvatska","Republic of Croatia","Republika Hrvatska"],"region":"Europe","subregion":"Southern Europe","population":4190669,"latlng":[45.16666666,15.5],"demonym":"Croatian","area":56594.0,"gini":33.7,"timezones":["UTC+01:00"],"borders":["BIH","HUN","MNE","SRB","SVN"],"nativeName":"Hrvatska","numericCode":"191","currencies":[{"code":"HRK","name":"Croatian kuna","symbol":"kn"}],"languages":[{"iso639_1":"hr","iso639_2":"hrv","name":"Croatian","nativeName":"hrvatski jezik"}],"translations":{"de":"Kroatien","es":"Croacia","fr":"Croatie","ja":"クロアチア","it":"Croazia","br":"Croácia","pt":"Croácia","nl":"Kroatië","hr":"Hrvatska","fa":"کرواسی"},"flag":"https://restcountries.eu/data/hrv.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"CRO"},{"name":"Cuba","topLevelDomain":[".cu"],"alpha2Code":"CU","alpha3Code":"CUB","callingCodes":["53"],"capital":"Havana","altSpellings":["CU","Republic of Cuba","República de Cuba"],"region":"Americas","subregion":"Caribbean","population":11239004,"latlng":[21.5,-80.0],"demonym":"Cuban","area":109884.0,"gini":null,"timezones":["UTC-05:00"],"borders":[],"nativeName":"Cuba","numericCode":"192","currencies":[{"code":"CUC","name":"Cuban convertible peso","symbol":"$"},{"code":"CUP","name":"Cuban peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Kuba","es":"Cuba","fr":"Cuba","ja":"キューバ","it":"Cuba","br":"Cuba","pt":"Cuba","nl":"Cuba","hr":"Kuba","fa":"کوبا"},"flag":"https://restcountries.eu/data/cub.svg","regionalBlocs":[],"cioc":"CUB"},{"name":"Curaçao","topLevelDomain":[".cw"],"alpha2Code":"CW","alpha3Code":"CUW","callingCodes":["599"],"capital":"Willemstad","altSpellings":["CW","Curacao","Kòrsou","Country of Curaçao","Land Curaçao","Pais Kòrsou"],"region":"Americas","subregion":"Caribbean","population":154843,"latlng":[12.116667,-68.933333],"demonym":"Dutch","area":444.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Curaçao","numericCode":"531","currencies":[{"code":"ANG","name":"Netherlands Antillean guilder","symbol":"ƒ"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"},{"iso639_1":"pa","iso639_2":"pan","name":"(Eastern) Punjabi","nativeName":"ਪੰਜਾਬੀ"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Curaçao","es":null,"fr":"Curaçao","ja":null,"it":"Curaçao","br":"Curaçao","pt":"Curaçao","nl":"Curaçao","hr":null,"fa":"کوراسائو"},"flag":"https://restcountries.eu/data/cuw.svg","regionalBlocs":[],"cioc":""},{"name":"Cyprus","topLevelDomain":[".cy"],"alpha2Code":"CY","alpha3Code":"CYP","callingCodes":["357"],"capital":"Nicosia","altSpellings":["CY","Kýpros","Kıbrıs","Republic of Cyprus","Κυπριακή Δημοκρατία","Kıbrıs Cumhuriyeti"],"region":"Europe","subregion":"Southern Europe","population":847000,"latlng":[35.0,33.0],"demonym":"Cypriot","area":9251.0,"gini":null,"timezones":["UTC+02:00"],"borders":["GBR"],"nativeName":"Κύπρος","numericCode":"196","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"el","iso639_2":"ell","name":"Greek (modern)","nativeName":"ελληνικά"},{"iso639_1":"tr","iso639_2":"tur","name":"Turkish","nativeName":"Türkçe"},{"iso639_1":"hy","iso639_2":"hye","name":"Armenian","nativeName":"Հայերեն"}],"translations":{"de":"Zypern","es":"Chipre","fr":"Chypre","ja":"キプロス","it":"Cipro","br":"Chipre","pt":"Chipre","nl":"Cyprus","hr":"Cipar","fa":"قبرس"},"flag":"https://restcountries.eu/data/cyp.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"CYP"},{"name":"Czech Republic","topLevelDomain":[".cz"],"alpha2Code":"CZ","alpha3Code":"CZE","callingCodes":["420"],"capital":"Prague","altSpellings":["CZ","Česká republika","Česko"],"region":"Europe","subregion":"Eastern Europe","population":10558524,"latlng":[49.75,15.5],"demonym":"Czech","area":78865.0,"gini":26.0,"timezones":["UTC+01:00"],"borders":["AUT","DEU","POL","SVK"],"nativeName":"Česká republika","numericCode":"203","currencies":[{"code":"CZK","name":"Czech koruna","symbol":"Kč"}],"languages":[{"iso639_1":"cs","iso639_2":"ces","name":"Czech","nativeName":"čeština"},{"iso639_1":"sk","iso639_2":"slk","name":"Slovak","nativeName":"slovenčina"}],"translations":{"de":"Tschechische Republik","es":"República Checa","fr":"République tchèque","ja":"チェコ","it":"Repubblica Ceca","br":"República Tcheca","pt":"República Checa","nl":"Tsjechië","hr":"Češka","fa":"جمهوری چک"},"flag":"https://restcountries.eu/data/cze.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"CZE"},{"name":"Denmark","topLevelDomain":[".dk"],"alpha2Code":"DK","alpha3Code":"DNK","callingCodes":["45"],"capital":"Copenhagen","altSpellings":["DK","Danmark","Kingdom of Denmark","Kongeriget Danmark"],"region":"Europe","subregion":"Northern Europe","population":5717014,"latlng":[56.0,10.0],"demonym":"Danish","area":43094.0,"gini":24.0,"timezones":["UTC-04:00","UTC-03:00","UTC-01:00","UTC","UTC+01:00"],"borders":["DEU"],"nativeName":"Danmark","numericCode":"208","currencies":[{"code":"DKK","name":"Danish krone","symbol":"kr"}],"languages":[{"iso639_1":"da","iso639_2":"dan","name":"Danish","nativeName":"dansk"}],"translations":{"de":"Dänemark","es":"Dinamarca","fr":"Danemark","ja":"デンマーク","it":"Danimarca","br":"Dinamarca","pt":"Dinamarca","nl":"Denemarken","hr":"Danska","fa":"دانمارک"},"flag":"https://restcountries.eu/data/dnk.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"DEN"},{"name":"Djibouti","topLevelDomain":[".dj"],"alpha2Code":"DJ","alpha3Code":"DJI","callingCodes":["253"],"capital":"Djibouti","altSpellings":["DJ","Jabuuti","Gabuuti","Republic of Djibouti","République de Djibouti","Gabuutih Ummuuno","Jamhuuriyadda Jabuuti"],"region":"Africa","subregion":"Eastern Africa","population":900000,"latlng":[11.5,43.0],"demonym":"Djibouti","area":23200.0,"gini":40.0,"timezones":["UTC+03:00"],"borders":["ERI","ETH","SOM"],"nativeName":"Djibouti","numericCode":"262","currencies":[{"code":"DJF","name":"Djiboutian franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Dschibuti","es":"Yibuti","fr":"Djibouti","ja":"ジブチ","it":"Gibuti","br":"Djibuti","pt":"Djibuti","nl":"Djibouti","hr":"Džibuti","fa":"جیبوتی"},"flag":"https://restcountries.eu/data/dji.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"DJI"},{"name":"Dominica","topLevelDomain":[".dm"],"alpha2Code":"DM","alpha3Code":"DMA","callingCodes":["1767"],"capital":"Roseau","altSpellings":["DM","Dominique","Wai‘tu kubuli","Commonwealth of Dominica"],"region":"Americas","subregion":"Caribbean","population":71293,"latlng":[15.41666666,-61.33333333],"demonym":"Dominican","area":751.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Dominica","numericCode":"212","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Dominica","es":"Dominica","fr":"Dominique","ja":"ドミニカ国","it":"Dominica","br":"Dominica","pt":"Dominica","nl":"Dominica","hr":"Dominika","fa":"دومینیکا"},"flag":"https://restcountries.eu/data/dma.svg","regionalBlocs":[],"cioc":"DMA"},{"name":"Dominican Republic","topLevelDomain":[".do"],"alpha2Code":"DO","alpha3Code":"DOM","callingCodes":["1809","1829","1849"],"capital":"Santo Domingo","altSpellings":["DO"],"region":"Americas","subregion":"Caribbean","population":10075045,"latlng":[19.0,-70.66666666],"demonym":"Dominican","area":48671.0,"gini":47.2,"timezones":["UTC-04:00"],"borders":["HTI"],"nativeName":"República Dominicana","numericCode":"214","currencies":[{"code":"DOP","name":"Dominican peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Dominikanische Republik","es":"República Dominicana","fr":"République dominicaine","ja":"ドミニカ共和国","it":"Repubblica Dominicana","br":"República Dominicana","pt":"República Dominicana","nl":"Dominicaanse Republiek","hr":"Dominikanska Republika","fa":"جمهوری دومینیکن"},"flag":"https://restcountries.eu/data/dom.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]},{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"DOM"},{"name":"Ecuador","topLevelDomain":[".ec"],"alpha2Code":"EC","alpha3Code":"ECU","callingCodes":["593"],"capital":"Quito","altSpellings":["EC","Republic of Ecuador","República del Ecuador"],"region":"Americas","subregion":"South America","population":16545799,"latlng":[-2.0,-77.5],"demonym":"Ecuadorean","area":276841.0,"gini":49.3,"timezones":["UTC-06:00","UTC-05:00"],"borders":["COL","PER"],"nativeName":"Ecuador","numericCode":"218","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Ecuador","es":"Ecuador","fr":"Équateur","ja":"エクアドル","it":"Ecuador","br":"Equador","pt":"Equador","nl":"Ecuador","hr":"Ekvador","fa":"اکوادور"},"flag":"https://restcountries.eu/data/ecu.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"ECU"},{"name":"Egypt","topLevelDomain":[".eg"],"alpha2Code":"EG","alpha3Code":"EGY","callingCodes":["20"],"capital":"Cairo","altSpellings":["EG","Arab Republic of Egypt"],"region":"Africa","subregion":"Northern Africa","population":91290000,"latlng":[27.0,30.0],"demonym":"Egyptian","area":1002450.0,"gini":30.8,"timezones":["UTC+02:00"],"borders":["ISR","LBY","SDN"],"nativeName":"مصر‎","numericCode":"818","currencies":[{"code":"EGP","name":"Egyptian pound","symbol":"£"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Ägypten","es":"Egipto","fr":"Égypte","ja":"エジプト","it":"Egitto","br":"Egito","pt":"Egipto","nl":"Egypte","hr":"Egipat","fa":"مصر"},"flag":"https://restcountries.eu/data/egy.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"EGY"},{"name":"El Salvador","topLevelDomain":[".sv"],"alpha2Code":"SV","alpha3Code":"SLV","callingCodes":["503"],"capital":"San Salvador","altSpellings":["SV","Republic of El Salvador","República de El Salvador"],"region":"Americas","subregion":"Central America","population":6520675,"latlng":[13.83333333,-88.91666666],"demonym":"Salvadoran","area":21041.0,"gini":48.3,"timezones":["UTC-06:00"],"borders":["GTM","HND"],"nativeName":"El Salvador","numericCode":"222","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"El Salvador","es":"El Salvador","fr":"Salvador","ja":"エルサルバドル","it":"El Salvador","br":"El Salvador","pt":"El Salvador","nl":"El Salvador","hr":"Salvador","fa":"السالوادور"},"flag":"https://restcountries.eu/data/slv.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"ESA"},{"name":"Equatorial Guinea","topLevelDomain":[".gq"],"alpha2Code":"GQ","alpha3Code":"GNQ","callingCodes":["240"],"capital":"Malabo","altSpellings":["GQ","Republic of Equatorial Guinea","República de Guinea Ecuatorial","République de Guinée équatoriale","República da Guiné Equatorial"],"region":"Africa","subregion":"Middle Africa","population":1222442,"latlng":[2.0,10.0],"demonym":"Equatorial Guinean","area":28051.0,"gini":null,"timezones":["UTC+01:00"],"borders":["CMR","GAB"],"nativeName":"Guinea Ecuatorial","numericCode":"226","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Äquatorial-Guinea","es":"Guinea Ecuatorial","fr":"Guinée-Équatoriale","ja":"赤道ギニア","it":"Guinea Equatoriale","br":"Guiné Equatorial","pt":"Guiné Equatorial","nl":"Equatoriaal-Guinea","hr":"Ekvatorijalna Gvineja","fa":"گینه استوایی"},"flag":"https://restcountries.eu/data/gnq.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GEQ"},{"name":"Eritrea","topLevelDomain":[".er"],"alpha2Code":"ER","alpha3Code":"ERI","callingCodes":["291"],"capital":"Asmara","altSpellings":["ER","State of Eritrea","ሃገረ ኤርትራ","Dawlat Iritriyá","ʾErtrā","Iritriyā",""],"region":"Africa","subregion":"Eastern Africa","population":5352000,"latlng":[15.0,39.0],"demonym":"Eritrean","area":117600.0,"gini":null,"timezones":["UTC+03:00"],"borders":["DJI","ETH","SDN"],"nativeName":"ኤርትራ","numericCode":"232","currencies":[{"code":"ERN","name":"Eritrean nakfa","symbol":"Nfk"}],"languages":[{"iso639_1":"ti","iso639_2":"tir","name":"Tigrinya","nativeName":"ትግርኛ"},{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Eritrea","es":"Eritrea","fr":"Érythrée","ja":"エリトリア","it":"Eritrea","br":"Eritreia","pt":"Eritreia","nl":"Eritrea","hr":"Eritreja","fa":"اریتره"},"flag":"https://restcountries.eu/data/eri.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"ERI"},{"name":"Estonia","topLevelDomain":[".ee"],"alpha2Code":"EE","alpha3Code":"EST","callingCodes":["372"],"capital":"Tallinn","altSpellings":["EE","Eesti","Republic of Estonia","Eesti Vabariik"],"region":"Europe","subregion":"Northern Europe","population":1315944,"latlng":[59.0,26.0],"demonym":"Estonian","area":45227.0,"gini":36.0,"timezones":["UTC+02:00"],"borders":["LVA","RUS"],"nativeName":"Eesti","numericCode":"233","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"et","iso639_2":"est","name":"Estonian","nativeName":"eesti"}],"translations":{"de":"Estland","es":"Estonia","fr":"Estonie","ja":"エストニア","it":"Estonia","br":"Estônia","pt":"Estónia","nl":"Estland","hr":"Estonija","fa":"استونی"},"flag":"https://restcountries.eu/data/est.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"EST"},{"name":"Ethiopia","topLevelDomain":[".et"],"alpha2Code":"ET","alpha3Code":"ETH","callingCodes":["251"],"capital":"Addis Ababa","altSpellings":["ET","ʾĪtyōṗṗyā","Federal Democratic Republic of Ethiopia","የኢትዮጵያ ፌዴራላዊ ዲሞክራሲያዊ ሪፐብሊክ"],"region":"Africa","subregion":"Eastern Africa","population":92206005,"latlng":[8.0,38.0],"demonym":"Ethiopian","area":1104300.0,"gini":29.8,"timezones":["UTC+03:00"],"borders":["DJI","ERI","KEN","SOM","SSD","SDN"],"nativeName":"ኢትዮጵያ","numericCode":"231","currencies":[{"code":"ETB","name":"Ethiopian birr","symbol":"Br"}],"languages":[{"iso639_1":"am","iso639_2":"amh","name":"Amharic","nativeName":"አማርኛ"}],"translations":{"de":"Äthiopien","es":"Etiopía","fr":"Éthiopie","ja":"エチオピア","it":"Etiopia","br":"Etiópia","pt":"Etiópia","nl":"Ethiopië","hr":"Etiopija","fa":"اتیوپی"},"flag":"https://restcountries.eu/data/eth.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"ETH"},{"name":"Falkland Islands (Malvinas)","topLevelDomain":[".fk"],"alpha2Code":"FK","alpha3Code":"FLK","callingCodes":["500"],"capital":"Stanley","altSpellings":["FK","Islas Malvinas"],"region":"Americas","subregion":"South America","population":2563,"latlng":[-51.75,-59.0],"demonym":"Falkland Islander","area":12173.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Falkland Islands","numericCode":"238","currencies":[{"code":"FKP","name":"Falkland Islands pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Falklandinseln","es":"Islas Malvinas","fr":"Îles Malouines","ja":"フォークランド(マルビナス)諸島","it":"Isole Falkland o Isole Malvine","br":"Ilhas Malvinas","pt":"Ilhas Falkland","nl":"Falklandeilanden [Islas Malvinas]","hr":"Falklandski Otoci","fa":"جزایر فالکلند"},"flag":"https://restcountries.eu/data/flk.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":""},{"name":"Faroe Islands","topLevelDomain":[".fo"],"alpha2Code":"FO","alpha3Code":"FRO","callingCodes":["298"],"capital":"Tórshavn","altSpellings":["FO","Føroyar","Færøerne"],"region":"Europe","subregion":"Northern Europe","population":49376,"latlng":[62.0,-7.0],"demonym":"Faroese","area":1393.0,"gini":null,"timezones":["UTC+00:00"],"borders":[],"nativeName":"Føroyar","numericCode":"234","currencies":[{"code":"DKK","name":"Danish krone","symbol":"kr"},{"code":"(none)","name":"Faroese króna","symbol":"kr"}],"languages":[{"iso639_1":"fo","iso639_2":"fao","name":"Faroese","nativeName":"føroyskt"}],"translations":{"de":"Färöer-Inseln","es":"Islas Faroe","fr":"Îles Féroé","ja":"フェロー諸島","it":"Isole Far Oer","br":"Ilhas Faroé","pt":"Ilhas Faroé","nl":"Faeröer","hr":"Farski Otoci","fa":"جزایر فارو"},"flag":"https://restcountries.eu/data/fro.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":""},{"name":"Fiji","topLevelDomain":[".fj"],"alpha2Code":"FJ","alpha3Code":"FJI","callingCodes":["679"],"capital":"Suva","altSpellings":["FJ","Viti","Republic of Fiji","Matanitu ko Viti","Fijī Gaṇarājya"],"region":"Oceania","subregion":"Melanesia","population":867000,"latlng":[-18.0,175.0],"demonym":"Fijian","area":18272.0,"gini":42.8,"timezones":["UTC+12:00"],"borders":[],"nativeName":"Fiji","numericCode":"242","currencies":[{"code":"FJD","name":"Fijian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fj","iso639_2":"fij","name":"Fijian","nativeName":"vosa Vakaviti"},{"iso639_1":"hi","iso639_2":"hin","name":"Hindi","nativeName":"हिन्दी"},{"iso639_1":"ur","iso639_2":"urd","name":"Urdu","nativeName":"اردو"}],"translations":{"de":"Fidschi","es":"Fiyi","fr":"Fidji","ja":"フィジー","it":"Figi","br":"Fiji","pt":"Fiji","nl":"Fiji","hr":"Fiđi","fa":"فیجی"},"flag":"https://restcountries.eu/data/fji.svg","regionalBlocs":[],"cioc":"FIJ"},{"name":"Finland","topLevelDomain":[".fi"],"alpha2Code":"FI","alpha3Code":"FIN","callingCodes":["358"],"capital":"Helsinki","altSpellings":["FI","Suomi","Republic of Finland","Suomen tasavalta","Republiken Finland"],"region":"Europe","subregion":"Northern Europe","population":5491817,"latlng":[64.0,26.0],"demonym":"Finnish","area":338424.0,"gini":26.9,"timezones":["UTC+02:00"],"borders":["NOR","SWE","RUS"],"nativeName":"Suomi","numericCode":"246","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fi","iso639_2":"fin","name":"Finnish","nativeName":"suomi"},{"iso639_1":"sv","iso639_2":"swe","name":"Swedish","nativeName":"svenska"}],"translations":{"de":"Finnland","es":"Finlandia","fr":"Finlande","ja":"フィンランド","it":"Finlandia","br":"Finlândia","pt":"Finlândia","nl":"Finland","hr":"Finska","fa":"فنلاند"},"flag":"https://restcountries.eu/data/fin.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"FIN"},{"name":"France","topLevelDomain":[".fr"],"alpha2Code":"FR","alpha3Code":"FRA","callingCodes":["33"],"capital":"Paris","altSpellings":["FR","French Republic","République française"],"region":"Europe","subregion":"Western Europe","population":66710000,"latlng":[46.0,2.0],"demonym":"French","area":640679.0,"gini":32.7,"timezones":["UTC-10:00","UTC-09:30","UTC-09:00","UTC-08:00","UTC-04:00","UTC-03:00","UTC+01:00","UTC+03:00","UTC+04:00","UTC+05:00","UTC+11:00","UTC+12:00"],"borders":["AND","BEL","DEU","ITA","LUX","MCO","ESP","CHE"],"nativeName":"France","numericCode":"250","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Frankreich","es":"Francia","fr":"France","ja":"フランス","it":"Francia","br":"França","pt":"França","nl":"Frankrijk","hr":"Francuska","fa":"فرانسه"},"flag":"https://restcountries.eu/data/fra.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"FRA"},{"name":"French Guiana","topLevelDomain":[".gf"],"alpha2Code":"GF","alpha3Code":"GUF","callingCodes":["594"],"capital":"Cayenne","altSpellings":["GF","Guiana","Guyane"],"region":"Americas","subregion":"South America","population":254541,"latlng":[4.0,-53.0],"demonym":"","area":null,"gini":null,"timezones":["UTC-03:00"],"borders":["BRA","SUR"],"nativeName":"Guyane française","numericCode":"254","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Französisch Guyana","es":"Guayana Francesa","fr":"Guayane","ja":"フランス領ギアナ","it":"Guyana francese","br":"Guiana Francesa","pt":"Guiana Francesa","nl":"Frans-Guyana","hr":"Francuska Gvajana","fa":"گویان فرانسه"},"flag":"https://restcountries.eu/data/guf.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]},{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":""},{"name":"French Polynesia","topLevelDomain":[".pf"],"alpha2Code":"PF","alpha3Code":"PYF","callingCodes":["689"],"capital":"Papeetē","altSpellings":["PF","Polynésie française","French Polynesia","Pōrīnetia Farāni"],"region":"Oceania","subregion":"Polynesia","population":271800,"latlng":[-15.0,-140.0],"demonym":"French Polynesian","area":4167.0,"gini":null,"timezones":["UTC-10:00","UTC-09:30","UTC-09:00"],"borders":[],"nativeName":"Polynésie française","numericCode":"258","currencies":[{"code":"XPF","name":"CFP franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Französisch-Polynesien","es":"Polinesia Francesa","fr":"Polynésie française","ja":"フランス領ポリネシア","it":"Polinesia Francese","br":"Polinésia Francesa","pt":"Polinésia Francesa","nl":"Frans-Polynesië","hr":"Francuska Polinezija","fa":"پلی‌نزی فرانسه"},"flag":"https://restcountries.eu/data/pyf.svg","regionalBlocs":[],"cioc":""},{"name":"French Southern Territories","topLevelDomain":[".tf"],"alpha2Code":"TF","alpha3Code":"ATF","callingCodes":[""],"capital":"Port-aux-Français","altSpellings":["TF"],"region":"Africa","subregion":"Southern Africa","population":140,"latlng":[-49.25,69.167],"demonym":"French","area":7747.0,"gini":null,"timezones":["UTC+05:00"],"borders":[],"nativeName":"Territoire des Terres australes et antarctiques françaises","numericCode":"260","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Französische Süd- und Antarktisgebiete","es":"Tierras Australes y Antárticas Francesas","fr":"Terres australes et antarctiques françaises","ja":"フランス領南方・南極地域","it":"Territori Francesi del Sud","br":"Terras Austrais e Antárticas Francesas","pt":"Terras Austrais e Antárticas Francesas","nl":"Franse Gebieden in de zuidelijke Indische Oceaan","hr":"Francuski južni i antarktički teritoriji","fa":"سرزمین‌های جنوبی و جنوبگانی فرانسه"},"flag":"https://restcountries.eu/data/atf.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"Gabon","topLevelDomain":[".ga"],"alpha2Code":"GA","alpha3Code":"GAB","callingCodes":["241"],"capital":"Libreville","altSpellings":["GA","Gabonese Republic","République Gabonaise"],"region":"Africa","subregion":"Middle Africa","population":1802278,"latlng":[-1.0,11.75],"demonym":"Gabonese","area":267668.0,"gini":41.5,"timezones":["UTC+01:00"],"borders":["CMR","COG","GNQ"],"nativeName":"Gabon","numericCode":"266","currencies":[{"code":"XAF","name":"Central African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Gabun","es":"Gabón","fr":"Gabon","ja":"ガボン","it":"Gabon","br":"Gabão","pt":"Gabão","nl":"Gabon","hr":"Gabon","fa":"گابن"},"flag":"https://restcountries.eu/data/gab.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GAB"},{"name":"Gambia","topLevelDomain":[".gm"],"alpha2Code":"GM","alpha3Code":"GMB","callingCodes":["220"],"capital":"Banjul","altSpellings":["GM","Republic of the Gambia"],"region":"Africa","subregion":"Western Africa","population":1882450,"latlng":[13.46666666,-16.56666666],"demonym":"Gambian","area":11295.0,"gini":null,"timezones":["UTC+00:00"],"borders":["SEN"],"nativeName":"Gambia","numericCode":"270","currencies":[{"code":"GMD","name":"Gambian dalasi","symbol":"D"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Gambia","es":"Gambia","fr":"Gambie","ja":"ガンビア","it":"Gambia","br":"Gâmbia","pt":"Gâmbia","nl":"Gambia","hr":"Gambija","fa":"گامبیا"},"flag":"https://restcountries.eu/data/gmb.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GAM"},{"name":"Georgia","topLevelDomain":[".ge"],"alpha2Code":"GE","alpha3Code":"GEO","callingCodes":["995"],"capital":"Tbilisi","altSpellings":["GE","Sakartvelo"],"region":"Asia","subregion":"Western Asia","population":3720400,"latlng":[42.0,43.5],"demonym":"Georgian","area":69700.0,"gini":41.3,"timezones":["UTC-05:00"],"borders":["ARM","AZE","RUS","TUR"],"nativeName":"საქართველო","numericCode":"268","currencies":[{"code":"GEL","name":"Georgian Lari","symbol":"ლ"}],"languages":[{"iso639_1":"ka","iso639_2":"kat","name":"Georgian","nativeName":"ქართული"}],"translations":{"de":"Georgien","es":"Georgia","fr":"Géorgie","ja":"グルジア","it":"Georgia","br":"Geórgia","pt":"Geórgia","nl":"Georgië","hr":"Gruzija","fa":"گرجستان"},"flag":"https://restcountries.eu/data/geo.svg","regionalBlocs":[],"cioc":"GEO"},{"name":"Germany","topLevelDomain":[".de"],"alpha2Code":"DE","alpha3Code":"DEU","callingCodes":["49"],"capital":"Berlin","altSpellings":["DE","Federal Republic of Germany","Bundesrepublik Deutschland"],"region":"Europe","subregion":"Western Europe","population":81770900,"latlng":[51.0,9.0],"demonym":"German","area":357114.0,"gini":28.3,"timezones":["UTC+01:00"],"borders":["AUT","BEL","CZE","DNK","FRA","LUX","NLD","POL","CHE"],"nativeName":"Deutschland","numericCode":"276","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"}],"translations":{"de":"Deutschland","es":"Alemania","fr":"Allemagne","ja":"ドイツ","it":"Germania","br":"Alemanha","pt":"Alemanha","nl":"Duitsland","hr":"Njemačka","fa":"آلمان"},"flag":"https://restcountries.eu/data/deu.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"GER"},{"name":"Ghana","topLevelDomain":[".gh"],"alpha2Code":"GH","alpha3Code":"GHA","callingCodes":["233"],"capital":"Accra","altSpellings":["GH"],"region":"Africa","subregion":"Western Africa","population":27670174,"latlng":[8.0,-2.0],"demonym":"Ghanaian","area":238533.0,"gini":42.8,"timezones":["UTC"],"borders":["BFA","CIV","TGO"],"nativeName":"Ghana","numericCode":"288","currencies":[{"code":"GHS","name":"Ghanaian cedi","symbol":"₵"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Ghana","es":"Ghana","fr":"Ghana","ja":"ガーナ","it":"Ghana","br":"Gana","pt":"Gana","nl":"Ghana","hr":"Gana","fa":"غنا"},"flag":"https://restcountries.eu/data/gha.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GHA"},{"name":"Gibraltar","topLevelDomain":[".gi"],"alpha2Code":"GI","alpha3Code":"GIB","callingCodes":["350"],"capital":"Gibraltar","altSpellings":["GI"],"region":"Europe","subregion":"Southern Europe","population":33140,"latlng":[36.13333333,-5.35],"demonym":"Gibraltar","area":6.0,"gini":null,"timezones":["UTC+01:00"],"borders":["ESP"],"nativeName":"Gibraltar","numericCode":"292","currencies":[{"code":"GIP","name":"Gibraltar pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Gibraltar","es":"Gibraltar","fr":"Gibraltar","ja":"ジブラルタル","it":"Gibilterra","br":"Gibraltar","pt":"Gibraltar","nl":"Gibraltar","hr":"Gibraltar","fa":"جبل‌طارق"},"flag":"https://restcountries.eu/data/gib.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":""},{"name":"Greece","topLevelDomain":[".gr"],"alpha2Code":"GR","alpha3Code":"GRC","callingCodes":["30"],"capital":"Athens","altSpellings":["GR","Elláda","Hellenic Republic","Ελληνική Δημοκρατία"],"region":"Europe","subregion":"Southern Europe","population":10858018,"latlng":[39.0,22.0],"demonym":"Greek","area":131990.0,"gini":34.3,"timezones":["UTC+02:00"],"borders":["ALB","BGR","TUR","MKD"],"nativeName":"Ελλάδα","numericCode":"300","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"el","iso639_2":"ell","name":"Greek (modern)","nativeName":"ελληνικά"}],"translations":{"de":"Griechenland","es":"Grecia","fr":"Grèce","ja":"ギリシャ","it":"Grecia","br":"Grécia","pt":"Grécia","nl":"Griekenland","hr":"Grčka","fa":"یونان"},"flag":"https://restcountries.eu/data/grc.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"GRE"},{"name":"Greenland","topLevelDomain":[".gl"],"alpha2Code":"GL","alpha3Code":"GRL","callingCodes":["299"],"capital":"Nuuk","altSpellings":["GL","Grønland"],"region":"Americas","subregion":"Northern America","population":55847,"latlng":[72.0,-40.0],"demonym":"Greenlandic","area":2166086.0,"gini":null,"timezones":["UTC-04:00","UTC-03:00","UTC-01:00","UTC+00:00"],"borders":[],"nativeName":"Kalaallit Nunaat","numericCode":"304","currencies":[{"code":"DKK","name":"Danish krone","symbol":"kr"}],"languages":[{"iso639_1":"kl","iso639_2":"kal","name":"Kalaallisut","nativeName":"kalaallisut"}],"translations":{"de":"Grönland","es":"Groenlandia","fr":"Groenland","ja":"グリーンランド","it":"Groenlandia","br":"Groelândia","pt":"Gronelândia","nl":"Groenland","hr":"Grenland","fa":"گرینلند"},"flag":"https://restcountries.eu/data/grl.svg","regionalBlocs":[],"cioc":""},{"name":"Grenada","topLevelDomain":[".gd"],"alpha2Code":"GD","alpha3Code":"GRD","callingCodes":["1473"],"capital":"St. George's","altSpellings":["GD"],"region":"Americas","subregion":"Caribbean","population":103328,"latlng":[12.11666666,-61.66666666],"demonym":"Grenadian","area":344.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Grenada","numericCode":"308","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Grenada","es":"Grenada","fr":"Grenade","ja":"グレナダ","it":"Grenada","br":"Granada","pt":"Granada","nl":"Grenada","hr":"Grenada","fa":"گرنادا"},"flag":"https://restcountries.eu/data/grd.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"GRN"},{"name":"Guadeloupe","topLevelDomain":[".gp"],"alpha2Code":"GP","alpha3Code":"GLP","callingCodes":["590"],"capital":"Basse-Terre","altSpellings":["GP","Gwadloup"],"region":"Americas","subregion":"Caribbean","population":400132,"latlng":[16.25,-61.583333],"demonym":"Guadeloupian","area":null,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Guadeloupe","numericCode":"312","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Guadeloupe","es":"Guadalupe","fr":"Guadeloupe","ja":"グアドループ","it":"Guadeloupa","br":"Guadalupe","pt":"Guadalupe","nl":"Guadeloupe","hr":"Gvadalupa","fa":"جزیره گوادلوپ"},"flag":"https://restcountries.eu/data/glp.svg","regionalBlocs":[],"cioc":""},{"name":"Guam","topLevelDomain":[".gu"],"alpha2Code":"GU","alpha3Code":"GUM","callingCodes":["1671"],"capital":"Hagåtña","altSpellings":["GU","Guåhån"],"region":"Oceania","subregion":"Micronesia","population":184200,"latlng":[13.46666666,144.78333333],"demonym":"Guamanian","area":549.0,"gini":null,"timezones":["UTC+10:00"],"borders":[],"nativeName":"Guam","numericCode":"316","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ch","iso639_2":"cha","name":"Chamorro","nativeName":"Chamoru"},{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Guam","es":"Guam","fr":"Guam","ja":"グアム","it":"Guam","br":"Guam","pt":"Guame","nl":"Guam","hr":"Guam","fa":"گوام"},"flag":"https://restcountries.eu/data/gum.svg","regionalBlocs":[],"cioc":"GUM"},{"name":"Guatemala","topLevelDomain":[".gt"],"alpha2Code":"GT","alpha3Code":"GTM","callingCodes":["502"],"capital":"Guatemala City","altSpellings":["GT"],"region":"Americas","subregion":"Central America","population":16176133,"latlng":[15.5,-90.25],"demonym":"Guatemalan","area":108889.0,"gini":55.9,"timezones":["UTC-06:00"],"borders":["BLZ","SLV","HND","MEX"],"nativeName":"Guatemala","numericCode":"320","currencies":[{"code":"GTQ","name":"Guatemalan quetzal","symbol":"Q"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Guatemala","es":"Guatemala","fr":"Guatemala","ja":"グアテマラ","it":"Guatemala","br":"Guatemala","pt":"Guatemala","nl":"Guatemala","hr":"Gvatemala","fa":"گواتمالا"},"flag":"https://restcountries.eu/data/gtm.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"GUA"},{"name":"Guernsey","topLevelDomain":[".gg"],"alpha2Code":"GG","alpha3Code":"GGY","callingCodes":["44"],"capital":"St. Peter Port","altSpellings":["GG","Bailiwick of Guernsey","Bailliage de Guernesey"],"region":"Europe","subregion":"Northern Europe","population":62999,"latlng":[49.46666666,-2.58333333],"demonym":"Channel Islander","area":78.0,"gini":null,"timezones":["UTC+00:00"],"borders":[],"nativeName":"Guernsey","numericCode":"831","currencies":[{"code":"GBP","name":"British pound","symbol":"£"},{"code":"(none)","name":"Guernsey pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Guernsey","es":"Guernsey","fr":"Guernesey","ja":"ガーンジー","it":"Guernsey","br":"Guernsey","pt":"Guernsey","nl":"Guernsey","hr":"Guernsey","fa":"گرنزی"},"flag":"https://restcountries.eu/data/ggy.svg","regionalBlocs":[],"cioc":""},{"name":"Guinea","topLevelDomain":[".gn"],"alpha2Code":"GN","alpha3Code":"GIN","callingCodes":["224"],"capital":"Conakry","altSpellings":["GN","Republic of Guinea","République de Guinée"],"region":"Africa","subregion":"Western Africa","population":12947000,"latlng":[11.0,-10.0],"demonym":"Guinean","area":245857.0,"gini":39.4,"timezones":["UTC"],"borders":["CIV","GNB","LBR","MLI","SEN","SLE"],"nativeName":"Guinée","numericCode":"324","currencies":[{"code":"GNF","name":"Guinean franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ff","iso639_2":"ful","name":"Fula","nativeName":"Fulfulde"}],"translations":{"de":"Guinea","es":"Guinea","fr":"Guinée","ja":"ギニア","it":"Guinea","br":"Guiné","pt":"Guiné","nl":"Guinee","hr":"Gvineja","fa":"گینه"},"flag":"https://restcountries.eu/data/gin.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GUI"},{"name":"Guinea-Bissau","topLevelDomain":[".gw"],"alpha2Code":"GW","alpha3Code":"GNB","callingCodes":["245"],"capital":"Bissau","altSpellings":["GW","Republic of Guinea-Bissau","República da Guiné-Bissau"],"region":"Africa","subregion":"Western Africa","population":1547777,"latlng":[12.0,-15.0],"demonym":"Guinea-Bissauan","area":36125.0,"gini":35.5,"timezones":["UTC"],"borders":["GIN","SEN"],"nativeName":"Guiné-Bissau","numericCode":"624","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Guinea-Bissau","es":"Guinea-Bisáu","fr":"Guinée-Bissau","ja":"ギニアビサウ","it":"Guinea-Bissau","br":"Guiné-Bissau","pt":"Guiné-Bissau","nl":"Guinee-Bissau","hr":"Gvineja Bisau","fa":"گینه بیسائو"},"flag":"https://restcountries.eu/data/gnb.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"GBS"},{"name":"Guyana","topLevelDomain":[".gy"],"alpha2Code":"GY","alpha3Code":"GUY","callingCodes":["592"],"capital":"Georgetown","altSpellings":["GY","Co-operative Republic of Guyana"],"region":"Americas","subregion":"South America","population":746900,"latlng":[5.0,-59.0],"demonym":"Guyanese","area":214969.0,"gini":44.5,"timezones":["UTC-04:00"],"borders":["BRA","SUR","VEN"],"nativeName":"Guyana","numericCode":"328","currencies":[{"code":"GYD","name":"Guyanese dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Guyana","es":"Guyana","fr":"Guyane","ja":"ガイアナ","it":"Guyana","br":"Guiana","pt":"Guiana","nl":"Guyana","hr":"Gvajana","fa":"گویان"},"flag":"https://restcountries.eu/data/guy.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]},{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"GUY"},{"name":"Haiti","topLevelDomain":[".ht"],"alpha2Code":"HT","alpha3Code":"HTI","callingCodes":["509"],"capital":"Port-au-Prince","altSpellings":["HT","Republic of Haiti","République d'Haïti","Repiblik Ayiti"],"region":"Americas","subregion":"Caribbean","population":11078033,"latlng":[19.0,-72.41666666],"demonym":"Haitian","area":27750.0,"gini":59.2,"timezones":["UTC-05:00"],"borders":["DOM"],"nativeName":"Haïti","numericCode":"332","currencies":[{"code":"HTG","name":"Haitian gourde","symbol":"G"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"ht","iso639_2":"hat","name":"Haitian","nativeName":"Kreyòl ayisyen"}],"translations":{"de":"Haiti","es":"Haiti","fr":"Haïti","ja":"ハイチ","it":"Haiti","br":"Haiti","pt":"Haiti","nl":"Haïti","hr":"Haiti","fa":"هائیتی"},"flag":"https://restcountries.eu/data/hti.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"HAI"},{"name":"Heard Island and McDonald Islands","topLevelDomain":[".hm",".aq"],"alpha2Code":"HM","alpha3Code":"HMD","callingCodes":[""],"capital":"","altSpellings":["HM"],"region":"","subregion":"","population":0,"latlng":[-53.1,72.51666666],"demonym":"Heard and McDonald Islander","area":412.0,"gini":null,"timezones":["UTC+05:00"],"borders":[],"nativeName":"Heard Island and McDonald Islands","numericCode":"334","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Heard und die McDonaldinseln","es":"Islas Heard y McDonald","fr":"Îles Heard-et-MacDonald","ja":"ハード島とマクドナルド諸島","it":"Isole Heard e McDonald","br":"Ilha Heard e Ilhas McDonald","pt":"Ilha Heard e Ilhas McDonald","nl":"Heard- en McDonaldeilanden","hr":"Otok Heard i otočje McDonald","fa":"جزیره هرد و جزایر مک‌دونالد"},"flag":"https://restcountries.eu/data/hmd.svg","regionalBlocs":[],"cioc":""},{"name":"Holy See","topLevelDomain":[".va"],"alpha2Code":"VA","alpha3Code":"VAT","callingCodes":["379"],"capital":"Rome","altSpellings":["Sancta Sedes","Vatican","The Vatican"],"region":"Europe","subregion":"Southern Europe","population":451,"latlng":[41.9,12.45],"demonym":"","area":0.44,"gini":null,"timezones":["UTC+01:00"],"borders":["ITA"],"nativeName":"Sancta Sedes","numericCode":"336","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"la","iso639_2":"lat","name":"Latin","nativeName":"latine"},{"iso639_1":"it","iso639_2":"ita","name":"Italian","nativeName":"Italiano"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"}],"translations":{"de":"Heiliger Stuhl","es":"Santa Sede","fr":"voir Saint","ja":"聖座","it":"Santa Sede","br":"Vaticano","pt":"Vaticano","nl":"Heilige Stoel","hr":"Sveta Stolica","fa":"سریر مقدس"},"flag":"https://restcountries.eu/data/vat.svg","regionalBlocs":[],"cioc":""},{"name":"Honduras","topLevelDomain":[".hn"],"alpha2Code":"HN","alpha3Code":"HND","callingCodes":["504"],"capital":"Tegucigalpa","altSpellings":["HN","Republic of Honduras","República de Honduras"],"region":"Americas","subregion":"Central America","population":8576532,"latlng":[15.0,-86.5],"demonym":"Honduran","area":112492.0,"gini":57.0,"timezones":["UTC-06:00"],"borders":["GTM","SLV","NIC"],"nativeName":"Honduras","numericCode":"340","currencies":[{"code":"HNL","name":"Honduran lempira","symbol":"L"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Honduras","es":"Honduras","fr":"Honduras","ja":"ホンジュラス","it":"Honduras","br":"Honduras","pt":"Honduras","nl":"Honduras","hr":"Honduras","fa":"هندوراس"},"flag":"https://restcountries.eu/data/hnd.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"HON"},{"name":"Hong Kong","topLevelDomain":[".hk"],"alpha2Code":"HK","alpha3Code":"HKG","callingCodes":["852"],"capital":"City of Victoria","altSpellings":["HK","香港"],"region":"Asia","subregion":"Eastern Asia","population":7324300,"latlng":[22.25,114.16666666],"demonym":"Chinese","area":1104.0,"gini":53.3,"timezones":["UTC+08:00"],"borders":["CHN"],"nativeName":"香港","numericCode":"344","currencies":[{"code":"HKD","name":"Hong Kong dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"zh","iso639_2":"zho","name":"Chinese","nativeName":"中文 (Zhōngwén)"}],"translations":{"de":"Hong Kong","es":"Hong Kong","fr":"Hong Kong","ja":"香港","it":"Hong Kong","br":"Hong Kong","pt":"Hong Kong","nl":"Hongkong","hr":"Hong Kong","fa":"هنگ‌کنگ"},"flag":"https://restcountries.eu/data/hkg.svg","regionalBlocs":[],"cioc":"HKG"},{"name":"Hungary","topLevelDomain":[".hu"],"alpha2Code":"HU","alpha3Code":"HUN","callingCodes":["36"],"capital":"Budapest","altSpellings":["HU"],"region":"Europe","subregion":"Eastern Europe","population":9823000,"latlng":[47.0,20.0],"demonym":"Hungarian","area":93028.0,"gini":31.2,"timezones":["UTC+01:00"],"borders":["AUT","HRV","ROU","SRB","SVK","SVN","UKR"],"nativeName":"Magyarország","numericCode":"348","currencies":[{"code":"HUF","name":"Hungarian forint","symbol":"Ft"}],"languages":[{"iso639_1":"hu","iso639_2":"hun","name":"Hungarian","nativeName":"magyar"}],"translations":{"de":"Ungarn","es":"Hungría","fr":"Hongrie","ja":"ハンガリー","it":"Ungheria","br":"Hungria","pt":"Hungria","nl":"Hongarije","hr":"Mađarska","fa":"مجارستان"},"flag":"https://restcountries.eu/data/hun.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"HUN"},{"name":"Iceland","topLevelDomain":[".is"],"alpha2Code":"IS","alpha3Code":"ISL","callingCodes":["354"],"capital":"Reykjavík","altSpellings":["IS","Island","Republic of Iceland","Lýðveldið Ísland"],"region":"Europe","subregion":"Northern Europe","population":334300,"latlng":[65.0,-18.0],"demonym":"Icelander","area":103000.0,"gini":null,"timezones":["UTC"],"borders":[],"nativeName":"Ísland","numericCode":"352","currencies":[{"code":"ISK","name":"Icelandic króna","symbol":"kr"}],"languages":[{"iso639_1":"is","iso639_2":"isl","name":"Icelandic","nativeName":"Íslenska"}],"translations":{"de":"Island","es":"Islandia","fr":"Islande","ja":"アイスランド","it":"Islanda","br":"Islândia","pt":"Islândia","nl":"IJsland","hr":"Island","fa":"ایسلند"},"flag":"https://restcountries.eu/data/isl.svg","regionalBlocs":[{"acronym":"EFTA","name":"European Free Trade Association","otherAcronyms":[],"otherNames":[]}],"cioc":"ISL"},{"name":"India","topLevelDomain":[".in"],"alpha2Code":"IN","alpha3Code":"IND","callingCodes":["91"],"capital":"New Delhi","altSpellings":["IN","Bhārat","Republic of India","Bharat Ganrajya"],"region":"Asia","subregion":"Southern Asia","population":1295210000,"latlng":[20.0,77.0],"demonym":"Indian","area":3287590.0,"gini":33.4,"timezones":["UTC+05:30"],"borders":["AFG","BGD","BTN","MMR","CHN","NPL","PAK","LKA"],"nativeName":"भारत","numericCode":"356","currencies":[{"code":"INR","name":"Indian rupee","symbol":"₹"}],"languages":[{"iso639_1":"hi","iso639_2":"hin","name":"Hindi","nativeName":"हिन्दी"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Indien","es":"India","fr":"Inde","ja":"インド","it":"India","br":"Índia","pt":"Índia","nl":"India","hr":"Indija","fa":"هند"},"flag":"https://restcountries.eu/data/ind.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"IND"},{"name":"Indonesia","topLevelDomain":[".id"],"alpha2Code":"ID","alpha3Code":"IDN","callingCodes":["62"],"capital":"Jakarta","altSpellings":["ID","Republic of Indonesia","Republik Indonesia"],"region":"Asia","subregion":"South-Eastern Asia","population":258705000,"latlng":[-5.0,120.0],"demonym":"Indonesian","area":1904569.0,"gini":34.0,"timezones":["UTC+07:00","UTC+08:00","UTC+09:00"],"borders":["TLS","MYS","PNG"],"nativeName":"Indonesia","numericCode":"360","currencies":[{"code":"IDR","name":"Indonesian rupiah","symbol":"Rp"}],"languages":[{"iso639_1":"id","iso639_2":"ind","name":"Indonesian","nativeName":"Bahasa Indonesia"}],"translations":{"de":"Indonesien","es":"Indonesia","fr":"Indonésie","ja":"インドネシア","it":"Indonesia","br":"Indonésia","pt":"Indonésia","nl":"Indonesië","hr":"Indonezija","fa":"اندونزی"},"flag":"https://restcountries.eu/data/idn.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"INA"},{"name":"Côte d'Ivoire","topLevelDomain":[".ci"],"alpha2Code":"CI","alpha3Code":"CIV","callingCodes":["225"],"capital":"Yamoussoukro","altSpellings":["CI","Ivory Coast","Republic of Côte d'Ivoire","République de Côte d'Ivoire"],"region":"Africa","subregion":"Western Africa","population":22671331,"latlng":[8.0,-5.0],"demonym":"Ivorian","area":322463.0,"gini":41.5,"timezones":["UTC"],"borders":["BFA","GHA","GIN","LBR","MLI"],"nativeName":"Côte d'Ivoire","numericCode":"384","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Elfenbeinküste","es":"Costa de Marfil","fr":"Côte d'Ivoire","ja":"コートジボワール","it":"Costa D'Avorio","br":"Costa do Marfim","pt":"Costa do Marfim","nl":"Ivoorkust","hr":"Obala Bjelokosti","fa":"ساحل عاج"},"flag":"https://restcountries.eu/data/civ.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"CIV"},{"name":"Iran (Islamic Republic of)","topLevelDomain":[".ir"],"alpha2Code":"IR","alpha3Code":"IRN","callingCodes":["98"],"capital":"Tehran","altSpellings":["IR","Islamic Republic of Iran","Jomhuri-ye Eslāmi-ye Irān"],"region":"Asia","subregion":"Southern Asia","population":79369900,"latlng":[32.0,53.0],"demonym":"Iranian","area":1648195.0,"gini":38.3,"timezones":["UTC+03:30"],"borders":["AFG","ARM","AZE","IRQ","PAK","TUR","TKM"],"nativeName":"ایران","numericCode":"364","currencies":[{"code":"IRR","name":"Iranian rial","symbol":"﷼"}],"languages":[{"iso639_1":"fa","iso639_2":"fas","name":"Persian (Farsi)","nativeName":"فارسی"}],"translations":{"de":"Iran","es":"Iran","fr":"Iran","ja":"イラン・イスラム共和国","it":null,"br":"Irã","pt":"Irão","nl":"Iran","hr":"Iran","fa":"ایران"},"flag":"https://restcountries.eu/data/irn.svg","regionalBlocs":[],"cioc":"IRI"},{"name":"Iraq","topLevelDomain":[".iq"],"alpha2Code":"IQ","alpha3Code":"IRQ","callingCodes":["964"],"capital":"Baghdad","altSpellings":["IQ","Republic of Iraq","Jumhūriyyat al-‘Irāq"],"region":"Asia","subregion":"Western Asia","population":37883543,"latlng":[33.0,44.0],"demonym":"Iraqi","area":438317.0,"gini":30.9,"timezones":["UTC+03:00"],"borders":["IRN","JOR","KWT","SAU","SYR","TUR"],"nativeName":"العراق","numericCode":"368","currencies":[{"code":"IQD","name":"Iraqi dinar","symbol":"ع.د"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"},{"iso639_1":"ku","iso639_2":"kur","name":"Kurdish","nativeName":"Kurdî"}],"translations":{"de":"Irak","es":"Irak","fr":"Irak","ja":"イラク","it":"Iraq","br":"Iraque","pt":"Iraque","nl":"Irak","hr":"Irak","fa":"عراق"},"flag":"https://restcountries.eu/data/irq.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"IRQ"},{"name":"Ireland","topLevelDomain":[".ie"],"alpha2Code":"IE","alpha3Code":"IRL","callingCodes":["353"],"capital":"Dublin","altSpellings":["IE","Éire","Republic of Ireland","Poblacht na hÉireann"],"region":"Europe","subregion":"Northern Europe","population":6378000,"latlng":[53.0,-8.0],"demonym":"Irish","area":70273.0,"gini":34.3,"timezones":["UTC"],"borders":["GBR"],"nativeName":"Éire","numericCode":"372","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"ga","iso639_2":"gle","name":"Irish","nativeName":"Gaeilge"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Irland","es":"Irlanda","fr":"Irlande","ja":"アイルランド","it":"Irlanda","br":"Irlanda","pt":"Irlanda","nl":"Ierland","hr":"Irska","fa":"ایرلند"},"flag":"https://restcountries.eu/data/irl.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"IRL"},{"name":"Isle of Man","topLevelDomain":[".im"],"alpha2Code":"IM","alpha3Code":"IMN","callingCodes":["44"],"capital":"Douglas","altSpellings":["IM","Ellan Vannin","Mann","Mannin"],"region":"Europe","subregion":"Northern Europe","population":84497,"latlng":[54.25,-4.5],"demonym":"Manx","area":572.0,"gini":null,"timezones":["UTC+00:00"],"borders":[],"nativeName":"Isle of Man","numericCode":"833","currencies":[{"code":"GBP","name":"British pound","symbol":"£"},{"code":"IMP[G]","name":"Manx pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"gv","iso639_2":"glv","name":"Manx","nativeName":"Gaelg"}],"translations":{"de":"Insel Man","es":"Isla de Man","fr":"Île de Man","ja":"マン島","it":"Isola di Man","br":"Ilha de Man","pt":"Ilha de Man","nl":"Isle of Man","hr":"Otok Man","fa":"جزیره من"},"flag":"https://restcountries.eu/data/imn.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":""},{"name":"Israel","topLevelDomain":[".il"],"alpha2Code":"IL","alpha3Code":"ISR","callingCodes":["972"],"capital":"Jerusalem","altSpellings":["IL","State of Israel","Medīnat Yisrā'el"],"region":"Asia","subregion":"Western Asia","population":8527400,"latlng":[31.5,34.75],"demonym":"Israeli","area":20770.0,"gini":39.2,"timezones":["UTC+02:00"],"borders":["EGY","JOR","LBN","SYR"],"nativeName":"יִשְׂרָאֵל","numericCode":"376","currencies":[{"code":"ILS","name":"Israeli new shekel","symbol":"₪"}],"languages":[{"iso639_1":"he","iso639_2":"heb","name":"Hebrew (modern)","nativeName":"עברית"},{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Israel","es":"Israel","fr":"Israël","ja":"イスラエル","it":"Israele","br":"Israel","pt":"Israel","nl":"Israël","hr":"Izrael","fa":"اسرائیل"},"flag":"https://restcountries.eu/data/isr.svg","regionalBlocs":[],"cioc":"ISR"},{"name":"Italy","topLevelDomain":[".it"],"alpha2Code":"IT","alpha3Code":"ITA","callingCodes":["39"],"capital":"Rome","altSpellings":["IT","Italian Republic","Repubblica italiana"],"region":"Europe","subregion":"Southern Europe","population":60665551,"latlng":[42.83333333,12.83333333],"demonym":"Italian","area":301336.0,"gini":36.0,"timezones":["UTC+01:00"],"borders":["AUT","FRA","SMR","SVN","CHE","VAT"],"nativeName":"Italia","numericCode":"380","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"it","iso639_2":"ita","name":"Italian","nativeName":"Italiano"}],"translations":{"de":"Italien","es":"Italia","fr":"Italie","ja":"イタリア","it":"Italia","br":"Itália","pt":"Itália","nl":"Italië","hr":"Italija","fa":"ایتالیا"},"flag":"https://restcountries.eu/data/ita.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"ITA"},{"name":"Jamaica","topLevelDomain":[".jm"],"alpha2Code":"JM","alpha3Code":"JAM","callingCodes":["1876"],"capital":"Kingston","altSpellings":["JM"],"region":"Americas","subregion":"Caribbean","population":2723246,"latlng":[18.25,-77.5],"demonym":"Jamaican","area":10991.0,"gini":45.5,"timezones":["UTC-05:00"],"borders":[],"nativeName":"Jamaica","numericCode":"388","currencies":[{"code":"JMD","name":"Jamaican dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Jamaika","es":"Jamaica","fr":"Jamaïque","ja":"ジャマイカ","it":"Giamaica","br":"Jamaica","pt":"Jamaica","nl":"Jamaica","hr":"Jamajka","fa":"جامائیکا"},"flag":"https://restcountries.eu/data/jam.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"JAM"},{"name":"Japan","topLevelDomain":[".jp"],"alpha2Code":"JP","alpha3Code":"JPN","callingCodes":["81"],"capital":"Tokyo","altSpellings":["JP","Nippon","Nihon"],"region":"Asia","subregion":"Eastern Asia","population":126960000,"latlng":[36.0,138.0],"demonym":"Japanese","area":377930.0,"gini":38.1,"timezones":["UTC+09:00"],"borders":[],"nativeName":"日本","numericCode":"392","currencies":[{"code":"JPY","name":"Japanese yen","symbol":"¥"}],"languages":[{"iso639_1":"ja","iso639_2":"jpn","name":"Japanese","nativeName":"日本語 (にほんご)"}],"translations":{"de":"Japan","es":"Japón","fr":"Japon","ja":"日本","it":"Giappone","br":"Japão","pt":"Japão","nl":"Japan","hr":"Japan","fa":"ژاپن"},"flag":"https://restcountries.eu/data/jpn.svg","regionalBlocs":[],"cioc":"JPN"},{"name":"Jersey","topLevelDomain":[".je"],"alpha2Code":"JE","alpha3Code":"JEY","callingCodes":["44"],"capital":"Saint Helier","altSpellings":["JE","Bailiwick of Jersey","Bailliage de Jersey","Bailliage dé Jèrri"],"region":"Europe","subregion":"Northern Europe","population":100800,"latlng":[49.25,-2.16666666],"demonym":"Channel Islander","area":116.0,"gini":null,"timezones":["UTC+01:00"],"borders":[],"nativeName":"Jersey","numericCode":"832","currencies":[{"code":"GBP","name":"British pound","symbol":"£"},{"code":"JEP[G]","name":"Jersey pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Jersey","es":"Jersey","fr":"Jersey","ja":"ジャージー","it":"Isola di Jersey","br":"Jersey","pt":"Jersey","nl":"Jersey","hr":"Jersey","fa":"جرزی"},"flag":"https://restcountries.eu/data/jey.svg","regionalBlocs":[],"cioc":""},{"name":"Jordan","topLevelDomain":[".jo"],"alpha2Code":"JO","alpha3Code":"JOR","callingCodes":["962"],"capital":"Amman","altSpellings":["JO","Hashemite Kingdom of Jordan","al-Mamlakah al-Urdunīyah al-Hāshimīyah"],"region":"Asia","subregion":"Western Asia","population":9531712,"latlng":[31.0,36.0],"demonym":"Jordanian","area":89342.0,"gini":35.4,"timezones":["UTC+03:00"],"borders":["IRQ","ISR","SAU","SYR"],"nativeName":"الأردن","numericCode":"400","currencies":[{"code":"JOD","name":"Jordanian dinar","symbol":"د.ا"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Jordanien","es":"Jordania","fr":"Jordanie","ja":"ヨルダン","it":"Giordania","br":"Jordânia","pt":"Jordânia","nl":"Jordanië","hr":"Jordan","fa":"اردن"},"flag":"https://restcountries.eu/data/jor.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"JOR"},{"name":"Kazakhstan","topLevelDomain":[".kz",".қаз"],"alpha2Code":"KZ","alpha3Code":"KAZ","callingCodes":["76","77"],"capital":"Astana","altSpellings":["KZ","Qazaqstan","Казахстан","Republic of Kazakhstan","Қазақстан Республикасы","Qazaqstan Respublïkası","Республика Казахстан","Respublika Kazakhstan"],"region":"Asia","subregion":"Central Asia","population":17753200,"latlng":[48.0,68.0],"demonym":"Kazakhstani","area":2724900.0,"gini":29.0,"timezones":["UTC+05:00","UTC+06:00"],"borders":["CHN","KGZ","RUS","TKM","UZB"],"nativeName":"Қазақстан","numericCode":"398","currencies":[{"code":"KZT","name":"Kazakhstani tenge","symbol":null}],"languages":[{"iso639_1":"kk","iso639_2":"kaz","name":"Kazakh","nativeName":"қазақ тілі"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Kasachstan","es":"Kazajistán","fr":"Kazakhstan","ja":"カザフスタン","it":"Kazakistan","br":"Cazaquistão","pt":"Cazaquistão","nl":"Kazachstan","hr":"Kazahstan","fa":"قزاقستان"},"flag":"https://restcountries.eu/data/kaz.svg","regionalBlocs":[{"acronym":"EEU","name":"Eurasian Economic Union","otherAcronyms":["EAEU"],"otherNames":[]}],"cioc":"KAZ"},{"name":"Kenya","topLevelDomain":[".ke"],"alpha2Code":"KE","alpha3Code":"KEN","callingCodes":["254"],"capital":"Nairobi","altSpellings":["KE","Republic of Kenya","Jamhuri ya Kenya"],"region":"Africa","subregion":"Eastern Africa","population":47251000,"latlng":[1.0,38.0],"demonym":"Kenyan","area":580367.0,"gini":47.7,"timezones":["UTC+03:00"],"borders":["ETH","SOM","SSD","TZA","UGA"],"nativeName":"Kenya","numericCode":"404","currencies":[{"code":"KES","name":"Kenyan shilling","symbol":"Sh"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"sw","iso639_2":"swa","name":"Swahili","nativeName":"Kiswahili"}],"translations":{"de":"Kenia","es":"Kenia","fr":"Kenya","ja":"ケニア","it":"Kenya","br":"Quênia","pt":"Quénia","nl":"Kenia","hr":"Kenija","fa":"کنیا"},"flag":"https://restcountries.eu/data/ken.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"KEN"},{"name":"Kiribati","topLevelDomain":[".ki"],"alpha2Code":"KI","alpha3Code":"KIR","callingCodes":["686"],"capital":"South Tarawa","altSpellings":["KI","Republic of Kiribati","Ribaberiki Kiribati"],"region":"Oceania","subregion":"Micronesia","population":113400,"latlng":[1.41666666,173.0],"demonym":"I-Kiribati","area":811.0,"gini":null,"timezones":["UTC+12:00","UTC+13:00","UTC+14:00"],"borders":[],"nativeName":"Kiribati","numericCode":"296","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"},{"code":"(none)","name":"Kiribati dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Kiribati","es":"Kiribati","fr":"Kiribati","ja":"キリバス","it":"Kiribati","br":"Kiribati","pt":"Quiribáti","nl":"Kiribati","hr":"Kiribati","fa":"کیریباتی"},"flag":"https://restcountries.eu/data/kir.svg","regionalBlocs":[],"cioc":"KIR"},{"name":"Kuwait","topLevelDomain":[".kw"],"alpha2Code":"KW","alpha3Code":"KWT","callingCodes":["965"],"capital":"Kuwait City","altSpellings":["KW","State of Kuwait","Dawlat al-Kuwait"],"region":"Asia","subregion":"Western Asia","population":4183658,"latlng":[29.5,45.75],"demonym":"Kuwaiti","area":17818.0,"gini":null,"timezones":["UTC+03:00"],"borders":["IRN","SAU"],"nativeName":"الكويت","numericCode":"414","currencies":[{"code":"KWD","name":"Kuwaiti dinar","symbol":"د.ك"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Kuwait","es":"Kuwait","fr":"Koweït","ja":"クウェート","it":"Kuwait","br":"Kuwait","pt":"Kuwait","nl":"Koeweit","hr":"Kuvajt","fa":"کویت"},"flag":"https://restcountries.eu/data/kwt.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"KUW"},{"name":"Kyrgyzstan","topLevelDomain":[".kg"],"alpha2Code":"KG","alpha3Code":"KGZ","callingCodes":["996"],"capital":"Bishkek","altSpellings":["KG","Киргизия","Kyrgyz Republic","Кыргыз Республикасы","Kyrgyz Respublikasy"],"region":"Asia","subregion":"Central Asia","population":6047800,"latlng":[41.0,75.0],"demonym":"Kirghiz","area":199951.0,"gini":36.2,"timezones":["UTC+06:00"],"borders":["CHN","KAZ","TJK","UZB"],"nativeName":"Кыргызстан","numericCode":"417","currencies":[{"code":"KGS","name":"Kyrgyzstani som","symbol":"с"}],"languages":[{"iso639_1":"ky","iso639_2":"kir","name":"Kyrgyz","nativeName":"Кыргызча"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Kirgisistan","es":"Kirguizistán","fr":"Kirghizistan","ja":"キルギス","it":"Kirghizistan","br":"Quirguistão","pt":"Quirguizistão","nl":"Kirgizië","hr":"Kirgistan","fa":"قرقیزستان"},"flag":"https://restcountries.eu/data/kgz.svg","regionalBlocs":[{"acronym":"EEU","name":"Eurasian Economic Union","otherAcronyms":["EAEU"],"otherNames":[]}],"cioc":"KGZ"},{"name":"Lao People's Democratic Republic","topLevelDomain":[".la"],"alpha2Code":"LA","alpha3Code":"LAO","callingCodes":["856"],"capital":"Vientiane","altSpellings":["LA","Lao","Laos","Lao People's Democratic Republic","Sathalanalat Paxathipatai Paxaxon Lao"],"region":"Asia","subregion":"South-Eastern Asia","population":6492400,"latlng":[18.0,105.0],"demonym":"Laotian","area":236800.0,"gini":36.7,"timezones":["UTC+07:00"],"borders":["MMR","KHM","CHN","THA","VNM"],"nativeName":"ສປປລາວ","numericCode":"418","currencies":[{"code":"LAK","name":"Lao kip","symbol":"₭"}],"languages":[{"iso639_1":"lo","iso639_2":"lao","name":"Lao","nativeName":"ພາສາລາວ"}],"translations":{"de":"Laos","es":"Laos","fr":"Laos","ja":"ラオス人民民主共和国","it":"Laos","br":"Laos","pt":"Laos","nl":"Laos","hr":"Laos","fa":"لائوس"},"flag":"https://restcountries.eu/data/lao.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"LAO"},{"name":"Latvia","topLevelDomain":[".lv"],"alpha2Code":"LV","alpha3Code":"LVA","callingCodes":["371"],"capital":"Riga","altSpellings":["LV","Republic of Latvia","Latvijas Republika"],"region":"Europe","subregion":"Northern Europe","population":1961600,"latlng":[57.0,25.0],"demonym":"Latvian","area":64559.0,"gini":36.6,"timezones":["UTC+02:00"],"borders":["BLR","EST","LTU","RUS"],"nativeName":"Latvija","numericCode":"428","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"lv","iso639_2":"lav","name":"Latvian","nativeName":"latviešu valoda"}],"translations":{"de":"Lettland","es":"Letonia","fr":"Lettonie","ja":"ラトビア","it":"Lettonia","br":"Letônia","pt":"Letónia","nl":"Letland","hr":"Latvija","fa":"لتونی"},"flag":"https://restcountries.eu/data/lva.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"LAT"},{"name":"Lebanon","topLevelDomain":[".lb"],"alpha2Code":"LB","alpha3Code":"LBN","callingCodes":["961"],"capital":"Beirut","altSpellings":["LB","Lebanese Republic","Al-Jumhūrīyah Al-Libnānīyah"],"region":"Asia","subregion":"Western Asia","population":5988000,"latlng":[33.83333333,35.83333333],"demonym":"Lebanese","area":10452.0,"gini":null,"timezones":["UTC+02:00"],"borders":["ISR","SYR"],"nativeName":"لبنان","numericCode":"422","currencies":[{"code":"LBP","name":"Lebanese pound","symbol":"ل.ل"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Libanon","es":"Líbano","fr":"Liban","ja":"レバノン","it":"Libano","br":"Líbano","pt":"Líbano","nl":"Libanon","hr":"Libanon","fa":"لبنان"},"flag":"https://restcountries.eu/data/lbn.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"LIB"},{"name":"Lesotho","topLevelDomain":[".ls"],"alpha2Code":"LS","alpha3Code":"LSO","callingCodes":["266"],"capital":"Maseru","altSpellings":["LS","Kingdom of Lesotho","Muso oa Lesotho"],"region":"Africa","subregion":"Southern Africa","population":1894194,"latlng":[-29.5,28.5],"demonym":"Mosotho","area":30355.0,"gini":52.5,"timezones":["UTC+02:00"],"borders":["ZAF"],"nativeName":"Lesotho","numericCode":"426","currencies":[{"code":"LSL","name":"Lesotho loti","symbol":"L"},{"code":"ZAR","name":"South African rand","symbol":"R"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"st","iso639_2":"sot","name":"Southern Sotho","nativeName":"Sesotho"}],"translations":{"de":"Lesotho","es":"Lesotho","fr":"Lesotho","ja":"レソト","it":"Lesotho","br":"Lesoto","pt":"Lesoto","nl":"Lesotho","hr":"Lesoto","fa":"لسوتو"},"flag":"https://restcountries.eu/data/lso.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"LES"},{"name":"Liberia","topLevelDomain":[".lr"],"alpha2Code":"LR","alpha3Code":"LBR","callingCodes":["231"],"capital":"Monrovia","altSpellings":["LR","Republic of Liberia"],"region":"Africa","subregion":"Western Africa","population":4615000,"latlng":[6.5,-9.5],"demonym":"Liberian","area":111369.0,"gini":38.2,"timezones":["UTC"],"borders":["GIN","CIV","SLE"],"nativeName":"Liberia","numericCode":"430","currencies":[{"code":"LRD","name":"Liberian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Liberia","es":"Liberia","fr":"Liberia","ja":"リベリア","it":"Liberia","br":"Libéria","pt":"Libéria","nl":"Liberia","hr":"Liberija","fa":"لیبریا"},"flag":"https://restcountries.eu/data/lbr.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"LBR"},{"name":"Libya","topLevelDomain":[".ly"],"alpha2Code":"LY","alpha3Code":"LBY","callingCodes":["218"],"capital":"Tripoli","altSpellings":["LY","State of Libya","Dawlat Libya"],"region":"Africa","subregion":"Northern Africa","population":6385000,"latlng":[25.0,17.0],"demonym":"Libyan","area":1759540.0,"gini":null,"timezones":["UTC+01:00"],"borders":["DZA","TCD","EGY","NER","SDN","TUN"],"nativeName":"‏ليبيا","numericCode":"434","currencies":[{"code":"LYD","name":"Libyan dinar","symbol":"ل.د"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Libyen","es":"Libia","fr":"Libye","ja":"リビア","it":"Libia","br":"Líbia","pt":"Líbia","nl":"Libië","hr":"Libija","fa":"لیبی"},"flag":"https://restcountries.eu/data/lby.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"LBA"},{"name":"Liechtenstein","topLevelDomain":[".li"],"alpha2Code":"LI","alpha3Code":"LIE","callingCodes":["423"],"capital":"Vaduz","altSpellings":["LI","Principality of Liechtenstein","Fürstentum Liechtenstein"],"region":"Europe","subregion":"Western Europe","population":37623,"latlng":[47.26666666,9.53333333],"demonym":"Liechtensteiner","area":160.0,"gini":null,"timezones":["UTC+01:00"],"borders":["AUT","CHE"],"nativeName":"Liechtenstein","numericCode":"438","currencies":[{"code":"CHF","name":"Swiss franc","symbol":"Fr"}],"languages":[{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"}],"translations":{"de":"Liechtenstein","es":"Liechtenstein","fr":"Liechtenstein","ja":"リヒテンシュタイン","it":"Liechtenstein","br":"Liechtenstein","pt":"Listenstaine","nl":"Liechtenstein","hr":"Lihtenštajn","fa":"لیختن‌اشتاین"},"flag":"https://restcountries.eu/data/lie.svg","regionalBlocs":[{"acronym":"EFTA","name":"European Free Trade Association","otherAcronyms":[],"otherNames":[]}],"cioc":"LIE"},{"name":"Lithuania","topLevelDomain":[".lt"],"alpha2Code":"LT","alpha3Code":"LTU","callingCodes":["370"],"capital":"Vilnius","altSpellings":["LT","Republic of Lithuania","Lietuvos Respublika"],"region":"Europe","subregion":"Northern Europe","population":2872294,"latlng":[56.0,24.0],"demonym":"Lithuanian","area":65300.0,"gini":37.6,"timezones":["UTC+02:00"],"borders":["BLR","LVA","POL","RUS"],"nativeName":"Lietuva","numericCode":"440","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"lt","iso639_2":"lit","name":"Lithuanian","nativeName":"lietuvių kalba"}],"translations":{"de":"Litauen","es":"Lituania","fr":"Lituanie","ja":"リトアニア","it":"Lituania","br":"Lituânia","pt":"Lituânia","nl":"Litouwen","hr":"Litva","fa":"لیتوانی"},"flag":"https://restcountries.eu/data/ltu.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"LTU"},{"name":"Luxembourg","topLevelDomain":[".lu"],"alpha2Code":"LU","alpha3Code":"LUX","callingCodes":["352"],"capital":"Luxembourg","altSpellings":["LU","Grand Duchy of Luxembourg","Grand-Duché de Luxembourg","Großherzogtum Luxemburg","Groussherzogtum Lëtzebuerg"],"region":"Europe","subregion":"Western Europe","population":576200,"latlng":[49.75,6.16666666],"demonym":"Luxembourger","area":2586.0,"gini":30.8,"timezones":["UTC+01:00"],"borders":["BEL","FRA","DEU"],"nativeName":"Luxembourg","numericCode":"442","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"},{"iso639_1":"lb","iso639_2":"ltz","name":"Luxembourgish","nativeName":"Lëtzebuergesch"}],"translations":{"de":"Luxemburg","es":"Luxemburgo","fr":"Luxembourg","ja":"ルクセンブルク","it":"Lussemburgo","br":"Luxemburgo","pt":"Luxemburgo","nl":"Luxemburg","hr":"Luksemburg","fa":"لوکزامبورگ"},"flag":"https://restcountries.eu/data/lux.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"LUX"},{"name":"Macao","topLevelDomain":[".mo"],"alpha2Code":"MO","alpha3Code":"MAC","callingCodes":["853"],"capital":"","altSpellings":["MO","澳门","Macao Special Administrative Region of the People's Republic of China","中華人民共和國澳門特別行政區","Região Administrativa Especial de Macau da República Popular da China"],"region":"Asia","subregion":"Eastern Asia","population":649100,"latlng":[22.16666666,113.55],"demonym":"Chinese","area":30.0,"gini":null,"timezones":["UTC+08:00"],"borders":["CHN"],"nativeName":"澳門","numericCode":"446","currencies":[{"code":"MOP","name":"Macanese pataca","symbol":"P"}],"languages":[{"iso639_1":"zh","iso639_2":"zho","name":"Chinese","nativeName":"中文 (Zhōngwén)"},{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Macao","es":"Macao","fr":"Macao","ja":"マカオ","it":"Macao","br":"Macau","pt":"Macau","nl":"Macao","hr":"Makao","fa":"مکائو"},"flag":"https://restcountries.eu/data/mac.svg","regionalBlocs":[],"cioc":""},{"name":"Macedonia (the former Yugoslav Republic of)","topLevelDomain":[".mk"],"alpha2Code":"MK","alpha3Code":"MKD","callingCodes":["389"],"capital":"Skopje","altSpellings":["MK","Republic of Macedonia","Република Македонија"],"region":"Europe","subregion":"Southern Europe","population":2058539,"latlng":[41.83333333,22.0],"demonym":"Macedonian","area":25713.0,"gini":43.2,"timezones":["UTC+01:00"],"borders":["ALB","BGR","GRC","KOS","SRB"],"nativeName":"Македонија","numericCode":"807","currencies":[{"code":"MKD","name":"Macedonian denar","symbol":"ден"}],"languages":[{"iso639_1":"mk","iso639_2":"mkd","name":"Macedonian","nativeName":"македонски јазик"}],"translations":{"de":"Mazedonien","es":"Macedonia","fr":"Macédoine","ja":"マケドニア旧ユーゴスラビア共和国","it":"Macedonia","br":"Macedônia","pt":"Macedónia","nl":"Macedonië","hr":"Makedonija","fa":""},"flag":"https://restcountries.eu/data/mkd.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"MKD"},{"name":"Madagascar","topLevelDomain":[".mg"],"alpha2Code":"MG","alpha3Code":"MDG","callingCodes":["261"],"capital":"Antananarivo","altSpellings":["MG","Republic of Madagascar","Repoblikan'i Madagasikara","République de Madagascar"],"region":"Africa","subregion":"Eastern Africa","population":22434363,"latlng":[-20.0,47.0],"demonym":"Malagasy","area":587041.0,"gini":44.1,"timezones":["UTC+03:00"],"borders":[],"nativeName":"Madagasikara","numericCode":"450","currencies":[{"code":"MGA","name":"Malagasy ariary","symbol":"Ar"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"mg","iso639_2":"mlg","name":"Malagasy","nativeName":"fiteny malagasy"}],"translations":{"de":"Madagaskar","es":"Madagascar","fr":"Madagascar","ja":"マダガスカル","it":"Madagascar","br":"Madagascar","pt":"Madagáscar","nl":"Madagaskar","hr":"Madagaskar","fa":"ماداگاسکار"},"flag":"https://restcountries.eu/data/mdg.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"MAD"},{"name":"Malawi","topLevelDomain":[".mw"],"alpha2Code":"MW","alpha3Code":"MWI","callingCodes":["265"],"capital":"Lilongwe","altSpellings":["MW","Republic of Malawi"],"region":"Africa","subregion":"Eastern Africa","population":16832910,"latlng":[-13.5,34.0],"demonym":"Malawian","area":118484.0,"gini":39.0,"timezones":["UTC+02:00"],"borders":["MOZ","TZA","ZMB"],"nativeName":"Malawi","numericCode":"454","currencies":[{"code":"MWK","name":"Malawian kwacha","symbol":"MK"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ny","iso639_2":"nya","name":"Chichewa","nativeName":"chiCheŵa"}],"translations":{"de":"Malawi","es":"Malawi","fr":"Malawi","ja":"マラウイ","it":"Malawi","br":"Malawi","pt":"Malávi","nl":"Malawi","hr":"Malavi","fa":"مالاوی"},"flag":"https://restcountries.eu/data/mwi.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"MAW"},{"name":"Malaysia","topLevelDomain":[".my"],"alpha2Code":"MY","alpha3Code":"MYS","callingCodes":["60"],"capital":"Kuala Lumpur","altSpellings":["MY"],"region":"Asia","subregion":"South-Eastern Asia","population":31405416,"latlng":[2.5,112.5],"demonym":"Malaysian","area":330803.0,"gini":46.2,"timezones":["UTC+08:00"],"borders":["BRN","IDN","THA"],"nativeName":"Malaysia","numericCode":"458","currencies":[{"code":"MYR","name":"Malaysian ringgit","symbol":"RM"}],"languages":[{"iso639_1":null,"iso639_2":"zsm","name":"Malaysian","nativeName":"بهاس مليسيا"}],"translations":{"de":"Malaysia","es":"Malasia","fr":"Malaisie","ja":"マレーシア","it":"Malesia","br":"Malásia","pt":"Malásia","nl":"Maleisië","hr":"Malezija","fa":"مالزی"},"flag":"https://restcountries.eu/data/mys.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"MAS"},{"name":"Maldives","topLevelDomain":[".mv"],"alpha2Code":"MV","alpha3Code":"MDV","callingCodes":["960"],"capital":"Malé","altSpellings":["MV","Maldive Islands","Republic of the Maldives","Dhivehi Raajjeyge Jumhooriyya"],"region":"Asia","subregion":"Southern Asia","population":344023,"latlng":[3.25,73.0],"demonym":"Maldivan","area":300.0,"gini":37.4,"timezones":["UTC+05:00"],"borders":[],"nativeName":"Maldives","numericCode":"462","currencies":[{"code":"MVR","name":"Maldivian rufiyaa","symbol":".ރ"}],"languages":[{"iso639_1":"dv","iso639_2":"div","name":"Divehi","nativeName":"ދިވެހި"}],"translations":{"de":"Malediven","es":"Maldivas","fr":"Maldives","ja":"モルディブ","it":"Maldive","br":"Maldivas","pt":"Maldivas","nl":"Maldiven","hr":"Maldivi","fa":"مالدیو"},"flag":"https://restcountries.eu/data/mdv.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"MDV"},{"name":"Mali","topLevelDomain":[".ml"],"alpha2Code":"ML","alpha3Code":"MLI","callingCodes":["223"],"capital":"Bamako","altSpellings":["ML","Republic of Mali","République du Mali"],"region":"Africa","subregion":"Western Africa","population":18135000,"latlng":[17.0,-4.0],"demonym":"Malian","area":1240192.0,"gini":33.0,"timezones":["UTC"],"borders":["DZA","BFA","GIN","CIV","MRT","NER","SEN"],"nativeName":"Mali","numericCode":"466","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Mali","es":"Mali","fr":"Mali","ja":"マリ","it":"Mali","br":"Mali","pt":"Mali","nl":"Mali","hr":"Mali","fa":"مالی"},"flag":"https://restcountries.eu/data/mli.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"MLI"},{"name":"Malta","topLevelDomain":[".mt"],"alpha2Code":"MT","alpha3Code":"MLT","callingCodes":["356"],"capital":"Valletta","altSpellings":["MT","Republic of Malta","Repubblika ta' Malta"],"region":"Europe","subregion":"Southern Europe","population":425384,"latlng":[35.83333333,14.58333333],"demonym":"Maltese","area":316.0,"gini":null,"timezones":["UTC+01:00"],"borders":[],"nativeName":"Malta","numericCode":"470","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"mt","iso639_2":"mlt","name":"Maltese","nativeName":"Malti"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Malta","es":"Malta","fr":"Malte","ja":"マルタ","it":"Malta","br":"Malta","pt":"Malta","nl":"Malta","hr":"Malta","fa":"مالت"},"flag":"https://restcountries.eu/data/mlt.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"MLT"},{"name":"Marshall Islands","topLevelDomain":[".mh"],"alpha2Code":"MH","alpha3Code":"MHL","callingCodes":["692"],"capital":"Majuro","altSpellings":["MH","Republic of the Marshall Islands","Aolepān Aorōkin M̧ajeļ"],"region":"Oceania","subregion":"Micronesia","population":54880,"latlng":[9.0,168.0],"demonym":"Marshallese","area":181.0,"gini":null,"timezones":["UTC+12:00"],"borders":[],"nativeName":"M̧ajeļ","numericCode":"584","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"mh","iso639_2":"mah","name":"Marshallese","nativeName":"Kajin M̧ajeļ"}],"translations":{"de":"Marshallinseln","es":"Islas Marshall","fr":"Îles Marshall","ja":"マーシャル諸島","it":"Isole Marshall","br":"Ilhas Marshall","pt":"Ilhas Marshall","nl":"Marshalleilanden","hr":"Maršalovi Otoci","fa":"جزایر مارشال"},"flag":"https://restcountries.eu/data/mhl.svg","regionalBlocs":[],"cioc":"MHL"},{"name":"Martinique","topLevelDomain":[".mq"],"alpha2Code":"MQ","alpha3Code":"MTQ","callingCodes":["596"],"capital":"Fort-de-France","altSpellings":["MQ"],"region":"Americas","subregion":"Caribbean","population":378243,"latlng":[14.666667,-61.0],"demonym":"French","area":null,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Martinique","numericCode":"474","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Martinique","es":"Martinica","fr":"Martinique","ja":"マルティニーク","it":"Martinica","br":"Martinica","pt":"Martinica","nl":"Martinique","hr":"Martinique","fa":"مونتسرات"},"flag":"https://restcountries.eu/data/mtq.svg","regionalBlocs":[],"cioc":""},{"name":"Mauritania","topLevelDomain":[".mr"],"alpha2Code":"MR","alpha3Code":"MRT","callingCodes":["222"],"capital":"Nouakchott","altSpellings":["MR","Islamic Republic of Mauritania","al-Jumhūriyyah al-ʾIslāmiyyah al-Mūrītāniyyah"],"region":"Africa","subregion":"Western Africa","population":3718678,"latlng":[20.0,-12.0],"demonym":"Mauritanian","area":1030700.0,"gini":40.5,"timezones":["UTC"],"borders":["DZA","MLI","SEN","ESH"],"nativeName":"موريتانيا","numericCode":"478","currencies":[{"code":"MRO","name":"Mauritanian ouguiya","symbol":"UM"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Mauretanien","es":"Mauritania","fr":"Mauritanie","ja":"モーリタニア","it":"Mauritania","br":"Mauritânia","pt":"Mauritânia","nl":"Mauritanië","hr":"Mauritanija","fa":"موریتانی"},"flag":"https://restcountries.eu/data/mrt.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"MTN"},{"name":"Mauritius","topLevelDomain":[".mu"],"alpha2Code":"MU","alpha3Code":"MUS","callingCodes":["230"],"capital":"Port Louis","altSpellings":["MU","Republic of Mauritius","République de Maurice"],"region":"Africa","subregion":"Eastern Africa","population":1262879,"latlng":[-20.28333333,57.55],"demonym":"Mauritian","area":2040.0,"gini":null,"timezones":["UTC+04:00"],"borders":[],"nativeName":"Maurice","numericCode":"480","currencies":[{"code":"MUR","name":"Mauritian rupee","symbol":"₨"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Mauritius","es":"Mauricio","fr":"Île Maurice","ja":"モーリシャス","it":"Mauritius","br":"Maurício","pt":"Maurícia","nl":"Mauritius","hr":"Mauricijus","fa":"موریس"},"flag":"https://restcountries.eu/data/mus.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"MRI"},{"name":"Mayotte","topLevelDomain":[".yt"],"alpha2Code":"YT","alpha3Code":"MYT","callingCodes":["262"],"capital":"Mamoudzou","altSpellings":["YT","Department of Mayotte","Département de Mayotte"],"region":"Africa","subregion":"Eastern Africa","population":226915,"latlng":[-12.83333333,45.16666666],"demonym":"French","area":null,"gini":null,"timezones":["UTC+03:00"],"borders":[],"nativeName":"Mayotte","numericCode":"175","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Mayotte","es":"Mayotte","fr":"Mayotte","ja":"マヨット","it":"Mayotte","br":"Mayotte","pt":"Mayotte","nl":"Mayotte","hr":"Mayotte","fa":"مایوت"},"flag":"https://restcountries.eu/data/myt.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"Mexico","topLevelDomain":[".mx"],"alpha2Code":"MX","alpha3Code":"MEX","callingCodes":["52"],"capital":"Mexico City","altSpellings":["MX","Mexicanos","United Mexican States","Estados Unidos Mexicanos"],"region":"Americas","subregion":"Central America","population":122273473,"latlng":[23.0,-102.0],"demonym":"Mexican","area":1964375.0,"gini":47.0,"timezones":["UTC-08:00","UTC-07:00","UTC-06:00"],"borders":["BLZ","GTM","USA"],"nativeName":"México","numericCode":"484","currencies":[{"code":"MXN","name":"Mexican peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Mexiko","es":"México","fr":"Mexique","ja":"メキシコ","it":"Messico","br":"México","pt":"México","nl":"Mexico","hr":"Meksiko","fa":"مکزیک"},"flag":"https://restcountries.eu/data/mex.svg","regionalBlocs":[{"acronym":"PA","name":"Pacific Alliance","otherAcronyms":[],"otherNames":["Alianza del Pacífico"]},{"acronym":"NAFTA","name":"North American Free Trade Agreement","otherAcronyms":[],"otherNames":["Tratado de Libre Comercio de América del Norte","Accord de Libre-échange Nord-Américain"]}],"cioc":"MEX"},{"name":"Micronesia (Federated States of)","topLevelDomain":[".fm"],"alpha2Code":"FM","alpha3Code":"FSM","callingCodes":["691"],"capital":"Palikir","altSpellings":["FM","Federated States of Micronesia"],"region":"Oceania","subregion":"Micronesia","population":102800,"latlng":[6.91666666,158.25],"demonym":"Micronesian","area":702.0,"gini":null,"timezones":["UTC+10:00","UTC+11"],"borders":[],"nativeName":"Micronesia","numericCode":"583","currencies":[{"code":null,"name":"[D]","symbol":"$"},{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Mikronesien","es":"Micronesia","fr":"Micronésie","ja":"ミクロネシア連邦","it":"Micronesia","br":"Micronésia","pt":"Micronésia","nl":"Micronesië","hr":"Mikronezija","fa":"ایالات فدرال میکرونزی"},"flag":"https://restcountries.eu/data/fsm.svg","regionalBlocs":[],"cioc":"FSM"},{"name":"Moldova (Republic of)","topLevelDomain":[".md"],"alpha2Code":"MD","alpha3Code":"MDA","callingCodes":["373"],"capital":"Chișinău","altSpellings":["MD","Republic of Moldova","Republica Moldova"],"region":"Europe","subregion":"Eastern Europe","population":3553100,"latlng":[47.0,29.0],"demonym":"Moldovan","area":33846.0,"gini":33.0,"timezones":["UTC+02:00"],"borders":["ROU","UKR"],"nativeName":"Moldova","numericCode":"498","currencies":[{"code":"MDL","name":"Moldovan leu","symbol":"L"}],"languages":[{"iso639_1":"ro","iso639_2":"ron","name":"Romanian","nativeName":"Română"}],"translations":{"de":"Moldawie","es":"Moldavia","fr":"Moldavie","ja":"モルドバ共和国","it":"Moldavia","br":"Moldávia","pt":"Moldávia","nl":"Moldavië","hr":"Moldova","fa":"مولداوی"},"flag":"https://restcountries.eu/data/mda.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"MDA"},{"name":"Monaco","topLevelDomain":[".mc"],"alpha2Code":"MC","alpha3Code":"MCO","callingCodes":["377"],"capital":"Monaco","altSpellings":["MC","Principality of Monaco","Principauté de Monaco"],"region":"Europe","subregion":"Western Europe","population":38400,"latlng":[43.73333333,7.4],"demonym":"Monegasque","area":2.02,"gini":null,"timezones":["UTC+01:00"],"borders":["FRA"],"nativeName":"Monaco","numericCode":"492","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Monaco","es":"Mónaco","fr":"Monaco","ja":"モナコ","it":"Principato di Monaco","br":"Mônaco","pt":"Mónaco","nl":"Monaco","hr":"Monako","fa":"موناکو"},"flag":"https://restcountries.eu/data/mco.svg","regionalBlocs":[],"cioc":"MON"},{"name":"Mongolia","topLevelDomain":[".mn"],"alpha2Code":"MN","alpha3Code":"MNG","callingCodes":["976"],"capital":"Ulan Bator","altSpellings":["MN"],"region":"Asia","subregion":"Eastern Asia","population":3093100,"latlng":[46.0,105.0],"demonym":"Mongolian","area":1564110.0,"gini":36.5,"timezones":["UTC+07:00","UTC+08:00"],"borders":["CHN","RUS"],"nativeName":"Монгол улс","numericCode":"496","currencies":[{"code":"MNT","name":"Mongolian tögrög","symbol":"₮"}],"languages":[{"iso639_1":"mn","iso639_2":"mon","name":"Mongolian","nativeName":"Монгол хэл"}],"translations":{"de":"Mongolei","es":"Mongolia","fr":"Mongolie","ja":"モンゴル","it":"Mongolia","br":"Mongólia","pt":"Mongólia","nl":"Mongolië","hr":"Mongolija","fa":"مغولستان"},"flag":"https://restcountries.eu/data/mng.svg","regionalBlocs":[],"cioc":"MGL"},{"name":"Montenegro","topLevelDomain":[".me"],"alpha2Code":"ME","alpha3Code":"MNE","callingCodes":["382"],"capital":"Podgorica","altSpellings":["ME","Crna Gora"],"region":"Europe","subregion":"Southern Europe","population":621810,"latlng":[42.5,19.3],"demonym":"Montenegrin","area":13812.0,"gini":30.0,"timezones":["UTC+01:00"],"borders":["ALB","BIH","HRV","KOS","SRB"],"nativeName":"Црна Гора","numericCode":"499","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"sr","iso639_2":"srp","name":"Serbian","nativeName":"српски језик"},{"iso639_1":"bs","iso639_2":"bos","name":"Bosnian","nativeName":"bosanski jezik"},{"iso639_1":"sq","iso639_2":"sqi","name":"Albanian","nativeName":"Shqip"},{"iso639_1":"hr","iso639_2":"hrv","name":"Croatian","nativeName":"hrvatski jezik"}],"translations":{"de":"Montenegro","es":"Montenegro","fr":"Monténégro","ja":"モンテネグロ","it":"Montenegro","br":"Montenegro","pt":"Montenegro","nl":"Montenegro","hr":"Crna Gora","fa":"مونته‌نگرو"},"flag":"https://restcountries.eu/data/mne.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"MNE"},{"name":"Montserrat","topLevelDomain":[".ms"],"alpha2Code":"MS","alpha3Code":"MSR","callingCodes":["1664"],"capital":"Plymouth","altSpellings":["MS"],"region":"Americas","subregion":"Caribbean","population":4922,"latlng":[16.75,-62.2],"demonym":"Montserratian","area":102.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Montserrat","numericCode":"500","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Montserrat","es":"Montserrat","fr":"Montserrat","ja":"モントセラト","it":"Montserrat","br":"Montserrat","pt":"Monserrate","nl":"Montserrat","hr":"Montserrat","fa":"مایوت"},"flag":"https://restcountries.eu/data/msr.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":""},{"name":"Morocco","topLevelDomain":[".ma"],"alpha2Code":"MA","alpha3Code":"MAR","callingCodes":["212"],"capital":"Rabat","altSpellings":["MA","Kingdom of Morocco","Al-Mamlakah al-Maġribiyah"],"region":"Africa","subregion":"Northern Africa","population":33337529,"latlng":[32.0,-5.0],"demonym":"Moroccan","area":446550.0,"gini":40.9,"timezones":["UTC"],"borders":["DZA","ESH","ESP"],"nativeName":"المغرب","numericCode":"504","currencies":[{"code":"MAD","name":"Moroccan dirham","symbol":"د.م."}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Marokko","es":"Marruecos","fr":"Maroc","ja":"モロッコ","it":"Marocco","br":"Marrocos","pt":"Marrocos","nl":"Marokko","hr":"Maroko","fa":"مراکش"},"flag":"https://restcountries.eu/data/mar.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"MAR"},{"name":"Mozambique","topLevelDomain":[".mz"],"alpha2Code":"MZ","alpha3Code":"MOZ","callingCodes":["258"],"capital":"Maputo","altSpellings":["MZ","Republic of Mozambique","República de Moçambique"],"region":"Africa","subregion":"Eastern Africa","population":26423700,"latlng":[-18.25,35.0],"demonym":"Mozambican","area":801590.0,"gini":45.7,"timezones":["UTC+02:00"],"borders":["MWI","ZAF","SWZ","TZA","ZMB","ZWE"],"nativeName":"Moçambique","numericCode":"508","currencies":[{"code":"MZN","name":"Mozambican metical","symbol":"MT"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Mosambik","es":"Mozambique","fr":"Mozambique","ja":"モザンビーク","it":"Mozambico","br":"Moçambique","pt":"Moçambique","nl":"Mozambique","hr":"Mozambik","fa":"موزامبیک"},"flag":"https://restcountries.eu/data/moz.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"MOZ"},{"name":"Myanmar","topLevelDomain":[".mm"],"alpha2Code":"MM","alpha3Code":"MMR","callingCodes":["95"],"capital":"Naypyidaw","altSpellings":["MM","Burma","Republic of the Union of Myanmar","Pyidaunzu Thanmăda Myăma Nainngandaw"],"region":"Asia","subregion":"South-Eastern Asia","population":51419420,"latlng":[22.0,98.0],"demonym":"Burmese","area":676578.0,"gini":null,"timezones":["UTC+06:30"],"borders":["BGD","CHN","IND","LAO","THA"],"nativeName":"Myanma","numericCode":"104","currencies":[{"code":"MMK","name":"Burmese kyat","symbol":"Ks"}],"languages":[{"iso639_1":"my","iso639_2":"mya","name":"Burmese","nativeName":"ဗမာစာ"}],"translations":{"de":"Myanmar","es":"Myanmar","fr":"Myanmar","ja":"ミャンマー","it":"Birmania","br":"Myanmar","pt":"Myanmar","nl":"Myanmar","hr":"Mijanmar","fa":"میانمار"},"flag":"https://restcountries.eu/data/mmr.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"MYA"},{"name":"Namibia","topLevelDomain":[".na"],"alpha2Code":"NA","alpha3Code":"NAM","callingCodes":["264"],"capital":"Windhoek","altSpellings":["NA","Namibië","Republic of Namibia"],"region":"Africa","subregion":"Southern Africa","population":2324388,"latlng":[-22.0,17.0],"demonym":"Namibian","area":825615.0,"gini":63.9,"timezones":["UTC+01:00"],"borders":["AGO","BWA","ZAF","ZMB"],"nativeName":"Namibia","numericCode":"516","currencies":[{"code":"NAD","name":"Namibian dollar","symbol":"$"},{"code":"ZAR","name":"South African rand","symbol":"R"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"af","iso639_2":"afr","name":"Afrikaans","nativeName":"Afrikaans"}],"translations":{"de":"Namibia","es":"Namibia","fr":"Namibie","ja":"ナミビア","it":"Namibia","br":"Namíbia","pt":"Namíbia","nl":"Namibië","hr":"Namibija","fa":"نامیبیا"},"flag":"https://restcountries.eu/data/nam.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"NAM"},{"name":"Nauru","topLevelDomain":[".nr"],"alpha2Code":"NR","alpha3Code":"NRU","callingCodes":["674"],"capital":"Yaren","altSpellings":["NR","Naoero","Pleasant Island","Republic of Nauru","Ripublik Naoero"],"region":"Oceania","subregion":"Micronesia","population":10084,"latlng":[-0.53333333,166.91666666],"demonym":"Nauruan","area":21.0,"gini":null,"timezones":["UTC+12:00"],"borders":[],"nativeName":"Nauru","numericCode":"520","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"},{"code":"(none)","name":null,"symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"na","iso639_2":"nau","name":"Nauruan","nativeName":"Dorerin Naoero"}],"translations":{"de":"Nauru","es":"Nauru","fr":"Nauru","ja":"ナウル","it":"Nauru","br":"Nauru","pt":"Nauru","nl":"Nauru","hr":"Nauru","fa":"نائورو"},"flag":"https://restcountries.eu/data/nru.svg","regionalBlocs":[],"cioc":"NRU"},{"name":"Nepal","topLevelDomain":[".np"],"alpha2Code":"NP","alpha3Code":"NPL","callingCodes":["977"],"capital":"Kathmandu","altSpellings":["NP","Federal Democratic Republic of Nepal","Loktāntrik Ganatantra Nepāl"],"region":"Asia","subregion":"Southern Asia","population":28431500,"latlng":[28.0,84.0],"demonym":"Nepalese","area":147181.0,"gini":32.8,"timezones":["UTC+05:45"],"borders":["CHN","IND"],"nativeName":"नेपाल","numericCode":"524","currencies":[{"code":"NPR","name":"Nepalese rupee","symbol":"₨"}],"languages":[{"iso639_1":"ne","iso639_2":"nep","name":"Nepali","nativeName":"नेपाली"}],"translations":{"de":"Népal","es":"Nepal","fr":"Népal","ja":"ネパール","it":"Nepal","br":"Nepal","pt":"Nepal","nl":"Nepal","hr":"Nepal","fa":"نپال"},"flag":"https://restcountries.eu/data/npl.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"NEP"},{"name":"Netherlands","topLevelDomain":[".nl"],"alpha2Code":"NL","alpha3Code":"NLD","callingCodes":["31"],"capital":"Amsterdam","altSpellings":["NL","Holland","Nederland"],"region":"Europe","subregion":"Western Europe","population":17019800,"latlng":[52.5,5.75],"demonym":"Dutch","area":41850.0,"gini":30.9,"timezones":["UTC-04:00","UTC+01:00"],"borders":["BEL","DEU"],"nativeName":"Nederland","numericCode":"528","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"}],"translations":{"de":"Niederlande","es":"Países Bajos","fr":"Pays-Bas","ja":"オランダ","it":"Paesi Bassi","br":"Holanda","pt":"Países Baixos","nl":"Nederland","hr":"Nizozemska","fa":"پادشاهی هلند"},"flag":"https://restcountries.eu/data/nld.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"NED"},{"name":"New Caledonia","topLevelDomain":[".nc"],"alpha2Code":"NC","alpha3Code":"NCL","callingCodes":["687"],"capital":"Nouméa","altSpellings":["NC"],"region":"Oceania","subregion":"Melanesia","population":268767,"latlng":[-21.5,165.5],"demonym":"New Caledonian","area":18575.0,"gini":null,"timezones":["UTC+11:00"],"borders":[],"nativeName":"Nouvelle-Calédonie","numericCode":"540","currencies":[{"code":"XPF","name":"CFP franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Neukaledonien","es":"Nueva Caledonia","fr":"Nouvelle-Calédonie","ja":"ニューカレドニア","it":"Nuova Caledonia","br":"Nova Caledônia","pt":"Nova Caledónia","nl":"Nieuw-Caledonië","hr":"Nova Kaledonija","fa":"کالدونیای جدید"},"flag":"https://restcountries.eu/data/ncl.svg","regionalBlocs":[],"cioc":""},{"name":"New Zealand","topLevelDomain":[".nz"],"alpha2Code":"NZ","alpha3Code":"NZL","callingCodes":["64"],"capital":"Wellington","altSpellings":["NZ","Aotearoa"],"region":"Oceania","subregion":"Australia and New Zealand","population":4697854,"latlng":[-41.0,174.0],"demonym":"New Zealander","area":270467.0,"gini":36.2,"timezones":["UTC-11:00","UTC-10:00","UTC+12:00","UTC+12:45","UTC+13:00"],"borders":[],"nativeName":"New Zealand","numericCode":"554","currencies":[{"code":"NZD","name":"New Zealand dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"mi","iso639_2":"mri","name":"Māori","nativeName":"te reo Māori"}],"translations":{"de":"Neuseeland","es":"Nueva Zelanda","fr":"Nouvelle-Zélande","ja":"ニュージーランド","it":"Nuova Zelanda","br":"Nova Zelândia","pt":"Nova Zelândia","nl":"Nieuw-Zeeland","hr":"Novi Zeland","fa":"نیوزیلند"},"flag":"https://restcountries.eu/data/nzl.svg","regionalBlocs":[],"cioc":"NZL"},{"name":"Nicaragua","topLevelDomain":[".ni"],"alpha2Code":"NI","alpha3Code":"NIC","callingCodes":["505"],"capital":"Managua","altSpellings":["NI","Republic of Nicaragua","República de Nicaragua"],"region":"Americas","subregion":"Central America","population":6262703,"latlng":[13.0,-85.0],"demonym":"Nicaraguan","area":130373.0,"gini":40.5,"timezones":["UTC-06:00"],"borders":["CRI","HND"],"nativeName":"Nicaragua","numericCode":"558","currencies":[{"code":"NIO","name":"Nicaraguan córdoba","symbol":"C$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Nicaragua","es":"Nicaragua","fr":"Nicaragua","ja":"ニカラグア","it":"Nicaragua","br":"Nicarágua","pt":"Nicarágua","nl":"Nicaragua","hr":"Nikaragva","fa":"نیکاراگوئه"},"flag":"https://restcountries.eu/data/nic.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"NCA"},{"name":"Niger","topLevelDomain":[".ne"],"alpha2Code":"NE","alpha3Code":"NER","callingCodes":["227"],"capital":"Niamey","altSpellings":["NE","Nijar","Republic of Niger","République du Niger"],"region":"Africa","subregion":"Western Africa","population":20715000,"latlng":[16.0,8.0],"demonym":"Nigerien","area":1267000.0,"gini":34.6,"timezones":["UTC+01:00"],"borders":["DZA","BEN","BFA","TCD","LBY","MLI","NGA"],"nativeName":"Niger","numericCode":"562","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Niger","es":"Níger","fr":"Niger","ja":"ニジェール","it":"Niger","br":"Níger","pt":"Níger","nl":"Niger","hr":"Niger","fa":"نیجر"},"flag":"https://restcountries.eu/data/ner.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"NIG"},{"name":"Nigeria","topLevelDomain":[".ng"],"alpha2Code":"NG","alpha3Code":"NGA","callingCodes":["234"],"capital":"Abuja","altSpellings":["NG","Nijeriya","Naíjíríà","Federal Republic of Nigeria"],"region":"Africa","subregion":"Western Africa","population":186988000,"latlng":[10.0,8.0],"demonym":"Nigerian","area":923768.0,"gini":48.8,"timezones":["UTC+01:00"],"borders":["BEN","CMR","TCD","NER"],"nativeName":"Nigeria","numericCode":"566","currencies":[{"code":"NGN","name":"Nigerian naira","symbol":"₦"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Nigeria","es":"Nigeria","fr":"Nigéria","ja":"ナイジェリア","it":"Nigeria","br":"Nigéria","pt":"Nigéria","nl":"Nigeria","hr":"Nigerija","fa":"نیجریه"},"flag":"https://restcountries.eu/data/nga.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"NGR"},{"name":"Niue","topLevelDomain":[".nu"],"alpha2Code":"NU","alpha3Code":"NIU","callingCodes":["683"],"capital":"Alofi","altSpellings":["NU"],"region":"Oceania","subregion":"Polynesia","population":1470,"latlng":[-19.03333333,-169.86666666],"demonym":"Niuean","area":260.0,"gini":null,"timezones":["UTC-11:00"],"borders":[],"nativeName":"Niuē","numericCode":"570","currencies":[{"code":"NZD","name":"New Zealand dollar","symbol":"$"},{"code":"(none)","name":"Niue dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Niue","es":"Niue","fr":"Niue","ja":"ニウエ","it":"Niue","br":"Niue","pt":"Niue","nl":"Niue","hr":"Niue","fa":"نیووی"},"flag":"https://restcountries.eu/data/niu.svg","regionalBlocs":[],"cioc":""},{"name":"Norfolk Island","topLevelDomain":[".nf"],"alpha2Code":"NF","alpha3Code":"NFK","callingCodes":["672"],"capital":"Kingston","altSpellings":["NF","Territory of Norfolk Island","Teratri of Norf'k Ailen"],"region":"Oceania","subregion":"Australia and New Zealand","population":2302,"latlng":[-29.03333333,167.95],"demonym":"Norfolk Islander","area":36.0,"gini":null,"timezones":["UTC+11:30"],"borders":[],"nativeName":"Norfolk Island","numericCode":"574","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Norfolkinsel","es":"Isla de Norfolk","fr":"Île de Norfolk","ja":"ノーフォーク島","it":"Isola Norfolk","br":"Ilha Norfolk","pt":"Ilha Norfolk","nl":"Norfolkeiland","hr":"Otok Norfolk","fa":"جزیره نورفک"},"flag":"https://restcountries.eu/data/nfk.svg","regionalBlocs":[],"cioc":""},{"name":"Korea (Democratic People's Republic of)","topLevelDomain":[".kp"],"alpha2Code":"KP","alpha3Code":"PRK","callingCodes":["850"],"capital":"Pyongyang","altSpellings":["KP","Democratic People's Republic of Korea","조선민주주의인민공화국","Chosŏn Minjujuŭi Inmin Konghwaguk"],"region":"Asia","subregion":"Eastern Asia","population":25281000,"latlng":[40.0,127.0],"demonym":"North Korean","area":120538.0,"gini":null,"timezones":["UTC+09:00"],"borders":["CHN","KOR","RUS"],"nativeName":"북한","numericCode":"408","currencies":[{"code":"KPW","name":"North Korean won","symbol":"₩"}],"languages":[{"iso639_1":"ko","iso639_2":"kor","name":"Korean","nativeName":"한국어"}],"translations":{"de":"Nordkorea","es":"Corea del Norte","fr":"Corée du Nord","ja":"朝鮮民主主義人民共和国","it":"Corea del Nord","br":"Coreia do Norte","pt":"Coreia do Norte","nl":"Noord-Korea","hr":"Sjeverna Koreja","fa":"کره جنوبی"},"flag":"https://restcountries.eu/data/prk.svg","regionalBlocs":[],"cioc":"PRK"},{"name":"Northern Mariana Islands","topLevelDomain":[".mp"],"alpha2Code":"MP","alpha3Code":"MNP","callingCodes":["1670"],"capital":"Saipan","altSpellings":["MP","Commonwealth of the Northern Mariana Islands","Sankattan Siha Na Islas Mariånas"],"region":"Oceania","subregion":"Micronesia","population":56940,"latlng":[15.2,145.75],"demonym":"American","area":464.0,"gini":null,"timezones":["UTC+10:00"],"borders":[],"nativeName":"Northern Mariana Islands","numericCode":"580","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ch","iso639_2":"cha","name":"Chamorro","nativeName":"Chamoru"}],"translations":{"de":"Nördliche Marianen","es":"Islas Marianas del Norte","fr":"Îles Mariannes du Nord","ja":"北マリアナ諸島","it":"Isole Marianne Settentrionali","br":"Ilhas Marianas","pt":"Ilhas Marianas","nl":"Noordelijke Marianeneilanden","hr":"Sjevernomarijanski otoci","fa":"جزایر ماریانای شمالی"},"flag":"https://restcountries.eu/data/mnp.svg","regionalBlocs":[],"cioc":""},{"name":"Norway","topLevelDomain":[".no"],"alpha2Code":"NO","alpha3Code":"NOR","callingCodes":["47"],"capital":"Oslo","altSpellings":["NO","Norge","Noreg","Kingdom of Norway","Kongeriket Norge","Kongeriket Noreg"],"region":"Europe","subregion":"Northern Europe","population":5223256,"latlng":[62.0,10.0],"demonym":"Norwegian","area":323802.0,"gini":25.8,"timezones":["UTC+01:00"],"borders":["FIN","SWE","RUS"],"nativeName":"Norge","numericCode":"578","currencies":[{"code":"NOK","name":"Norwegian krone","symbol":"kr"}],"languages":[{"iso639_1":"no","iso639_2":"nor","name":"Norwegian","nativeName":"Norsk"},{"iso639_1":"nb","iso639_2":"nob","name":"Norwegian Bokmål","nativeName":"Norsk bokmål"},{"iso639_1":"nn","iso639_2":"nno","name":"Norwegian Nynorsk","nativeName":"Norsk nynorsk"}],"translations":{"de":"Norwegen","es":"Noruega","fr":"Norvège","ja":"ノルウェー","it":"Norvegia","br":"Noruega","pt":"Noruega","nl":"Noorwegen","hr":"Norveška","fa":"نروژ"},"flag":"https://restcountries.eu/data/nor.svg","regionalBlocs":[{"acronym":"EFTA","name":"European Free Trade Association","otherAcronyms":[],"otherNames":[]}],"cioc":"NOR"},{"name":"Oman","topLevelDomain":[".om"],"alpha2Code":"OM","alpha3Code":"OMN","callingCodes":["968"],"capital":"Muscat","altSpellings":["OM","Sultanate of Oman","Salṭanat ʻUmān"],"region":"Asia","subregion":"Western Asia","population":4420133,"latlng":[21.0,57.0],"demonym":"Omani","area":309500.0,"gini":null,"timezones":["UTC+04:00"],"borders":["SAU","ARE","YEM"],"nativeName":"عمان","numericCode":"512","currencies":[{"code":"OMR","name":"Omani rial","symbol":"ر.ع."}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Oman","es":"Omán","fr":"Oman","ja":"オマーン","it":"oman","br":"Omã","pt":"Omã","nl":"Oman","hr":"Oman","fa":"عمان"},"flag":"https://restcountries.eu/data/omn.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"OMA"},{"name":"Pakistan","topLevelDomain":[".pk"],"alpha2Code":"PK","alpha3Code":"PAK","callingCodes":["92"],"capital":"Islamabad","altSpellings":["PK","Pākistān","Islamic Republic of Pakistan","Islāmī Jumhūriya'eh Pākistān"],"region":"Asia","subregion":"Southern Asia","population":194125062,"latlng":[30.0,70.0],"demonym":"Pakistani","area":881912.0,"gini":30.0,"timezones":["UTC+05:00"],"borders":["AFG","CHN","IND","IRN"],"nativeName":"Pakistan","numericCode":"586","currencies":[{"code":"PKR","name":"Pakistani rupee","symbol":"₨"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ur","iso639_2":"urd","name":"Urdu","nativeName":"اردو"}],"translations":{"de":"Pakistan","es":"Pakistán","fr":"Pakistan","ja":"パキスタン","it":"Pakistan","br":"Paquistão","pt":"Paquistão","nl":"Pakistan","hr":"Pakistan","fa":"پاکستان"},"flag":"https://restcountries.eu/data/pak.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"PAK"},{"name":"Palau","topLevelDomain":[".pw"],"alpha2Code":"PW","alpha3Code":"PLW","callingCodes":["680"],"capital":"Ngerulmud","altSpellings":["PW","Republic of Palau","Beluu er a Belau"],"region":"Oceania","subregion":"Micronesia","population":17950,"latlng":[7.5,134.5],"demonym":"Palauan","area":459.0,"gini":null,"timezones":["UTC+09:00"],"borders":[],"nativeName":"Palau","numericCode":"585","currencies":[{"code":"(none)","name":"[E]","symbol":"$"},{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Palau","es":"Palau","fr":"Palaos","ja":"パラオ","it":"Palau","br":"Palau","pt":"Palau","nl":"Palau","hr":"Palau","fa":"پالائو"},"flag":"https://restcountries.eu/data/plw.svg","regionalBlocs":[],"cioc":"PLW"},{"name":"Palestine, State of","topLevelDomain":[".ps"],"alpha2Code":"PS","alpha3Code":"PSE","callingCodes":["970"],"capital":"Ramallah","altSpellings":["PS","State of Palestine","Dawlat Filasṭin"],"region":"Asia","subregion":"Western Asia","population":4682467,"latlng":[31.9,35.2],"demonym":"Palestinian","area":null,"gini":35.5,"timezones":["UTC+02:00"],"borders":["ISR","EGY","JOR"],"nativeName":"فلسطين","numericCode":"275","currencies":[{"code":"ILS","name":"Israeli new sheqel","symbol":"₪"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Palästina","es":"Palestina","fr":"Palestine","ja":"パレスチナ","it":"Palestina","br":"Palestina","pt":"Palestina","nl":"Palestijnse gebieden","hr":"Palestina","fa":"فلسطین"},"flag":"https://restcountries.eu/data/pse.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"PLE"},{"name":"Panama","topLevelDomain":[".pa"],"alpha2Code":"PA","alpha3Code":"PAN","callingCodes":["507"],"capital":"Panama City","altSpellings":["PA","Republic of Panama","República de Panamá"],"region":"Americas","subregion":"Central America","population":3814672,"latlng":[9.0,-80.0],"demonym":"Panamanian","area":75417.0,"gini":51.9,"timezones":["UTC-05:00"],"borders":["COL","CRI"],"nativeName":"Panamá","numericCode":"591","currencies":[{"code":"PAB","name":"Panamanian balboa","symbol":"B/."},{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Panama","es":"Panamá","fr":"Panama","ja":"パナマ","it":"Panama","br":"Panamá","pt":"Panamá","nl":"Panama","hr":"Panama","fa":"پاناما"},"flag":"https://restcountries.eu/data/pan.svg","regionalBlocs":[{"acronym":"CAIS","name":"Central American Integration System","otherAcronyms":["SICA"],"otherNames":["Sistema de la Integración Centroamericana,"]}],"cioc":"PAN"},{"name":"Papua New Guinea","topLevelDomain":[".pg"],"alpha2Code":"PG","alpha3Code":"PNG","callingCodes":["675"],"capital":"Port Moresby","altSpellings":["PG","Independent State of Papua New Guinea","Independen Stet bilong Papua Niugini"],"region":"Oceania","subregion":"Melanesia","population":8083700,"latlng":[-6.0,147.0],"demonym":"Papua New Guinean","area":462840.0,"gini":50.9,"timezones":["UTC+10:00"],"borders":["IDN"],"nativeName":"Papua Niugini","numericCode":"598","currencies":[{"code":"PGK","name":"Papua New Guinean kina","symbol":"K"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Papua-Neuguinea","es":"Papúa Nueva Guinea","fr":"Papouasie-Nouvelle-Guinée","ja":"パプアニューギニア","it":"Papua Nuova Guinea","br":"Papua Nova Guiné","pt":"Papua Nova Guiné","nl":"Papoea-Nieuw-Guinea","hr":"Papua Nova Gvineja","fa":"پاپوآ گینه نو"},"flag":"https://restcountries.eu/data/png.svg","regionalBlocs":[],"cioc":"PNG"},{"name":"Paraguay","topLevelDomain":[".py"],"alpha2Code":"PY","alpha3Code":"PRY","callingCodes":["595"],"capital":"Asunción","altSpellings":["PY","Republic of Paraguay","República del Paraguay","Tetã Paraguái"],"region":"Americas","subregion":"South America","population":6854536,"latlng":[-23.0,-58.0],"demonym":"Paraguayan","area":406752.0,"gini":52.4,"timezones":["UTC-04:00"],"borders":["ARG","BOL","BRA"],"nativeName":"Paraguay","numericCode":"600","currencies":[{"code":"PYG","name":"Paraguayan guaraní","symbol":"₲"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"},{"iso639_1":"gn","iso639_2":"grn","name":"Guaraní","nativeName":"Avañe'ẽ"}],"translations":{"de":"Paraguay","es":"Paraguay","fr":"Paraguay","ja":"パラグアイ","it":"Paraguay","br":"Paraguai","pt":"Paraguai","nl":"Paraguay","hr":"Paragvaj","fa":"پاراگوئه"},"flag":"https://restcountries.eu/data/pry.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"PAR"},{"name":"Peru","topLevelDomain":[".pe"],"alpha2Code":"PE","alpha3Code":"PER","callingCodes":["51"],"capital":"Lima","altSpellings":["PE","Republic of Peru"," República del Perú"],"region":"Americas","subregion":"South America","population":31488700,"latlng":[-10.0,-76.0],"demonym":"Peruvian","area":1285216.0,"gini":48.1,"timezones":["UTC-05:00"],"borders":["BOL","BRA","CHL","COL","ECU"],"nativeName":"Perú","numericCode":"604","currencies":[{"code":"PEN","name":"Peruvian sol","symbol":"S/."}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Peru","es":"Perú","fr":"Pérou","ja":"ペルー","it":"Perù","br":"Peru","pt":"Peru","nl":"Peru","hr":"Peru","fa":"پرو"},"flag":"https://restcountries.eu/data/per.svg","regionalBlocs":[{"acronym":"PA","name":"Pacific Alliance","otherAcronyms":[],"otherNames":["Alianza del Pacífico"]},{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"PER"},{"name":"Philippines","topLevelDomain":[".ph"],"alpha2Code":"PH","alpha3Code":"PHL","callingCodes":["63"],"capital":"Manila","altSpellings":["PH","Republic of the Philippines","Repúblika ng Pilipinas"],"region":"Asia","subregion":"South-Eastern Asia","population":103279800,"latlng":[13.0,122.0],"demonym":"Filipino","area":342353.0,"gini":43.0,"timezones":["UTC+08:00"],"borders":[],"nativeName":"Pilipinas","numericCode":"608","currencies":[{"code":"PHP","name":"Philippine peso","symbol":"₱"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Philippinen","es":"Filipinas","fr":"Philippines","ja":"フィリピン","it":"Filippine","br":"Filipinas","pt":"Filipinas","nl":"Filipijnen","hr":"Filipini","fa":"جزایر الندفیلیپین"},"flag":"https://restcountries.eu/data/phl.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"PHI"},{"name":"Pitcairn","topLevelDomain":[".pn"],"alpha2Code":"PN","alpha3Code":"PCN","callingCodes":["64"],"capital":"Adamstown","altSpellings":["PN","Pitcairn Henderson Ducie and Oeno Islands"],"region":"Oceania","subregion":"Polynesia","population":56,"latlng":[-25.06666666,-130.1],"demonym":"Pitcairn Islander","area":47.0,"gini":null,"timezones":["UTC-08:00"],"borders":[],"nativeName":"Pitcairn Islands","numericCode":"612","currencies":[{"code":"NZD","name":"New Zealand dollar","symbol":"$"},{"code":null,"name":"Pitcairn Islands dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Pitcairn","es":"Islas Pitcairn","fr":"Îles Pitcairn","ja":"ピトケアン","it":"Isole Pitcairn","br":"Ilhas Pitcairn","pt":"Ilhas Picárnia","nl":"Pitcairneilanden","hr":"Pitcairnovo otočje","fa":"پیتکرن"},"flag":"https://restcountries.eu/data/pcn.svg","regionalBlocs":[],"cioc":""},{"name":"Poland","topLevelDomain":[".pl"],"alpha2Code":"PL","alpha3Code":"POL","callingCodes":["48"],"capital":"Warsaw","altSpellings":["PL","Republic of Poland","Rzeczpospolita Polska"],"region":"Europe","subregion":"Eastern Europe","population":38437239,"latlng":[52.0,20.0],"demonym":"Polish","area":312679.0,"gini":34.1,"timezones":["UTC+01:00"],"borders":["BLR","CZE","DEU","LTU","RUS","SVK","UKR"],"nativeName":"Polska","numericCode":"616","currencies":[{"code":"PLN","name":"Polish złoty","symbol":"zł"}],"languages":[{"iso639_1":"pl","iso639_2":"pol","name":"Polish","nativeName":"język polski"}],"translations":{"de":"Polen","es":"Polonia","fr":"Pologne","ja":"ポーランド","it":"Polonia","br":"Polônia","pt":"Polónia","nl":"Polen","hr":"Poljska","fa":"لهستان"},"flag":"https://restcountries.eu/data/pol.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"POL"},{"name":"Portugal","topLevelDomain":[".pt"],"alpha2Code":"PT","alpha3Code":"PRT","callingCodes":["351"],"capital":"Lisbon","altSpellings":["PT","Portuguesa","Portuguese Republic","República Portuguesa"],"region":"Europe","subregion":"Southern Europe","population":10374822,"latlng":[39.5,-8.0],"demonym":"Portuguese","area":92090.0,"gini":38.5,"timezones":["UTC-01:00","UTC"],"borders":["ESP"],"nativeName":"Portugal","numericCode":"620","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Portugal","es":"Portugal","fr":"Portugal","ja":"ポルトガル","it":"Portogallo","br":"Portugal","pt":"Portugal","nl":"Portugal","hr":"Portugal","fa":"پرتغال"},"flag":"https://restcountries.eu/data/prt.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"POR"},{"name":"Puerto Rico","topLevelDomain":[".pr"],"alpha2Code":"PR","alpha3Code":"PRI","callingCodes":["1787","1939"],"capital":"San Juan","altSpellings":["PR","Commonwealth of Puerto Rico","Estado Libre Asociado de Puerto Rico"],"region":"Americas","subregion":"Caribbean","population":3474182,"latlng":[18.25,-66.5],"demonym":"Puerto Rican","area":8870.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Puerto Rico","numericCode":"630","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Puerto Rico","es":"Puerto Rico","fr":"Porto Rico","ja":"プエルトリコ","it":"Porto Rico","br":"Porto Rico","pt":"Porto Rico","nl":"Puerto Rico","hr":"Portoriko","fa":"پورتو ریکو"},"flag":"https://restcountries.eu/data/pri.svg","regionalBlocs":[],"cioc":"PUR"},{"name":"Qatar","topLevelDomain":[".qa"],"alpha2Code":"QA","alpha3Code":"QAT","callingCodes":["974"],"capital":"Doha","altSpellings":["QA","State of Qatar","Dawlat Qaṭar"],"region":"Asia","subregion":"Western Asia","population":2587564,"latlng":[25.5,51.25],"demonym":"Qatari","area":11586.0,"gini":41.1,"timezones":["UTC+03:00"],"borders":["SAU"],"nativeName":"قطر","numericCode":"634","currencies":[{"code":"QAR","name":"Qatari riyal","symbol":"ر.ق"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Katar","es":"Catar","fr":"Qatar","ja":"カタール","it":"Qatar","br":"Catar","pt":"Catar","nl":"Qatar","hr":"Katar","fa":"قطر"},"flag":"https://restcountries.eu/data/qat.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"QAT"},{"name":"Republic of Kosovo","topLevelDomain":[""],"alpha2Code":"XK","alpha3Code":"KOS","callingCodes":["383"],"capital":"Pristina","altSpellings":["XK","Република Косово"],"region":"Europe","subregion":"Eastern Europe","population":1733842,"latlng":[42.666667,21.166667],"demonym":"Kosovar","area":10908.0,"gini":null,"timezones":["UTC+01:00"],"borders":["ALB","MKD","MNE","SRB"],"nativeName":"Republika e Kosovës","numericCode":null,"currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"sq","iso639_2":"sqi","name":"Albanian","nativeName":"Shqip"},{"iso639_1":"sr","iso639_2":"srp","name":"Serbian","nativeName":"српски језик"}],"translations":{"de":null,"es":"Kosovo","fr":null,"ja":null,"it":null,"br":"Kosovo","pt":"Kosovo","nl":null,"hr":"Kosovo","fa":"کوزوو"},"flag":"https://restcountries.eu/data/kos.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":null},{"name":"Réunion","topLevelDomain":[".re"],"alpha2Code":"RE","alpha3Code":"REU","callingCodes":["262"],"capital":"Saint-Denis","altSpellings":["RE","Reunion"],"region":"Africa","subregion":"Eastern Africa","population":840974,"latlng":[-21.15,55.5],"demonym":"French","area":null,"gini":null,"timezones":["UTC+04:00"],"borders":[],"nativeName":"La Réunion","numericCode":"638","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Réunion","es":"Reunión","fr":"Réunion","ja":"レユニオン","it":"Riunione","br":"Reunião","pt":"Reunião","nl":"Réunion","hr":"Réunion","fa":"رئونیون"},"flag":"https://restcountries.eu/data/reu.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"Romania","topLevelDomain":[".ro"],"alpha2Code":"RO","alpha3Code":"ROU","callingCodes":["40"],"capital":"Bucharest","altSpellings":["RO","Rumania","Roumania","România"],"region":"Europe","subregion":"Eastern Europe","population":19861408,"latlng":[46.0,25.0],"demonym":"Romanian","area":238391.0,"gini":30.0,"timezones":["UTC+02:00"],"borders":["BGR","HUN","MDA","SRB","UKR"],"nativeName":"România","numericCode":"642","currencies":[{"code":"RON","name":"Romanian leu","symbol":"lei"}],"languages":[{"iso639_1":"ro","iso639_2":"ron","name":"Romanian","nativeName":"Română"}],"translations":{"de":"Rumänien","es":"Rumania","fr":"Roumanie","ja":"ルーマニア","it":"Romania","br":"Romênia","pt":"Roménia","nl":"Roemenië","hr":"Rumunjska","fa":"رومانی"},"flag":"https://restcountries.eu/data/rou.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"ROU"},{"name":"Russian Federation","topLevelDomain":[".ru"],"alpha2Code":"RU","alpha3Code":"RUS","callingCodes":["7"],"capital":"Moscow","altSpellings":["RU","Rossiya","Russian Federation","Российская Федерация","Rossiyskaya Federatsiya"],"region":"Europe","subregion":"Eastern Europe","population":146599183,"latlng":[60.0,100.0],"demonym":"Russian","area":1.7124442E7,"gini":40.1,"timezones":["UTC+03:00","UTC+04:00","UTC+06:00","UTC+07:00","UTC+08:00","UTC+09:00","UTC+10:00","UTC+11:00","UTC+12:00"],"borders":["AZE","BLR","CHN","EST","FIN","GEO","KAZ","PRK","LVA","LTU","MNG","NOR","POL","UKR"],"nativeName":"Россия","numericCode":"643","currencies":[{"code":"RUB","name":"Russian ruble","symbol":"₽"}],"languages":[{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Russland","es":"Rusia","fr":"Russie","ja":"ロシア連邦","it":"Russia","br":"Rússia","pt":"Rússia","nl":"Rusland","hr":"Rusija","fa":"روسیه"},"flag":"https://restcountries.eu/data/rus.svg","regionalBlocs":[{"acronym":"EEU","name":"Eurasian Economic Union","otherAcronyms":["EAEU"],"otherNames":[]}],"cioc":"RUS"},{"name":"Rwanda","topLevelDomain":[".rw"],"alpha2Code":"RW","alpha3Code":"RWA","callingCodes":["250"],"capital":"Kigali","altSpellings":["RW","Republic of Rwanda","Repubulika y'u Rwanda","République du Rwanda"],"region":"Africa","subregion":"Eastern Africa","population":11553188,"latlng":[-2.0,30.0],"demonym":"Rwandan","area":26338.0,"gini":50.8,"timezones":["UTC+02:00"],"borders":["BDI","COD","TZA","UGA"],"nativeName":"Rwanda","numericCode":"646","currencies":[{"code":"RWF","name":"Rwandan franc","symbol":"Fr"}],"languages":[{"iso639_1":"rw","iso639_2":"kin","name":"Kinyarwanda","nativeName":"Ikinyarwanda"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Ruanda","es":"Ruanda","fr":"Rwanda","ja":"ルワンダ","it":"Ruanda","br":"Ruanda","pt":"Ruanda","nl":"Rwanda","hr":"Ruanda","fa":"رواندا"},"flag":"https://restcountries.eu/data/rwa.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"RWA"},{"name":"Saint Barthélemy","topLevelDomain":[".bl"],"alpha2Code":"BL","alpha3Code":"BLM","callingCodes":["590"],"capital":"Gustavia","altSpellings":["BL","St. Barthelemy","Collectivity of Saint Barthélemy","Collectivité de Saint-Barthélemy"],"region":"Americas","subregion":"Caribbean","population":9417,"latlng":[18.5,-63.41666666],"demonym":"Saint Barthélemy Islander","area":21.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Saint-Barthélemy","numericCode":"652","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Saint-Barthélemy","es":"San Bartolomé","fr":"Saint-Barthélemy","ja":"サン・バルテルミー","it":"Antille Francesi","br":"São Bartolomeu","pt":"São Bartolomeu","nl":"Saint Barthélemy","hr":"Saint Barthélemy","fa":"سن-بارتلمی"},"flag":"https://restcountries.eu/data/blm.svg","regionalBlocs":[],"cioc":""},{"name":"Saint Helena, Ascension and Tristan da Cunha","topLevelDomain":[".sh"],"alpha2Code":"SH","alpha3Code":"SHN","callingCodes":["290"],"capital":"Jamestown","altSpellings":["SH"],"region":"Africa","subregion":"Western Africa","population":4255,"latlng":[-15.95,-5.7],"demonym":"Saint Helenian","area":null,"gini":null,"timezones":["UTC+00:00"],"borders":[],"nativeName":"Saint Helena","numericCode":"654","currencies":[{"code":"SHP","name":"Saint Helena pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Sankt Helena","es":"Santa Helena","fr":"Sainte-Hélène","ja":"セントヘレナ・アセンションおよびトリスタンダクーニャ","it":"Sant'Elena","br":"Santa Helena","pt":"Santa Helena","nl":"Sint-Helena","hr":"Sveta Helena","fa":"سنت هلنا، اسنشن و تریستان دا کونا"},"flag":"https://restcountries.eu/data/shn.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":null},{"name":"Saint Kitts and Nevis","topLevelDomain":[".kn"],"alpha2Code":"KN","alpha3Code":"KNA","callingCodes":["1869"],"capital":"Basseterre","altSpellings":["KN","Federation of Saint Christopher and Nevis"],"region":"Americas","subregion":"Caribbean","population":46204,"latlng":[17.33333333,-62.75],"demonym":"Kittian and Nevisian","area":261.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Saint Kitts and Nevis","numericCode":"659","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"St. Kitts und Nevis","es":"San Cristóbal y Nieves","fr":"Saint-Christophe-et-Niévès","ja":"セントクリストファー・ネイビス","it":"Saint Kitts e Nevis","br":"São Cristóvão e Neves","pt":"São Cristóvão e Neves","nl":"Saint Kitts en Nevis","hr":"Sveti Kristof i Nevis","fa":"سنت کیتس و نویس"},"flag":"https://restcountries.eu/data/kna.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"SKN"},{"name":"Saint Lucia","topLevelDomain":[".lc"],"alpha2Code":"LC","alpha3Code":"LCA","callingCodes":["1758"],"capital":"Castries","altSpellings":["LC"],"region":"Americas","subregion":"Caribbean","population":186000,"latlng":[13.88333333,-60.96666666],"demonym":"Saint Lucian","area":616.0,"gini":42.6,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Saint Lucia","numericCode":"662","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Saint Lucia","es":"Santa Lucía","fr":"Saint-Lucie","ja":"セントルシア","it":"Santa Lucia","br":"Santa Lúcia","pt":"Santa Lúcia","nl":"Saint Lucia","hr":"Sveta Lucija","fa":"سنت لوسیا"},"flag":"https://restcountries.eu/data/lca.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"LCA"},{"name":"Saint Martin (French part)","topLevelDomain":[".mf",".fr",".gp"],"alpha2Code":"MF","alpha3Code":"MAF","callingCodes":["590"],"capital":"Marigot","altSpellings":["MF","Collectivity of Saint Martin","Collectivité de Saint-Martin"],"region":"Americas","subregion":"Caribbean","population":36979,"latlng":[18.08333333,-63.95],"demonym":"Saint Martin Islander","area":53.0,"gini":null,"timezones":["UTC-04:00"],"borders":["SXM","NLD"],"nativeName":"Saint-Martin","numericCode":"663","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"}],"translations":{"de":"Saint Martin","es":"Saint Martin","fr":"Saint-Martin","ja":"サン・マルタン(フランス領)","it":"Saint Martin","br":"Saint Martin","pt":"Ilha São Martinho","nl":"Saint-Martin","hr":"Sveti Martin","fa":"سینت مارتن"},"flag":"https://restcountries.eu/data/maf.svg","regionalBlocs":[],"cioc":""},{"name":"Saint Pierre and Miquelon","topLevelDomain":[".pm"],"alpha2Code":"PM","alpha3Code":"SPM","callingCodes":["508"],"capital":"Saint-Pierre","altSpellings":["PM","Collectivité territoriale de Saint-Pierre-et-Miquelon"],"region":"Americas","subregion":"Northern America","population":6069,"latlng":[46.83333333,-56.33333333],"demonym":"French","area":242.0,"gini":null,"timezones":["UTC-03:00"],"borders":[],"nativeName":"Saint-Pierre-et-Miquelon","numericCode":"666","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Saint-Pierre und Miquelon","es":"San Pedro y Miquelón","fr":"Saint-Pierre-et-Miquelon","ja":"サンピエール島・ミクロン島","it":"Saint-Pierre e Miquelon","br":"Saint-Pierre e Miquelon","pt":"São Pedro e Miquelon","nl":"Saint Pierre en Miquelon","hr":"Sveti Petar i Mikelon","fa":"سن پیر و میکلن"},"flag":"https://restcountries.eu/data/spm.svg","regionalBlocs":[],"cioc":""},{"name":"Saint Vincent and the Grenadines","topLevelDomain":[".vc"],"alpha2Code":"VC","alpha3Code":"VCT","callingCodes":["1784"],"capital":"Kingstown","altSpellings":["VC"],"region":"Americas","subregion":"Caribbean","population":109991,"latlng":[13.25,-61.2],"demonym":"Saint Vincentian","area":389.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Saint Vincent and the Grenadines","numericCode":"670","currencies":[{"code":"XCD","name":"East Caribbean dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Saint Vincent und die Grenadinen","es":"San Vicente y Granadinas","fr":"Saint-Vincent-et-les-Grenadines","ja":"セントビンセントおよびグレナディーン諸島","it":"Saint Vincent e Grenadine","br":"São Vicente e Granadinas","pt":"São Vicente e Granadinas","nl":"Saint Vincent en de Grenadines","hr":"Sveti Vincent i Grenadini","fa":"سنت وینسنت و گرنادین‌ها"},"flag":"https://restcountries.eu/data/vct.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"VIN"},{"name":"Samoa","topLevelDomain":[".ws"],"alpha2Code":"WS","alpha3Code":"WSM","callingCodes":["685"],"capital":"Apia","altSpellings":["WS","Independent State of Samoa","Malo Saʻoloto Tutoʻatasi o Sāmoa"],"region":"Oceania","subregion":"Polynesia","population":194899,"latlng":[-13.58333333,-172.33333333],"demonym":"Samoan","area":2842.0,"gini":null,"timezones":["UTC+13:00"],"borders":[],"nativeName":"Samoa","numericCode":"882","currencies":[{"code":"WST","name":"Samoan tālā","symbol":"T"}],"languages":[{"iso639_1":"sm","iso639_2":"smo","name":"Samoan","nativeName":"gagana fa'a Samoa"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Samoa","es":"Samoa","fr":"Samoa","ja":"サモア","it":"Samoa","br":"Samoa","pt":"Samoa","nl":"Samoa","hr":"Samoa","fa":"ساموآ"},"flag":"https://restcountries.eu/data/wsm.svg","regionalBlocs":[],"cioc":"SAM"},{"name":"San Marino","topLevelDomain":[".sm"],"alpha2Code":"SM","alpha3Code":"SMR","callingCodes":["378"],"capital":"City of San Marino","altSpellings":["SM","Republic of San Marino","Repubblica di San Marino"],"region":"Europe","subregion":"Southern Europe","population":33005,"latlng":[43.76666666,12.41666666],"demonym":"Sammarinese","area":61.0,"gini":null,"timezones":["UTC+01:00"],"borders":["ITA"],"nativeName":"San Marino","numericCode":"674","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"it","iso639_2":"ita","name":"Italian","nativeName":"Italiano"}],"translations":{"de":"San Marino","es":"San Marino","fr":"Saint-Marin","ja":"サンマリノ","it":"San Marino","br":"San Marino","pt":"São Marinho","nl":"San Marino","hr":"San Marino","fa":"سان مارینو"},"flag":"https://restcountries.eu/data/smr.svg","regionalBlocs":[],"cioc":"SMR"},{"name":"Sao Tome and Principe","topLevelDomain":[".st"],"alpha2Code":"ST","alpha3Code":"STP","callingCodes":["239"],"capital":"São Tomé","altSpellings":["ST","Democratic Republic of São Tomé and Príncipe","República Democrática de São Tomé e Príncipe"],"region":"Africa","subregion":"Middle Africa","population":187356,"latlng":[1.0,7.0],"demonym":"Sao Tomean","area":964.0,"gini":50.8,"timezones":["UTC"],"borders":[],"nativeName":"São Tomé e Príncipe","numericCode":"678","currencies":[{"code":"STD","name":"São Tomé and Príncipe dobra","symbol":"Db"}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"São Tomé und Príncipe","es":"Santo Tomé y Príncipe","fr":"Sao Tomé-et-Principe","ja":"サントメ・プリンシペ","it":"São Tomé e Príncipe","br":"São Tomé e Príncipe","pt":"São Tomé e Príncipe","nl":"Sao Tomé en Principe","hr":"Sveti Toma i Princip","fa":"کواترو دو فرویرو"},"flag":"https://restcountries.eu/data/stp.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"STP"},{"name":"Saudi Arabia","topLevelDomain":[".sa"],"alpha2Code":"SA","alpha3Code":"SAU","callingCodes":["966"],"capital":"Riyadh","altSpellings":["SA","Kingdom of Saudi Arabia","Al-Mamlakah al-‘Arabiyyah as-Su‘ūdiyyah"],"region":"Asia","subregion":"Western Asia","population":32248200,"latlng":[25.0,45.0],"demonym":"Saudi Arabian","area":2149690.0,"gini":null,"timezones":["UTC+03:00"],"borders":["IRQ","JOR","KWT","OMN","QAT","ARE","YEM"],"nativeName":"العربية السعودية","numericCode":"682","currencies":[{"code":"SAR","name":"Saudi riyal","symbol":"ر.س"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Saudi-Arabien","es":"Arabia Saudí","fr":"Arabie Saoudite","ja":"サウジアラビア","it":"Arabia Saudita","br":"Arábia Saudita","pt":"Arábia Saudita","nl":"Saoedi-Arabië","hr":"Saudijska Arabija","fa":"عربستان سعودی"},"flag":"https://restcountries.eu/data/sau.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"KSA"},{"name":"Senegal","topLevelDomain":[".sn"],"alpha2Code":"SN","alpha3Code":"SEN","callingCodes":["221"],"capital":"Dakar","altSpellings":["SN","Republic of Senegal","République du Sénégal"],"region":"Africa","subregion":"Western Africa","population":14799859,"latlng":[14.0,-14.0],"demonym":"Senegalese","area":196722.0,"gini":39.2,"timezones":["UTC"],"borders":["GMB","GIN","GNB","MLI","MRT"],"nativeName":"Sénégal","numericCode":"686","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Senegal","es":"Senegal","fr":"Sénégal","ja":"セネガル","it":"Senegal","br":"Senegal","pt":"Senegal","nl":"Senegal","hr":"Senegal","fa":"سنگال"},"flag":"https://restcountries.eu/data/sen.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"SEN"},{"name":"Serbia","topLevelDomain":[".rs"],"alpha2Code":"RS","alpha3Code":"SRB","callingCodes":["381"],"capital":"Belgrade","altSpellings":["RS","Srbija","Republic of Serbia","Република Србија","Republika Srbija"],"region":"Europe","subregion":"Southern Europe","population":7076372,"latlng":[44.0,21.0],"demonym":"Serbian","area":88361.0,"gini":27.8,"timezones":["UTC+01:00"],"borders":["BIH","BGR","HRV","HUN","KOS","MKD","MNE","ROU"],"nativeName":"Србија","numericCode":"688","currencies":[{"code":"RSD","name":"Serbian dinar","symbol":"дин."}],"languages":[{"iso639_1":"sr","iso639_2":"srp","name":"Serbian","nativeName":"српски језик"}],"translations":{"de":"Serbien","es":"Serbia","fr":"Serbie","ja":"セルビア","it":"Serbia","br":"Sérvia","pt":"Sérvia","nl":"Servië","hr":"Srbija","fa":"صربستان"},"flag":"https://restcountries.eu/data/srb.svg","regionalBlocs":[{"acronym":"CEFTA","name":"Central European Free Trade Agreement","otherAcronyms":[],"otherNames":[]}],"cioc":"SRB"},{"name":"Seychelles","topLevelDomain":[".sc"],"alpha2Code":"SC","alpha3Code":"SYC","callingCodes":["248"],"capital":"Victoria","altSpellings":["SC","Republic of Seychelles","Repiblik Sesel","République des Seychelles"],"region":"Africa","subregion":"Eastern Africa","population":91400,"latlng":[-4.58333333,55.66666666],"demonym":"Seychellois","area":452.0,"gini":65.8,"timezones":["UTC+04:00"],"borders":[],"nativeName":"Seychelles","numericCode":"690","currencies":[{"code":"SCR","name":"Seychellois rupee","symbol":"₨"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Seychellen","es":"Seychelles","fr":"Seychelles","ja":"セーシェル","it":"Seychelles","br":"Seicheles","pt":"Seicheles","nl":"Seychellen","hr":"Sejšeli","fa":"سیشل"},"flag":"https://restcountries.eu/data/syc.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"SEY"},{"name":"Sierra Leone","topLevelDomain":[".sl"],"alpha2Code":"SL","alpha3Code":"SLE","callingCodes":["232"],"capital":"Freetown","altSpellings":["SL","Republic of Sierra Leone"],"region":"Africa","subregion":"Western Africa","population":7075641,"latlng":[8.5,-11.5],"demonym":"Sierra Leonean","area":71740.0,"gini":42.5,"timezones":["UTC"],"borders":["GIN","LBR"],"nativeName":"Sierra Leone","numericCode":"694","currencies":[{"code":"SLL","name":"Sierra Leonean leone","symbol":"Le"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Sierra Leone","es":"Sierra Leone","fr":"Sierra Leone","ja":"シエラレオネ","it":"Sierra Leone","br":"Serra Leoa","pt":"Serra Leoa","nl":"Sierra Leone","hr":"Sijera Leone","fa":"سیرالئون"},"flag":"https://restcountries.eu/data/sle.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"SLE"},{"name":"Singapore","topLevelDomain":[".sg"],"alpha2Code":"SG","alpha3Code":"SGP","callingCodes":["65"],"capital":"Singapore","altSpellings":["SG","Singapura","Republik Singapura","新加坡共和国"],"region":"Asia","subregion":"South-Eastern Asia","population":5535000,"latlng":[1.36666666,103.8],"demonym":"Singaporean","area":710.0,"gini":48.1,"timezones":["UTC+08:00"],"borders":[],"nativeName":"Singapore","numericCode":"702","currencies":[{"code":"BND","name":"Brunei dollar","symbol":"$"},{"code":"SGD","name":"Singapore dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ms","iso639_2":"msa","name":"Malay","nativeName":"bahasa Melayu"},{"iso639_1":"ta","iso639_2":"tam","name":"Tamil","nativeName":"தமிழ்"},{"iso639_1":"zh","iso639_2":"zho","name":"Chinese","nativeName":"中文 (Zhōngwén)"}],"translations":{"de":"Singapur","es":"Singapur","fr":"Singapour","ja":"シンガポール","it":"Singapore","br":"Singapura","pt":"Singapura","nl":"Singapore","hr":"Singapur","fa":"سنگاپور"},"flag":"https://restcountries.eu/data/sgp.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"SIN"},{"name":"Sint Maarten (Dutch part)","topLevelDomain":[".sx"],"alpha2Code":"SX","alpha3Code":"SXM","callingCodes":["1721"],"capital":"Philipsburg","altSpellings":["SX"],"region":"Americas","subregion":"Caribbean","population":38247,"latlng":[18.033333,-63.05],"demonym":"Dutch","area":34.0,"gini":null,"timezones":["UTC-04:00"],"borders":["MAF"],"nativeName":"Sint Maarten","numericCode":"534","currencies":[{"code":"ANG","name":"Netherlands Antillean guilder","symbol":"ƒ"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Sint Maarten (niederl. Teil)","es":null,"fr":"Saint Martin (partie néerlandaise)","ja":null,"it":"Saint Martin (parte olandese)","br":"Sint Maarten","pt":"São Martinho","nl":"Sint Maarten","hr":null,"fa":"سینت مارتن"},"flag":"https://restcountries.eu/data/sxm.svg","regionalBlocs":[],"cioc":""},{"name":"Slovakia","topLevelDomain":[".sk"],"alpha2Code":"SK","alpha3Code":"SVK","callingCodes":["421"],"capital":"Bratislava","altSpellings":["SK","Slovak Republic","Slovenská republika"],"region":"Europe","subregion":"Eastern Europe","population":5426252,"latlng":[48.66666666,19.5],"demonym":"Slovak","area":49037.0,"gini":26.0,"timezones":["UTC+01:00"],"borders":["AUT","CZE","HUN","POL","UKR"],"nativeName":"Slovensko","numericCode":"703","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"sk","iso639_2":"slk","name":"Slovak","nativeName":"slovenčina"}],"translations":{"de":"Slowakei","es":"República Eslovaca","fr":"Slovaquie","ja":"スロバキア","it":"Slovacchia","br":"Eslováquia","pt":"Eslováquia","nl":"Slowakije","hr":"Slovačka","fa":"اسلواکی"},"flag":"https://restcountries.eu/data/svk.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"SVK"},{"name":"Slovenia","topLevelDomain":[".si"],"alpha2Code":"SI","alpha3Code":"SVN","callingCodes":["386"],"capital":"Ljubljana","altSpellings":["SI","Republic of Slovenia","Republika Slovenija"],"region":"Europe","subregion":"Southern Europe","population":2064188,"latlng":[46.11666666,14.81666666],"demonym":"Slovene","area":20273.0,"gini":31.2,"timezones":["UTC+01:00"],"borders":["AUT","HRV","ITA","HUN"],"nativeName":"Slovenija","numericCode":"705","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"sl","iso639_2":"slv","name":"Slovene","nativeName":"slovenski jezik"}],"translations":{"de":"Slowenien","es":"Eslovenia","fr":"Slovénie","ja":"スロベニア","it":"Slovenia","br":"Eslovênia","pt":"Eslovénia","nl":"Slovenië","hr":"Slovenija","fa":"اسلوونی"},"flag":"https://restcountries.eu/data/svn.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"SLO"},{"name":"Solomon Islands","topLevelDomain":[".sb"],"alpha2Code":"SB","alpha3Code":"SLB","callingCodes":["677"],"capital":"Honiara","altSpellings":["SB"],"region":"Oceania","subregion":"Melanesia","population":642000,"latlng":[-8.0,159.0],"demonym":"Solomon Islander","area":28896.0,"gini":null,"timezones":["UTC+11:00"],"borders":[],"nativeName":"Solomon Islands","numericCode":"090","currencies":[{"code":"SBD","name":"Solomon Islands dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Salomonen","es":"Islas Salomón","fr":"Îles Salomon","ja":"ソロモン諸島","it":"Isole Salomone","br":"Ilhas Salomão","pt":"Ilhas Salomão","nl":"Salomonseilanden","hr":"Solomonski Otoci","fa":"جزایر سلیمان"},"flag":"https://restcountries.eu/data/slb.svg","regionalBlocs":[],"cioc":"SOL"},{"name":"Somalia","topLevelDomain":[".so"],"alpha2Code":"SO","alpha3Code":"SOM","callingCodes":["252"],"capital":"Mogadishu","altSpellings":["SO","aṣ-Ṣūmāl","Federal Republic of Somalia","Jamhuuriyadda Federaalka Soomaaliya","Jumhūriyyat aṣ-Ṣūmāl al-Fiderāliyya"],"region":"Africa","subregion":"Eastern Africa","population":11079000,"latlng":[10.0,49.0],"demonym":"Somali","area":637657.0,"gini":null,"timezones":["UTC+03:00"],"borders":["DJI","ETH","KEN"],"nativeName":"Soomaaliya","numericCode":"706","currencies":[{"code":"SOS","name":"Somali shilling","symbol":"Sh"}],"languages":[{"iso639_1":"so","iso639_2":"som","name":"Somali","nativeName":"Soomaaliga"},{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Somalia","es":"Somalia","fr":"Somalie","ja":"ソマリア","it":"Somalia","br":"Somália","pt":"Somália","nl":"Somalië","hr":"Somalija","fa":"سومالی"},"flag":"https://restcountries.eu/data/som.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"SOM"},{"name":"South Africa","topLevelDomain":[".za"],"alpha2Code":"ZA","alpha3Code":"ZAF","callingCodes":["27"],"capital":"Pretoria","altSpellings":["ZA","RSA","Suid-Afrika","Republic of South Africa"],"region":"Africa","subregion":"Southern Africa","population":55653654,"latlng":[-29.0,24.0],"demonym":"South African","area":1221037.0,"gini":63.1,"timezones":["UTC+02:00"],"borders":["BWA","LSO","MOZ","NAM","SWZ","ZWE"],"nativeName":"South Africa","numericCode":"710","currencies":[{"code":"ZAR","name":"South African rand","symbol":"R"}],"languages":[{"iso639_1":"af","iso639_2":"afr","name":"Afrikaans","nativeName":"Afrikaans"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"nr","iso639_2":"nbl","name":"Southern Ndebele","nativeName":"isiNdebele"},{"iso639_1":"st","iso639_2":"sot","name":"Southern Sotho","nativeName":"Sesotho"},{"iso639_1":"ss","iso639_2":"ssw","name":"Swati","nativeName":"SiSwati"},{"iso639_1":"tn","iso639_2":"tsn","name":"Tswana","nativeName":"Setswana"},{"iso639_1":"ts","iso639_2":"tso","name":"Tsonga","nativeName":"Xitsonga"},{"iso639_1":"ve","iso639_2":"ven","name":"Venda","nativeName":"Tshivenḓa"},{"iso639_1":"xh","iso639_2":"xho","name":"Xhosa","nativeName":"isiXhosa"},{"iso639_1":"zu","iso639_2":"zul","name":"Zulu","nativeName":"isiZulu"}],"translations":{"de":"Republik Südafrika","es":"República de Sudáfrica","fr":"Afrique du Sud","ja":"南アフリカ","it":"Sud Africa","br":"República Sul-Africana","pt":"República Sul-Africana","nl":"Zuid-Afrika","hr":"Južnoafrička Republika","fa":"آفریقای جنوبی"},"flag":"https://restcountries.eu/data/zaf.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"RSA"},{"name":"South Georgia and the South Sandwich Islands","topLevelDomain":[".gs"],"alpha2Code":"GS","alpha3Code":"SGS","callingCodes":["500"],"capital":"King Edward Point","altSpellings":["GS","South Georgia and the South Sandwich Islands"],"region":"Americas","subregion":"South America","population":30,"latlng":[-54.5,-37.0],"demonym":"South Georgia and the South Sandwich Islander","area":null,"gini":null,"timezones":["UTC-02:00"],"borders":[],"nativeName":"South Georgia","numericCode":"239","currencies":[{"code":"GBP","name":"British pound","symbol":"£"},{"code":"(none)","name":null,"symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Südgeorgien und die Südlichen Sandwichinseln","es":"Islas Georgias del Sur y Sandwich del Sur","fr":"Géorgie du Sud-et-les Îles Sandwich du Sud","ja":"サウスジョージア・サウスサンドウィッチ諸島","it":"Georgia del Sud e Isole Sandwich Meridionali","br":"Ilhas Geórgias do Sul e Sandwich do Sul","pt":"Ilhas Geórgia do Sul e Sanduíche do Sul","nl":"Zuid-Georgia en Zuidelijke Sandwicheilanden","hr":"Južna Georgija i otočje Južni Sandwich","fa":"جزایر جورجیای جنوبی و ساندویچ جنوبی"},"flag":"https://restcountries.eu/data/sgs.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":""},{"name":"Korea (Republic of)","topLevelDomain":[".kr"],"alpha2Code":"KR","alpha3Code":"KOR","callingCodes":["82"],"capital":"Seoul","altSpellings":["KR","Republic of Korea"],"region":"Asia","subregion":"Eastern Asia","population":50801405,"latlng":[37.0,127.5],"demonym":"South Korean","area":100210.0,"gini":31.3,"timezones":["UTC+09:00"],"borders":["PRK"],"nativeName":"대한민국","numericCode":"410","currencies":[{"code":"KRW","name":"South Korean won","symbol":"₩"}],"languages":[{"iso639_1":"ko","iso639_2":"kor","name":"Korean","nativeName":"한국어"}],"translations":{"de":"Südkorea","es":"Corea del Sur","fr":"Corée du Sud","ja":"大韓民国","it":"Corea del Sud","br":"Coreia do Sul","pt":"Coreia do Sul","nl":"Zuid-Korea","hr":"Južna Koreja","fa":"کره شمالی"},"flag":"https://restcountries.eu/data/kor.svg","regionalBlocs":[],"cioc":"KOR"},{"name":"South Sudan","topLevelDomain":[".ss"],"alpha2Code":"SS","alpha3Code":"SSD","callingCodes":["211"],"capital":"Juba","altSpellings":["SS"],"region":"Africa","subregion":"Middle Africa","population":12131000,"latlng":[7.0,30.0],"demonym":"South Sudanese","area":619745.0,"gini":45.5,"timezones":["UTC+03:00"],"borders":["CAF","COD","ETH","KEN","SDN","UGA"],"nativeName":"South Sudan","numericCode":"728","currencies":[{"code":"SSP","name":"South Sudanese pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Südsudan","es":"Sudán del Sur","fr":"Soudan du Sud","ja":"南スーダン","it":"Sudan del sud","br":"Sudão do Sul","pt":"Sudão do Sul","nl":"Zuid-Soedan","hr":"Južni Sudan","fa":"سودان جنوبی"},"flag":"https://restcountries.eu/data/ssd.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"Spain","topLevelDomain":[".es"],"alpha2Code":"ES","alpha3Code":"ESP","callingCodes":["34"],"capital":"Madrid","altSpellings":["ES","Kingdom of Spain","Reino de España"],"region":"Europe","subregion":"Southern Europe","population":46438422,"latlng":[40.0,-4.0],"demonym":"Spanish","area":505992.0,"gini":34.7,"timezones":["UTC","UTC+01:00"],"borders":["AND","FRA","GIB","PRT","MAR"],"nativeName":"España","numericCode":"724","currencies":[{"code":"EUR","name":"Euro","symbol":"€"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Spanien","es":"España","fr":"Espagne","ja":"スペイン","it":"Spagna","br":"Espanha","pt":"Espanha","nl":"Spanje","hr":"Španjolska","fa":"اسپانیا"},"flag":"https://restcountries.eu/data/esp.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"ESP"},{"name":"Sri Lanka","topLevelDomain":[".lk"],"alpha2Code":"LK","alpha3Code":"LKA","callingCodes":["94"],"capital":"Colombo","altSpellings":["LK","ilaṅkai","Democratic Socialist Republic of Sri Lanka"],"region":"Asia","subregion":"Southern Asia","population":20966000,"latlng":[7.0,81.0],"demonym":"Sri Lankan","area":65610.0,"gini":40.3,"timezones":["UTC+05:30"],"borders":["IND"],"nativeName":"śrī laṃkāva","numericCode":"144","currencies":[{"code":"LKR","name":"Sri Lankan rupee","symbol":"Rs"}],"languages":[{"iso639_1":"si","iso639_2":"sin","name":"Sinhalese","nativeName":"සිංහල"},{"iso639_1":"ta","iso639_2":"tam","name":"Tamil","nativeName":"தமிழ்"}],"translations":{"de":"Sri Lanka","es":"Sri Lanka","fr":"Sri Lanka","ja":"スリランカ","it":"Sri Lanka","br":"Sri Lanka","pt":"Sri Lanka","nl":"Sri Lanka","hr":"Šri Lanka","fa":"سری‌لانکا"},"flag":"https://restcountries.eu/data/lka.svg","regionalBlocs":[{"acronym":"SAARC","name":"South Asian Association for Regional Cooperation","otherAcronyms":[],"otherNames":[]}],"cioc":"SRI"},{"name":"Sudan","topLevelDomain":[".sd"],"alpha2Code":"SD","alpha3Code":"SDN","callingCodes":["249"],"capital":"Khartoum","altSpellings":["SD","Republic of the Sudan","Jumhūrīyat as-Sūdān"],"region":"Africa","subregion":"Northern Africa","population":39598700,"latlng":[15.0,30.0],"demonym":"Sudanese","area":1886068.0,"gini":35.3,"timezones":["UTC+03:00"],"borders":["CAF","TCD","EGY","ERI","ETH","LBY","SSD"],"nativeName":"السودان","numericCode":"729","currencies":[{"code":"SDG","name":"Sudanese pound","symbol":"ج.س."}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Sudan","es":"Sudán","fr":"Soudan","ja":"スーダン","it":"Sudan","br":"Sudão","pt":"Sudão","nl":"Soedan","hr":"Sudan","fa":"سودان"},"flag":"https://restcountries.eu/data/sdn.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"SUD"},{"name":"Suriname","topLevelDomain":[".sr"],"alpha2Code":"SR","alpha3Code":"SUR","callingCodes":["597"],"capital":"Paramaribo","altSpellings":["SR","Sarnam","Sranangron","Republic of Suriname","Republiek Suriname"],"region":"Americas","subregion":"South America","population":541638,"latlng":[4.0,-56.0],"demonym":"Surinamer","area":163820.0,"gini":52.9,"timezones":["UTC-03:00"],"borders":["BRA","GUF","FRA","GUY"],"nativeName":"Suriname","numericCode":"740","currencies":[{"code":"SRD","name":"Surinamese dollar","symbol":"$"}],"languages":[{"iso639_1":"nl","iso639_2":"nld","name":"Dutch","nativeName":"Nederlands"}],"translations":{"de":"Suriname","es":"Surinam","fr":"Surinam","ja":"スリナム","it":"Suriname","br":"Suriname","pt":"Suriname","nl":"Suriname","hr":"Surinam","fa":"سورینام"},"flag":"https://restcountries.eu/data/sur.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]},{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"SUR"},{"name":"Svalbard and Jan Mayen","topLevelDomain":[".sj"],"alpha2Code":"SJ","alpha3Code":"SJM","callingCodes":["4779"],"capital":"Longyearbyen","altSpellings":["SJ","Svalbard and Jan Mayen Islands"],"region":"Europe","subregion":"Northern Europe","population":2562,"latlng":[78.0,20.0],"demonym":"Norwegian","area":null,"gini":null,"timezones":["UTC+01:00"],"borders":[],"nativeName":"Svalbard og Jan Mayen","numericCode":"744","currencies":[{"code":"NOK","name":"Norwegian krone","symbol":"kr"}],"languages":[{"iso639_1":"no","iso639_2":"nor","name":"Norwegian","nativeName":"Norsk"}],"translations":{"de":"Svalbard und Jan Mayen","es":"Islas Svalbard y Jan Mayen","fr":"Svalbard et Jan Mayen","ja":"スヴァールバル諸島およびヤンマイエン島","it":"Svalbard e Jan Mayen","br":"Svalbard","pt":"Svalbard","nl":"Svalbard en Jan Mayen","hr":"Svalbard i Jan Mayen","fa":"سوالبارد و یان ماین"},"flag":"https://restcountries.eu/data/sjm.svg","regionalBlocs":[],"cioc":""},{"name":"Swaziland","topLevelDomain":[".sz"],"alpha2Code":"SZ","alpha3Code":"SWZ","callingCodes":["268"],"capital":"Lobamba","altSpellings":["SZ","weSwatini","Swatini","Ngwane","Kingdom of Swaziland","Umbuso waseSwatini"],"region":"Africa","subregion":"Southern Africa","population":1132657,"latlng":[-26.5,31.5],"demonym":"Swazi","area":17364.0,"gini":51.5,"timezones":["UTC+02:00"],"borders":["MOZ","ZAF"],"nativeName":"Swaziland","numericCode":"748","currencies":[{"code":"SZL","name":"Swazi lilangeni","symbol":"L"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"ss","iso639_2":"ssw","name":"Swati","nativeName":"SiSwati"}],"translations":{"de":"Swasiland","es":"Suazilandia","fr":"Swaziland","ja":"スワジランド","it":"Swaziland","br":"Suazilândia","pt":"Suazilândia","nl":"Swaziland","hr":"Svazi","fa":"سوازیلند"},"flag":"https://restcountries.eu/data/swz.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"SWZ"},{"name":"Sweden","topLevelDomain":[".se"],"alpha2Code":"SE","alpha3Code":"SWE","callingCodes":["46"],"capital":"Stockholm","altSpellings":["SE","Kingdom of Sweden","Konungariket Sverige"],"region":"Europe","subregion":"Northern Europe","population":9894888,"latlng":[62.0,15.0],"demonym":"Swedish","area":450295.0,"gini":25.0,"timezones":["UTC+01:00"],"borders":["FIN","NOR"],"nativeName":"Sverige","numericCode":"752","currencies":[{"code":"SEK","name":"Swedish krona","symbol":"kr"}],"languages":[{"iso639_1":"sv","iso639_2":"swe","name":"Swedish","nativeName":"svenska"}],"translations":{"de":"Schweden","es":"Suecia","fr":"Suède","ja":"スウェーデン","it":"Svezia","br":"Suécia","pt":"Suécia","nl":"Zweden","hr":"Švedska","fa":"سوئد"},"flag":"https://restcountries.eu/data/swe.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"SWE"},{"name":"Switzerland","topLevelDomain":[".ch"],"alpha2Code":"CH","alpha3Code":"CHE","callingCodes":["41"],"capital":"Bern","altSpellings":["CH","Swiss Confederation","Schweiz","Suisse","Svizzera","Svizra"],"region":"Europe","subregion":"Western Europe","population":8341600,"latlng":[47.0,8.0],"demonym":"Swiss","area":41284.0,"gini":33.7,"timezones":["UTC+01:00"],"borders":["AUT","FRA","ITA","LIE","DEU"],"nativeName":"Schweiz","numericCode":"756","currencies":[{"code":"CHF","name":"Swiss franc","symbol":"Fr"}],"languages":[{"iso639_1":"de","iso639_2":"deu","name":"German","nativeName":"Deutsch"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"},{"iso639_1":"it","iso639_2":"ita","name":"Italian","nativeName":"Italiano"}],"translations":{"de":"Schweiz","es":"Suiza","fr":"Suisse","ja":"スイス","it":"Svizzera","br":"Suíça","pt":"Suíça","nl":"Zwitserland","hr":"Švicarska","fa":"سوئیس"},"flag":"https://restcountries.eu/data/che.svg","regionalBlocs":[{"acronym":"EFTA","name":"European Free Trade Association","otherAcronyms":[],"otherNames":[]}],"cioc":"SUI"},{"name":"Syrian Arab Republic","topLevelDomain":[".sy"],"alpha2Code":"SY","alpha3Code":"SYR","callingCodes":["963"],"capital":"Damascus","altSpellings":["SY","Syrian Arab Republic","Al-Jumhūrīyah Al-ʻArabīyah As-Sūrīyah"],"region":"Asia","subregion":"Western Asia","population":18564000,"latlng":[35.0,38.0],"demonym":"Syrian","area":185180.0,"gini":35.8,"timezones":["UTC+02:00"],"borders":["IRQ","ISR","JOR","LBN","TUR"],"nativeName":"سوريا","numericCode":"760","currencies":[{"code":"SYP","name":"Syrian pound","symbol":"£"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Syrien","es":"Siria","fr":"Syrie","ja":"シリア・アラブ共和国","it":"Siria","br":"Síria","pt":"Síria","nl":"Syrië","hr":"Sirija","fa":"سوریه"},"flag":"https://restcountries.eu/data/syr.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"SYR"},{"name":"Taiwan","topLevelDomain":[".tw"],"alpha2Code":"TW","alpha3Code":"TWN","callingCodes":["886"],"capital":"Taipei","altSpellings":["TW","Táiwān","Republic of China","中華民國","Zhōnghuá Mínguó"],"region":"Asia","subregion":"Eastern Asia","population":23503349,"latlng":[23.5,121.0],"demonym":"Taiwanese","area":36193.0,"gini":null,"timezones":["UTC+08:00"],"borders":[],"nativeName":"臺灣","numericCode":"158","currencies":[{"code":"TWD","name":"New Taiwan dollar","symbol":"$"}],"languages":[{"iso639_1":"zh","iso639_2":"zho","name":"Chinese","nativeName":"中文 (Zhōngwén)"}],"translations":{"de":"Taiwan","es":"Taiwán","fr":"Taïwan","ja":"台湾(中華民国)","it":"Taiwan","br":"Taiwan","pt":"Taiwan","nl":"Taiwan","hr":"Tajvan","fa":"تایوان"},"flag":"https://restcountries.eu/data/twn.svg","regionalBlocs":[],"cioc":"TPE"},{"name":"Tajikistan","topLevelDomain":[".tj"],"alpha2Code":"TJ","alpha3Code":"TJK","callingCodes":["992"],"capital":"Dushanbe","altSpellings":["TJ","Toçikiston","Republic of Tajikistan","Ҷумҳурии Тоҷикистон","Çumhuriyi Toçikiston"],"region":"Asia","subregion":"Central Asia","population":8593600,"latlng":[39.0,71.0],"demonym":"Tadzhik","area":143100.0,"gini":30.8,"timezones":["UTC+05:00"],"borders":["AFG","CHN","KGZ","UZB"],"nativeName":"Тоҷикистон","numericCode":"762","currencies":[{"code":"TJS","name":"Tajikistani somoni","symbol":"ЅМ"}],"languages":[{"iso639_1":"tg","iso639_2":"tgk","name":"Tajik","nativeName":"тоҷикӣ"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Tadschikistan","es":"Tayikistán","fr":"Tadjikistan","ja":"タジキスタン","it":"Tagikistan","br":"Tajiquistão","pt":"Tajiquistão","nl":"Tadzjikistan","hr":"Tađikistan","fa":"تاجیکستان"},"flag":"https://restcountries.eu/data/tjk.svg","regionalBlocs":[],"cioc":"TJK"},{"name":"Tanzania, United Republic of","topLevelDomain":[".tz"],"alpha2Code":"TZ","alpha3Code":"TZA","callingCodes":["255"],"capital":"Dodoma","altSpellings":["TZ","United Republic of Tanzania","Jamhuri ya Muungano wa Tanzania"],"region":"Africa","subregion":"Eastern Africa","population":55155000,"latlng":[-6.0,35.0],"demonym":"Tanzanian","area":945087.0,"gini":37.6,"timezones":["UTC+03:00"],"borders":["BDI","COD","KEN","MWI","MOZ","RWA","UGA","ZMB"],"nativeName":"Tanzania","numericCode":"834","currencies":[{"code":"TZS","name":"Tanzanian shilling","symbol":"Sh"}],"languages":[{"iso639_1":"sw","iso639_2":"swa","name":"Swahili","nativeName":"Kiswahili"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Tansania","es":"Tanzania","fr":"Tanzanie","ja":"タンザニア","it":"Tanzania","br":"Tanzânia","pt":"Tanzânia","nl":"Tanzania","hr":"Tanzanija","fa":"تانزانیا"},"flag":"https://restcountries.eu/data/tza.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"TAN"},{"name":"Thailand","topLevelDomain":[".th"],"alpha2Code":"TH","alpha3Code":"THA","callingCodes":["66"],"capital":"Bangkok","altSpellings":["TH","Prathet","Thai","Kingdom of Thailand","ราชอาณาจักรไทย","Ratcha Anachak Thai"],"region":"Asia","subregion":"South-Eastern Asia","population":65327652,"latlng":[15.0,100.0],"demonym":"Thai","area":513120.0,"gini":40.0,"timezones":["UTC+07:00"],"borders":["MMR","KHM","LAO","MYS"],"nativeName":"ประเทศไทย","numericCode":"764","currencies":[{"code":"THB","name":"Thai baht","symbol":"฿"}],"languages":[{"iso639_1":"th","iso639_2":"tha","name":"Thai","nativeName":"ไทย"}],"translations":{"de":"Thailand","es":"Tailandia","fr":"Thaïlande","ja":"タイ","it":"Tailandia","br":"Tailândia","pt":"Tailândia","nl":"Thailand","hr":"Tajland","fa":"تایلند"},"flag":"https://restcountries.eu/data/tha.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"THA"},{"name":"Timor-Leste","topLevelDomain":[".tl"],"alpha2Code":"TL","alpha3Code":"TLS","callingCodes":["670"],"capital":"Dili","altSpellings":["TL","East Timor","Democratic Republic of Timor-Leste","República Democrática de Timor-Leste","Repúblika Demokrátika Timór-Leste"],"region":"Asia","subregion":"South-Eastern Asia","population":1167242,"latlng":[-8.83333333,125.91666666],"demonym":"East Timorese","area":14874.0,"gini":31.9,"timezones":["UTC+09:00"],"borders":["IDN"],"nativeName":"Timor-Leste","numericCode":"626","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"},{"code":null,"name":null,"symbol":null}],"languages":[{"iso639_1":"pt","iso639_2":"por","name":"Portuguese","nativeName":"Português"}],"translations":{"de":"Timor-Leste","es":"Timor Oriental","fr":"Timor oriental","ja":"東ティモール","it":"Timor Est","br":"Timor Leste","pt":"Timor Leste","nl":"Oost-Timor","hr":"Istočni Timor","fa":"تیمور شرقی"},"flag":"https://restcountries.eu/data/tls.svg","regionalBlocs":[],"cioc":"TLS"},{"name":"Togo","topLevelDomain":[".tg"],"alpha2Code":"TG","alpha3Code":"TGO","callingCodes":["228"],"capital":"Lomé","altSpellings":["TG","Togolese","Togolese Republic","République Togolaise"],"region":"Africa","subregion":"Western Africa","population":7143000,"latlng":[8.0,1.16666666],"demonym":"Togolese","area":56785.0,"gini":34.4,"timezones":["UTC"],"borders":["BEN","BFA","GHA"],"nativeName":"Togo","numericCode":"768","currencies":[{"code":"XOF","name":"West African CFA franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Togo","es":"Togo","fr":"Togo","ja":"トーゴ","it":"Togo","br":"Togo","pt":"Togo","nl":"Togo","hr":"Togo","fa":"توگو"},"flag":"https://restcountries.eu/data/tgo.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"TOG"},{"name":"Tokelau","topLevelDomain":[".tk"],"alpha2Code":"TK","alpha3Code":"TKL","callingCodes":["690"],"capital":"Fakaofo","altSpellings":["TK"],"region":"Oceania","subregion":"Polynesia","population":1411,"latlng":[-9.0,-172.0],"demonym":"Tokelauan","area":12.0,"gini":null,"timezones":["UTC+13:00"],"borders":[],"nativeName":"Tokelau","numericCode":"772","currencies":[{"code":"NZD","name":"New Zealand dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Tokelau","es":"Islas Tokelau","fr":"Tokelau","ja":"トケラウ","it":"Isole Tokelau","br":"Tokelau","pt":"Toquelau","nl":"Tokelau","hr":"Tokelau","fa":"توکلائو"},"flag":"https://restcountries.eu/data/tkl.svg","regionalBlocs":[],"cioc":""},{"name":"Tonga","topLevelDomain":[".to"],"alpha2Code":"TO","alpha3Code":"TON","callingCodes":["676"],"capital":"Nuku'alofa","altSpellings":["TO"],"region":"Oceania","subregion":"Polynesia","population":103252,"latlng":[-20.0,-175.0],"demonym":"Tongan","area":747.0,"gini":null,"timezones":["UTC+13:00"],"borders":[],"nativeName":"Tonga","numericCode":"776","currencies":[{"code":"TOP","name":"Tongan paʻanga","symbol":"T$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"to","iso639_2":"ton","name":"Tonga (Tonga Islands)","nativeName":"faka Tonga"}],"translations":{"de":"Tonga","es":"Tonga","fr":"Tonga","ja":"トンガ","it":"Tonga","br":"Tonga","pt":"Tonga","nl":"Tonga","hr":"Tonga","fa":"تونگا"},"flag":"https://restcountries.eu/data/ton.svg","regionalBlocs":[],"cioc":"TGA"},{"name":"Trinidad and Tobago","topLevelDomain":[".tt"],"alpha2Code":"TT","alpha3Code":"TTO","callingCodes":["1868"],"capital":"Port of Spain","altSpellings":["TT","Republic of Trinidad and Tobago"],"region":"Americas","subregion":"Caribbean","population":1349667,"latlng":[11.0,-61.0],"demonym":"Trinidadian","area":5130.0,"gini":40.3,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Trinidad and Tobago","numericCode":"780","currencies":[{"code":"TTD","name":"Trinidad and Tobago dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Trinidad und Tobago","es":"Trinidad y Tobago","fr":"Trinité et Tobago","ja":"トリニダード・トバゴ","it":"Trinidad e Tobago","br":"Trinidad e Tobago","pt":"Trindade e Tobago","nl":"Trinidad en Tobago","hr":"Trinidad i Tobago","fa":"ترینیداد و توباگو"},"flag":"https://restcountries.eu/data/tto.svg","regionalBlocs":[{"acronym":"CARICOM","name":"Caribbean Community","otherAcronyms":[],"otherNames":["Comunidad del Caribe","Communauté Caribéenne","Caribische Gemeenschap"]}],"cioc":"TTO"},{"name":"Tunisia","topLevelDomain":[".tn"],"alpha2Code":"TN","alpha3Code":"TUN","callingCodes":["216"],"capital":"Tunis","altSpellings":["TN","Republic of Tunisia","al-Jumhūriyyah at-Tūnisiyyah"],"region":"Africa","subregion":"Northern Africa","population":11154400,"latlng":[34.0,9.0],"demonym":"Tunisian","area":163610.0,"gini":41.4,"timezones":["UTC+01:00"],"borders":["DZA","LBY"],"nativeName":"تونس","numericCode":"788","currencies":[{"code":"TND","name":"Tunisian dinar","symbol":"د.ت"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Tunesien","es":"Túnez","fr":"Tunisie","ja":"チュニジア","it":"Tunisia","br":"Tunísia","pt":"Tunísia","nl":"Tunesië","hr":"Tunis","fa":"تونس"},"flag":"https://restcountries.eu/data/tun.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]},{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"TUN"},{"name":"Turkey","topLevelDomain":[".tr"],"alpha2Code":"TR","alpha3Code":"TUR","callingCodes":["90"],"capital":"Ankara","altSpellings":["TR","Turkiye","Republic of Turkey","Türkiye Cumhuriyeti"],"region":"Asia","subregion":"Western Asia","population":78741053,"latlng":[39.0,35.0],"demonym":"Turkish","area":783562.0,"gini":39.0,"timezones":["UTC+03:00"],"borders":["ARM","AZE","BGR","GEO","GRC","IRN","IRQ","SYR"],"nativeName":"Türkiye","numericCode":"792","currencies":[{"code":"TRY","name":"Turkish lira","symbol":null}],"languages":[{"iso639_1":"tr","iso639_2":"tur","name":"Turkish","nativeName":"Türkçe"}],"translations":{"de":"Türkei","es":"Turquía","fr":"Turquie","ja":"トルコ","it":"Turchia","br":"Turquia","pt":"Turquia","nl":"Turkije","hr":"Turska","fa":"ترکیه"},"flag":"https://restcountries.eu/data/tur.svg","regionalBlocs":[],"cioc":"TUR"},{"name":"Turkmenistan","topLevelDomain":[".tm"],"alpha2Code":"TM","alpha3Code":"TKM","callingCodes":["993"],"capital":"Ashgabat","altSpellings":["TM"],"region":"Asia","subregion":"Central Asia","population":4751120,"latlng":[40.0,60.0],"demonym":"Turkmen","area":488100.0,"gini":40.8,"timezones":["UTC+05:00"],"borders":["AFG","IRN","KAZ","UZB"],"nativeName":"Türkmenistan","numericCode":"795","currencies":[{"code":"TMT","name":"Turkmenistan manat","symbol":"m"}],"languages":[{"iso639_1":"tk","iso639_2":"tuk","name":"Turkmen","nativeName":"Türkmen"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Turkmenistan","es":"Turkmenistán","fr":"Turkménistan","ja":"トルクメニスタン","it":"Turkmenistan","br":"Turcomenistão","pt":"Turquemenistão","nl":"Turkmenistan","hr":"Turkmenistan","fa":"ترکمنستان"},"flag":"https://restcountries.eu/data/tkm.svg","regionalBlocs":[],"cioc":"TKM"},{"name":"Turks and Caicos Islands","topLevelDomain":[".tc"],"alpha2Code":"TC","alpha3Code":"TCA","callingCodes":["1649"],"capital":"Cockburn Town","altSpellings":["TC"],"region":"Americas","subregion":"Caribbean","population":31458,"latlng":[21.75,-71.58333333],"demonym":"Turks and Caicos Islander","area":948.0,"gini":null,"timezones":["UTC-04:00"],"borders":[],"nativeName":"Turks and Caicos Islands","numericCode":"796","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Turks- und Caicosinseln","es":"Islas Turks y Caicos","fr":"Îles Turques-et-Caïques","ja":"タークス・カイコス諸島","it":"Isole Turks e Caicos","br":"Ilhas Turcas e Caicos","pt":"Ilhas Turcas e Caicos","nl":"Turks- en Caicoseilanden","hr":"Otoci Turks i Caicos","fa":"جزایر تورکس و کایکوس"},"flag":"https://restcountries.eu/data/tca.svg","regionalBlocs":[],"cioc":""},{"name":"Tuvalu","topLevelDomain":[".tv"],"alpha2Code":"TV","alpha3Code":"TUV","callingCodes":["688"],"capital":"Funafuti","altSpellings":["TV"],"region":"Oceania","subregion":"Polynesia","population":10640,"latlng":[-8.0,178.0],"demonym":"Tuvaluan","area":26.0,"gini":null,"timezones":["UTC+12:00"],"borders":[],"nativeName":"Tuvalu","numericCode":"798","currencies":[{"code":"AUD","name":"Australian dollar","symbol":"$"},{"code":"TVD[G]","name":"Tuvaluan dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Tuvalu","es":"Tuvalu","fr":"Tuvalu","ja":"ツバル","it":"Tuvalu","br":"Tuvalu","pt":"Tuvalu","nl":"Tuvalu","hr":"Tuvalu","fa":"تووالو"},"flag":"https://restcountries.eu/data/tuv.svg","regionalBlocs":[],"cioc":"TUV"},{"name":"Uganda","topLevelDomain":[".ug"],"alpha2Code":"UG","alpha3Code":"UGA","callingCodes":["256"],"capital":"Kampala","altSpellings":["UG","Republic of Uganda","Jamhuri ya Uganda"],"region":"Africa","subregion":"Eastern Africa","population":33860700,"latlng":[1.0,32.0],"demonym":"Ugandan","area":241550.0,"gini":44.3,"timezones":["UTC+03:00"],"borders":["COD","KEN","RWA","SSD","TZA"],"nativeName":"Uganda","numericCode":"800","currencies":[{"code":"UGX","name":"Ugandan shilling","symbol":"Sh"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"sw","iso639_2":"swa","name":"Swahili","nativeName":"Kiswahili"}],"translations":{"de":"Uganda","es":"Uganda","fr":"Uganda","ja":"ウガンダ","it":"Uganda","br":"Uganda","pt":"Uganda","nl":"Oeganda","hr":"Uganda","fa":"اوگاندا"},"flag":"https://restcountries.eu/data/uga.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"UGA"},{"name":"Ukraine","topLevelDomain":[".ua"],"alpha2Code":"UA","alpha3Code":"UKR","callingCodes":["380"],"capital":"Kiev","altSpellings":["UA","Ukrayina"],"region":"Europe","subregion":"Eastern Europe","population":42692393,"latlng":[49.0,32.0],"demonym":"Ukrainian","area":603700.0,"gini":26.4,"timezones":["UTC+02:00"],"borders":["BLR","HUN","MDA","POL","ROU","RUS","SVK"],"nativeName":"Україна","numericCode":"804","currencies":[{"code":"UAH","name":"Ukrainian hryvnia","symbol":"₴"}],"languages":[{"iso639_1":"uk","iso639_2":"ukr","name":"Ukrainian","nativeName":"Українська"}],"translations":{"de":"Ukraine","es":"Ucrania","fr":"Ukraine","ja":"ウクライナ","it":"Ucraina","br":"Ucrânia","pt":"Ucrânia","nl":"Oekraïne","hr":"Ukrajina","fa":"وکراین"},"flag":"https://restcountries.eu/data/ukr.svg","regionalBlocs":[],"cioc":"UKR"},{"name":"United Arab Emirates","topLevelDomain":[".ae"],"alpha2Code":"AE","alpha3Code":"ARE","callingCodes":["971"],"capital":"Abu Dhabi","altSpellings":["AE","UAE"],"region":"Asia","subregion":"Western Asia","population":9856000,"latlng":[24.0,54.0],"demonym":"Emirati","area":83600.0,"gini":null,"timezones":["UTC+04"],"borders":["OMN","SAU"],"nativeName":"دولة الإمارات العربية المتحدة","numericCode":"784","currencies":[{"code":"AED","name":"United Arab Emirates dirham","symbol":"د.إ"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Vereinigte Arabische Emirate","es":"Emiratos Árabes Unidos","fr":"Émirats arabes unis","ja":"アラブ首長国連邦","it":"Emirati Arabi Uniti","br":"Emirados árabes Unidos","pt":"Emirados árabes Unidos","nl":"Verenigde Arabische Emiraten","hr":"Ujedinjeni Arapski Emirati","fa":"امارات متحده عربی"},"flag":"https://restcountries.eu/data/are.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"UAE"},{"name":"United Kingdom of Great Britain and Northern Ireland","topLevelDomain":[".uk"],"alpha2Code":"GB","alpha3Code":"GBR","callingCodes":["44"],"capital":"London","altSpellings":["GB","UK","Great Britain"],"region":"Europe","subregion":"Northern Europe","population":65110000,"latlng":[54.0,-2.0],"demonym":"British","area":242900.0,"gini":34.0,"timezones":["UTC-08:00","UTC-05:00","UTC-04:00","UTC-03:00","UTC-02:00","UTC","UTC+01:00","UTC+02:00","UTC+06:00"],"borders":["IRL"],"nativeName":"United Kingdom","numericCode":"826","currencies":[{"code":"GBP","name":"British pound","symbol":"£"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Vereinigtes Königreich","es":"Reino Unido","fr":"Royaume-Uni","ja":"イギリス","it":"Regno Unito","br":"Reino Unido","pt":"Reino Unido","nl":"Verenigd Koninkrijk","hr":"Ujedinjeno Kraljevstvo","fa":"بریتانیای کبیر و ایرلند شمالی"},"flag":"https://restcountries.eu/data/gbr.svg","regionalBlocs":[{"acronym":"EU","name":"European Union","otherAcronyms":[],"otherNames":[]}],"cioc":"GBR"},{"name":"United States of America","topLevelDomain":[".us"],"alpha2Code":"US","alpha3Code":"USA","callingCodes":["1"],"capital":"Washington, D.C.","altSpellings":["US","USA","United States of America"],"region":"Americas","subregion":"Northern America","population":323947000,"latlng":[38.0,-97.0],"demonym":"American","area":9629091.0,"gini":48.0,"timezones":["UTC-12:00","UTC-11:00","UTC-10:00","UTC-09:00","UTC-08:00","UTC-07:00","UTC-06:00","UTC-05:00","UTC-04:00","UTC+10:00","UTC+12:00"],"borders":["CAN","MEX"],"nativeName":"United States","numericCode":"840","currencies":[{"code":"USD","name":"United States dollar","symbol":"$"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Vereinigte Staaten von Amerika","es":"Estados Unidos","fr":"États-Unis","ja":"アメリカ合衆国","it":"Stati Uniti D'America","br":"Estados Unidos","pt":"Estados Unidos","nl":"Verenigde Staten","hr":"Sjedinjene Američke Države","fa":"ایالات متحده آمریکا"},"flag":"https://restcountries.eu/data/usa.svg","regionalBlocs":[{"acronym":"NAFTA","name":"North American Free Trade Agreement","otherAcronyms":[],"otherNames":["Tratado de Libre Comercio de América del Norte","Accord de Libre-échange Nord-Américain"]}],"cioc":"USA"},{"name":"Uruguay","topLevelDomain":[".uy"],"alpha2Code":"UY","alpha3Code":"URY","callingCodes":["598"],"capital":"Montevideo","altSpellings":["UY","Oriental Republic of Uruguay","República Oriental del Uruguay"],"region":"Americas","subregion":"South America","population":3480222,"latlng":[-33.0,-56.0],"demonym":"Uruguayan","area":181034.0,"gini":39.7,"timezones":["UTC-03:00"],"borders":["ARG","BRA"],"nativeName":"Uruguay","numericCode":"858","currencies":[{"code":"UYU","name":"Uruguayan peso","symbol":"$"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Uruguay","es":"Uruguay","fr":"Uruguay","ja":"ウルグアイ","it":"Uruguay","br":"Uruguai","pt":"Uruguai","nl":"Uruguay","hr":"Urugvaj","fa":"اروگوئه"},"flag":"https://restcountries.eu/data/ury.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"URU"},{"name":"Uzbekistan","topLevelDomain":[".uz"],"alpha2Code":"UZ","alpha3Code":"UZB","callingCodes":["998"],"capital":"Tashkent","altSpellings":["UZ","Republic of Uzbekistan","O‘zbekiston Respublikasi","Ўзбекистон Республикаси"],"region":"Asia","subregion":"Central Asia","population":31576400,"latlng":[41.0,64.0],"demonym":"Uzbekistani","area":447400.0,"gini":36.7,"timezones":["UTC+05:00"],"borders":["AFG","KAZ","KGZ","TJK","TKM"],"nativeName":"O‘zbekiston","numericCode":"860","currencies":[{"code":"UZS","name":"Uzbekistani so'm","symbol":null}],"languages":[{"iso639_1":"uz","iso639_2":"uzb","name":"Uzbek","nativeName":"Oʻzbek"},{"iso639_1":"ru","iso639_2":"rus","name":"Russian","nativeName":"Русский"}],"translations":{"de":"Usbekistan","es":"Uzbekistán","fr":"Ouzbékistan","ja":"ウズベキスタン","it":"Uzbekistan","br":"Uzbequistão","pt":"Usbequistão","nl":"Oezbekistan","hr":"Uzbekistan","fa":"ازبکستان"},"flag":"https://restcountries.eu/data/uzb.svg","regionalBlocs":[],"cioc":"UZB"},{"name":"Vanuatu","topLevelDomain":[".vu"],"alpha2Code":"VU","alpha3Code":"VUT","callingCodes":["678"],"capital":"Port Vila","altSpellings":["VU","Republic of Vanuatu","Ripablik blong Vanuatu","République de Vanuatu"],"region":"Oceania","subregion":"Melanesia","population":277500,"latlng":[-16.0,167.0],"demonym":"Ni-Vanuatu","area":12189.0,"gini":null,"timezones":["UTC+11:00"],"borders":[],"nativeName":"Vanuatu","numericCode":"548","currencies":[{"code":"VUV","name":"Vanuatu vatu","symbol":"Vt"}],"languages":[{"iso639_1":"bi","iso639_2":"bis","name":"Bislama","nativeName":"Bislama"},{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Vanuatu","es":"Vanuatu","fr":"Vanuatu","ja":"バヌアツ","it":"Vanuatu","br":"Vanuatu","pt":"Vanuatu","nl":"Vanuatu","hr":"Vanuatu","fa":"وانواتو"},"flag":"https://restcountries.eu/data/vut.svg","regionalBlocs":[],"cioc":"VAN"},{"name":"Venezuela (Bolivarian Republic of)","topLevelDomain":[".ve"],"alpha2Code":"VE","alpha3Code":"VEN","callingCodes":["58"],"capital":"Caracas","altSpellings":["VE","Bolivarian Republic of Venezuela","República Bolivariana de Venezuela"],"region":"Americas","subregion":"South America","population":31028700,"latlng":[8.0,-66.0],"demonym":"Venezuelan","area":916445.0,"gini":44.8,"timezones":["UTC-04:00"],"borders":["BRA","COL","GUY"],"nativeName":"Venezuela","numericCode":"862","currencies":[{"code":"VEF","name":"Venezuelan bolívar","symbol":"Bs F"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Venezuela","es":"Venezuela","fr":"Venezuela","ja":"ベネズエラ・ボリバル共和国","it":"Venezuela","br":"Venezuela","pt":"Venezuela","nl":"Venezuela","hr":"Venezuela","fa":"ونزوئلا"},"flag":"https://restcountries.eu/data/ven.svg","regionalBlocs":[{"acronym":"USAN","name":"Union of South American Nations","otherAcronyms":["UNASUR","UNASUL","UZAN"],"otherNames":["Unión de Naciones Suramericanas","União de Nações Sul-Americanas","Unie van Zuid-Amerikaanse Naties","South American Union"]}],"cioc":"VEN"},{"name":"Viet Nam","topLevelDomain":[".vn"],"alpha2Code":"VN","alpha3Code":"VNM","callingCodes":["84"],"capital":"Hanoi","altSpellings":["VN","Socialist Republic of Vietnam","Cộng hòa Xã hội chủ nghĩa Việt Nam"],"region":"Asia","subregion":"South-Eastern Asia","population":92700000,"latlng":[16.16666666,107.83333333],"demonym":"Vietnamese","area":331212.0,"gini":35.6,"timezones":["UTC+07:00"],"borders":["KHM","CHN","LAO"],"nativeName":"Việt Nam","numericCode":"704","currencies":[{"code":"VND","name":"Vietnamese đồng","symbol":"₫"}],"languages":[{"iso639_1":"vi","iso639_2":"vie","name":"Vietnamese","nativeName":"Tiếng Việt"}],"translations":{"de":"Vietnam","es":"Vietnam","fr":"Viêt Nam","ja":"ベトナム","it":"Vietnam","br":"Vietnã","pt":"Vietname","nl":"Vietnam","hr":"Vijetnam","fa":"ویتنام"},"flag":"https://restcountries.eu/data/vnm.svg","regionalBlocs":[{"acronym":"ASEAN","name":"Association of Southeast Asian Nations","otherAcronyms":[],"otherNames":[]}],"cioc":"VIE"},{"name":"Wallis and Futuna","topLevelDomain":[".wf"],"alpha2Code":"WF","alpha3Code":"WLF","callingCodes":["681"],"capital":"Mata-Utu","altSpellings":["WF","Territory of the Wallis and Futuna Islands","Territoire des îles Wallis et Futuna"],"region":"Oceania","subregion":"Polynesia","population":11750,"latlng":[-13.3,-176.2],"demonym":"Wallis and Futuna Islander","area":142.0,"gini":null,"timezones":["UTC+12:00"],"borders":[],"nativeName":"Wallis et Futuna","numericCode":"876","currencies":[{"code":"XPF","name":"CFP franc","symbol":"Fr"}],"languages":[{"iso639_1":"fr","iso639_2":"fra","name":"French","nativeName":"français"}],"translations":{"de":"Wallis und Futuna","es":"Wallis y Futuna","fr":"Wallis-et-Futuna","ja":"ウォリス・フツナ","it":"Wallis e Futuna","br":"Wallis e Futuna","pt":"Wallis e Futuna","nl":"Wallis en Futuna","hr":"Wallis i Fortuna","fa":"والیس و فوتونا"},"flag":"https://restcountries.eu/data/wlf.svg","regionalBlocs":[],"cioc":""},{"name":"Western Sahara","topLevelDomain":[".eh"],"alpha2Code":"EH","alpha3Code":"ESH","callingCodes":["212"],"capital":"El Aaiún","altSpellings":["EH","Taneẓroft Tutrimt"],"region":"Africa","subregion":"Northern Africa","population":510713,"latlng":[24.5,-13.0],"demonym":"Sahrawi","area":266000.0,"gini":null,"timezones":["UTC+00:00"],"borders":["DZA","MRT","MAR"],"nativeName":"الصحراء الغربية","numericCode":"732","currencies":[{"code":"MAD","name":"Moroccan dirham","symbol":"د.م."},{"code":"DZD","name":"Algerian dinar","symbol":"د.ج"}],"languages":[{"iso639_1":"es","iso639_2":"spa","name":"Spanish","nativeName":"Español"}],"translations":{"de":"Westsahara","es":"Sahara Occidental","fr":"Sahara Occidental","ja":"西サハラ","it":"Sahara Occidentale","br":"Saara Ocidental","pt":"Saara Ocidental","nl":"Westelijke Sahara","hr":"Zapadna Sahara","fa":"جمهوری دموکراتیک عربی صحرا"},"flag":"https://restcountries.eu/data/esh.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":""},{"name":"Yemen","topLevelDomain":[".ye"],"alpha2Code":"YE","alpha3Code":"YEM","callingCodes":["967"],"capital":"Sana'a","altSpellings":["YE","Yemeni Republic","al-Jumhūriyyah al-Yamaniyyah"],"region":"Asia","subregion":"Western Asia","population":27478000,"latlng":[15.0,48.0],"demonym":"Yemeni","area":527968.0,"gini":37.7,"timezones":["UTC+03:00"],"borders":["OMN","SAU"],"nativeName":"اليَمَن","numericCode":"887","currencies":[{"code":"YER","name":"Yemeni rial","symbol":"﷼"}],"languages":[{"iso639_1":"ar","iso639_2":"ara","name":"Arabic","nativeName":"العربية"}],"translations":{"de":"Jemen","es":"Yemen","fr":"Yémen","ja":"イエメン","it":"Yemen","br":"Iêmen","pt":"Iémen","nl":"Jemen","hr":"Jemen","fa":"یمن"},"flag":"https://restcountries.eu/data/yem.svg","regionalBlocs":[{"acronym":"AL","name":"Arab League","otherAcronyms":[],"otherNames":["جامعة الدول العربية","Jāmiʻat ad-Duwal al-ʻArabīyah","League of Arab States"]}],"cioc":"YEM"},{"name":"Zambia","topLevelDomain":[".zm"],"alpha2Code":"ZM","alpha3Code":"ZMB","callingCodes":["260"],"capital":"Lusaka","altSpellings":["ZM","Republic of Zambia"],"region":"Africa","subregion":"Eastern Africa","population":15933883,"latlng":[-15.0,30.0],"demonym":"Zambian","area":752612.0,"gini":54.6,"timezones":["UTC+02:00"],"borders":["AGO","BWA","COD","MWI","MOZ","NAM","TZA","ZWE"],"nativeName":"Zambia","numericCode":"894","currencies":[{"code":"ZMW","name":"Zambian kwacha","symbol":"ZK"}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"}],"translations":{"de":"Sambia","es":"Zambia","fr":"Zambie","ja":"ザンビア","it":"Zambia","br":"Zâmbia","pt":"Zâmbia","nl":"Zambia","hr":"Zambija","fa":"زامبیا"},"flag":"https://restcountries.eu/data/zmb.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"ZAM"},{"name":"Zimbabwe","topLevelDomain":[".zw"],"alpha2Code":"ZW","alpha3Code":"ZWE","callingCodes":["263"],"capital":"Harare","altSpellings":["ZW","Republic of Zimbabwe"],"region":"Africa","subregion":"Eastern Africa","population":14240168,"latlng":[-20.0,30.0],"demonym":"Zimbabwean","area":390757.0,"gini":null,"timezones":["UTC+02:00"],"borders":["BWA","MOZ","ZAF","ZMB"],"nativeName":"Zimbabwe","numericCode":"716","currencies":[{"code":"BWP","name":"Botswana pula","symbol":"P"},{"code":"GBP","name":"British pound","symbol":"£"},{"code":"CNY","name":"Chinese yuan","symbol":"¥"},{"code":"EUR","name":"Euro","symbol":"€"},{"code":"INR","name":"Indian rupee","symbol":"₹"},{"code":"JPY","name":"Japanese yen","symbol":"¥"},{"code":"ZAR","name":"South African rand","symbol":"Rs"},{"code":"USD","name":"United States dollar","symbol":"$"},{"code":"(none)","name":null,"symbol":null}],"languages":[{"iso639_1":"en","iso639_2":"eng","name":"English","nativeName":"English"},{"iso639_1":"sn","iso639_2":"sna","name":"Shona","nativeName":"chiShona"},{"iso639_1":"nd","iso639_2":"nde","name":"Northern Ndebele","nativeName":"isiNdebele"}],"translations":{"de":"Simbabwe","es":"Zimbabue","fr":"Zimbabwe","ja":"ジンバブエ","it":"Zimbabwe","br":"Zimbabwe","pt":"Zimbabué","nl":"Zimbabwe","hr":"Zimbabve","fa":"زیمباوه"},"flag":"https://restcountries.eu/data/zwe.svg","regionalBlocs":[{"acronym":"AU","name":"African Union","otherAcronyms":[],"otherNames":["الاتحاد الأفريقي","Union africaine","União Africana","Unión Africana","Umoja wa Afrika"]}],"cioc":"ZIM"}] \ No newline at end of file diff --git a/build/framework-build b/build/framework-build new file mode 120000 index 000000000..d97808928 --- /dev/null +++ b/build/framework-build @@ -0,0 +1 @@ +framework-build \ No newline at end of file diff --git a/build/logs/clover.xml b/build/logs/clover.xml index 032ec7dc2..01a38102e 100644 --- a/build/logs/clover.xml +++ b/build/logs/clover.xml @@ -1,209 +1,4142 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - + - + - - - - - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/composer.json b/composer.json index fda0b7aa4..385561164 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,9 @@ ], "require": { "php": "^8.0|^8.1", - "illuminate/support": "^9.0" + "illuminate/support": "^9.0", + "laravel/passport": "^10.4", + "rebing/graphql-laravel": "^8.2" }, "require-dev": { "brianium/paratest": "^6.4", diff --git a/config/avored.php b/config/avored.php index ccaf7c58c..5f96a2366 100644 --- a/config/avored.php +++ b/config/avored.php @@ -1,5 +1,44 @@ 'admin', + 'guest_prefix' => 'AvoRed_Guest_', 'auth' => [ 'guards' => [ @@ -30,10 +70,10 @@ 'driver' => 'eloquent', 'model' => AvoRed\Framework\Database\Models\AdminUser::class, ], - // 'customers' => [ - // 'driver' => 'eloquent', - // 'model' => AvoRed\Framework\Database\Models\Customer::class, - // ], + 'customers' => [ + 'driver' => 'eloquent', + 'model' => AvoRed\Framework\Database\Models\Customer::class, + ], ], 'passwords' => [ @@ -49,5 +89,57 @@ ], ], ], + 'graphql' => [ + 'default_schema' => 'default', + 'schemas' => [ + 'default' => [ + 'query' => [ + 'latestProductQuery' => LatestProductQuery::class, + 'allCategory' => AllCategoryQuery::class, + 'category' => CategoryQuery::class, + 'product' => ProductQuery::class, + 'shippingQuery' => ShippingQuery::class, + 'paymentQuery' => PaymentQuery::class, + 'countryOptions' => CountryOptionsQuery::class, + 'cartItems' => CartItemsQuery::class, + 'allAddress' => AllAddressQuery::class, + 'addressQuery' => AddressQuery::class, + 'customerQuery' => CustomerQuery::class, + 'allOrders' => AllOrdersQuery::class, + 'order' => OrderQuery::class, + ], + 'mutation' => [ + 'login' => LoginMutation::class, + 'register' => RegisterMutation::class, + 'forgotPassword' => ForgotPasswordMutation::class, + 'resetPassword' => ResetPasswordMutation::class, + 'customerUpdate' => CustomerUpdateMutation::class, + 'createAddress' => CreateAddressMutation::class, + 'updateAddress' => UpdateAddressMutation::class, + 'deleteAddress' => DeleteAddressMutation::class, + 'placeOrder' => PlaceOrderMutation::class, + 'addToCart' => AddToCartMutation::class, + 'updateCart' => UpdateCartMutation::class, + 'deleteCart' => DeleteCartMutation::class, + 'CreateSubscriberMutation' => CreateSubscriberMutation::class, + ], + 'middleware' => [], + 'method' => ['GET', 'POST'], + ], + ], + 'types' => [ + 'Category' => CategoryType::class, + 'Product' => ProductType::class, + 'Customer' => CustomerType::class, + 'Order' => OrderType::class, + 'Address' => AddressType::class, + 'Notification' => NotificationType::class, + 'CartProduct' => CartProductType::class, + 'Payment' => PaymentType::class, + 'Shipping' => ShippingType::class, + 'Subscriber' => SubscriberType::class, + 'Option' => OptionType::class, + ], + ], ]; diff --git a/database/factories/AddressFactory.php b/database/factories/AddressFactory.php new file mode 100644 index 000000000..928e288e3 --- /dev/null +++ b/database/factories/AddressFactory.php @@ -0,0 +1,47 @@ +create(); + $types = [ + 'SHIPPING', + 'BILLING' + ]; + $country = DB::table('countries')->get()->random(); + + return [ + 'type' => $types[rand(0, 1)], + 'customer_id' => $customer->id, + 'company_name' => $this->faker->company(), + 'first_name' => $this->faker->firstName(), + 'last_name' => $this->faker->lastName(), + 'address1' => $this->faker->streetSuffix . $this->faker->streetName(), + 'postcode' => $this->faker->postcode(), + 'city' => $this->faker->city(), + 'state' => $this->faker->stateAbbr(), + 'country_id' => $country->id, + 'phone' => $this->faker->phoneNumber(), + ]; + } +} diff --git a/database/factories/AdminUserFactory.php b/database/factories/AdminUserFactory.php index e29f01b33..dc635c60b 100644 --- a/database/factories/AdminUserFactory.php +++ b/database/factories/AdminUserFactory.php @@ -8,8 +8,18 @@ use Illuminate\Support\Facades\Hash; class AdminUserFactory extends Factory { + /** + * The name of the factory's corresponding model. + * + * @var string + */ protected $model = AdminUser::class; + /** + * Define the model's default state. + * + * @return array + */ public function definition() { $role = Role::factory()->create(); diff --git a/database/factories/AttributeFactory.php b/database/factories/AttributeFactory.php new file mode 100644 index 000000000..02048e395 --- /dev/null +++ b/database/factories/AttributeFactory.php @@ -0,0 +1,32 @@ +faker->word; + return [ + 'name' => $name, + 'slug' => Str::slug($name), + 'display_as' => 'TEXT' + ]; + } +} diff --git a/database/factories/CategoryFactory.php b/database/factories/CategoryFactory.php new file mode 100644 index 000000000..eb08c5825 --- /dev/null +++ b/database/factories/CategoryFactory.php @@ -0,0 +1,35 @@ +faker->word; + + return [ + 'parent_id' => null, + 'name' => $name, + 'slug' => Str::slug($name), + 'meta_title' => $this->faker->sentence, + 'meta_description' => $this->faker->sentence, + ]; + } +} diff --git a/database/factories/CustomerFactory.php b/database/factories/CustomerFactory.php new file mode 100644 index 000000000..a3517331e --- /dev/null +++ b/database/factories/CustomerFactory.php @@ -0,0 +1,31 @@ + $this->faker->name(), + 'last_name' => $this->faker->lastName(), + 'email' => $this->faker->unique()->safeEmail(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + ]; + } +} diff --git a/database/factories/DocumentFactory.php b/database/factories/DocumentFactory.php new file mode 100644 index 000000000..0e65a8453 --- /dev/null +++ b/database/factories/DocumentFactory.php @@ -0,0 +1,33 @@ +faker->word() . DIRECTORY_SEPARATOR . $this->faker->word(); + + return [ + 'path' => $path, + 'mine_type' => 'image/jpg', + 'size' => $this->faker->randomDigit(), + 'origional_name' => $this->faker->word() . '.' . 'jpg' + ]; + } +} diff --git a/database/factories/OrderFactory.php b/database/factories/OrderFactory.php new file mode 100644 index 000000000..c1cefac14 --- /dev/null +++ b/database/factories/OrderFactory.php @@ -0,0 +1,41 @@ +create(['type' => 'SHIPPING']); + $billingAddress = Address::factory()->create(['type' => 'BILLING']); + $customer = Customer::factory()->create(); + $orderStatus = OrderStatus::factory()->create(); + return [ + 'shipping_option' => $this->faker->word, + 'payment_option' => $this->faker->word, + 'customer_id' => $customer->id, + 'order_status_id' => $orderStatus->id, + 'shipping_address_id' => $shippingAddress->id, + 'billing_address_id' => $billingAddress->id, + 'track_code' => rand(100000, 9999999), + ]; + } +} diff --git a/database/factories/OrderStatusFactory.php b/database/factories/OrderStatusFactory.php new file mode 100644 index 000000000..b3317fa85 --- /dev/null +++ b/database/factories/OrderStatusFactory.php @@ -0,0 +1,31 @@ +faker->word; + + return [ + 'name' => $name, + 'is_default' => rand(0, 1), + ]; + } +} diff --git a/database/factories/PageFactory.php b/database/factories/PageFactory.php new file mode 100644 index 000000000..daccb3292 --- /dev/null +++ b/database/factories/PageFactory.php @@ -0,0 +1,35 @@ +faker->word; + + return [ + 'name' => $name, + 'slug' => Str::slug($name), + 'content' => $this->faker->sentence, + 'meta_title' => $this->faker->sentence, + 'meta_description' => $this->faker->sentence, + ]; + } +} diff --git a/database/factories/ProductFactory.php b/database/factories/ProductFactory.php new file mode 100644 index 000000000..259ec791f --- /dev/null +++ b/database/factories/ProductFactory.php @@ -0,0 +1,49 @@ +faker->sentence; + + return [ + 'name' => $name, + 'slug' => Str::slug($name), + 'type' => 'BASIC', + 'sku' => Str::slug($name), + 'barcode' => $this->faker->randomNumber(4), + 'description' => $this->faker->sentence(3000), + 'status' => 1, + 'in_stock' => 1, + 'track_stock' => 1, + 'qty' => rand(100, 300), + 'is_taxable' => 1, + 'price' => $this->faker->randomNumber(2), + 'cost_price' => $this->faker->randomNumber(2), + 'weight' => $this->faker->randomNumber(2), + 'height' => $this->faker->randomNumber(2), + 'width' => $this->faker->randomNumber(2), + 'length' => $this->faker->randomNumber(2), + 'meta_title' => $this->faker->sentence, + 'meta_description' => $this->faker->sentence, + ]; + } +} diff --git a/database/factories/PropertyFactory.php b/database/factories/PropertyFactory.php new file mode 100644 index 000000000..b5faa810d --- /dev/null +++ b/database/factories/PropertyFactory.php @@ -0,0 +1,35 @@ +faker->word; + return [ + 'name' => $name, + 'slug' => Str::slug($name), + 'data_type' => 'VARCHAR', + 'field_type' => 'TEXT', + 'use_for_all_products' => rand(0, 1), + 'sort_order' => rand(0, 100), + ]; + } +} diff --git a/database/factories/RoleFactory.php b/database/factories/RoleFactory.php index e4634f595..242d5747d 100644 --- a/database/factories/RoleFactory.php +++ b/database/factories/RoleFactory.php @@ -7,8 +7,18 @@ class RoleFactory extends Factory { + /** + * The name of the factory's corresponding model. + * + * @var string + */ protected $model = Role::class; + /** + * Define the model's default state. + * + * @return array + */ public function definition() { return [ diff --git a/database/migrations/2016_06_01_000001_create_oauth_auth_codes_table.php b/database/migrations/2016_06_01_000001_create_oauth_auth_codes_table.php new file mode 100644 index 000000000..0eabf059c --- /dev/null +++ b/database/migrations/2016_06_01_000001_create_oauth_auth_codes_table.php @@ -0,0 +1,62 @@ +schema = Schema::connection($this->getConnection()); + } + + /** + * Run the migrations. + * + * @return void + */ + public function up() + { + $this->schema->create('oauth_auth_codes', function (Blueprint $table) { + $table->string('id', 100)->primary(); + $table->unsignedBigInteger('user_id')->index(); + $table->unsignedBigInteger('client_id'); + $table->text('scopes')->nullable(); + $table->boolean('revoked'); + $table->dateTime('expires_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $this->schema->dropIfExists('oauth_auth_codes'); + } + + /** + * Get the migration connection name. + * + * @return string|null + */ + public function getConnection() + { + return config('passport.storage.database.connection'); + } +} diff --git a/database/migrations/2016_06_01_000002_create_oauth_access_tokens_table.php b/database/migrations/2016_06_01_000002_create_oauth_access_tokens_table.php new file mode 100644 index 000000000..7fdffb848 --- /dev/null +++ b/database/migrations/2016_06_01_000002_create_oauth_access_tokens_table.php @@ -0,0 +1,64 @@ +schema = Schema::connection($this->getConnection()); + } + + /** + * Run the migrations. + * + * @return void + */ + public function up() + { + $this->schema->create('oauth_access_tokens', function (Blueprint $table) { + $table->string('id', 100)->primary(); + $table->uuid('user_id')->nullable()->index(); + $table->uuid('client_id'); + $table->string('name')->nullable(); + $table->text('scopes')->nullable(); + $table->boolean('revoked'); + $table->timestamps(); + $table->dateTime('expires_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $this->schema->dropIfExists('oauth_access_tokens'); + } + + /** + * Get the migration connection name. + * + * @return string|null + */ + public function getConnection() + { + return config('passport.storage.database.connection'); + } +} diff --git a/database/migrations/2016_06_01_000003_create_oauth_refresh_tokens_table.php b/database/migrations/2016_06_01_000003_create_oauth_refresh_tokens_table.php new file mode 100644 index 000000000..b4ac09544 --- /dev/null +++ b/database/migrations/2016_06_01_000003_create_oauth_refresh_tokens_table.php @@ -0,0 +1,60 @@ +schema = Schema::connection($this->getConnection()); + } + + /** + * Run the migrations. + * + * @return void + */ + public function up() + { + $this->schema->create('oauth_refresh_tokens', function (Blueprint $table) { + $table->string('id', 100)->primary(); + $table->string('access_token_id', 100)->index(); + $table->boolean('revoked'); + $table->dateTime('expires_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $this->schema->dropIfExists('oauth_refresh_tokens'); + } + + /** + * Get the migration connection name. + * + * @return string|null + */ + public function getConnection() + { + return config('passport.storage.database.connection'); + } +} diff --git a/database/migrations/2016_06_01_000004_create_oauth_clients_table.php b/database/migrations/2016_06_01_000004_create_oauth_clients_table.php new file mode 100644 index 000000000..cf3c986fb --- /dev/null +++ b/database/migrations/2016_06_01_000004_create_oauth_clients_table.php @@ -0,0 +1,66 @@ +schema = Schema::connection($this->getConnection()); + } + + /** + * Get the migration connection name. + * + * @return string|null + */ + public function getConnection() + { + return config('passport.storage.database.connection'); + } + + /** + * Run the migrations. + * + * @return void + */ + public function up() + { + $this->schema->create('oauth_clients', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->uuid('user_id')->nullable()->index(); + $table->string('name'); + $table->string('secret', 100)->nullable(); + $table->string('provider')->nullable(); + $table->text('redirect'); + $table->boolean('personal_access_client'); + $table->boolean('password_client'); + $table->boolean('revoked'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $this->schema->dropIfExists('oauth_clients'); + } +} diff --git a/database/migrations/2016_06_01_000005_create_oauth_personal_access_clients_table.php b/database/migrations/2016_06_01_000005_create_oauth_personal_access_clients_table.php new file mode 100644 index 000000000..7bf284d41 --- /dev/null +++ b/database/migrations/2016_06_01_000005_create_oauth_personal_access_clients_table.php @@ -0,0 +1,59 @@ +schema = Schema::connection($this->getConnection()); + } + + /** + * Run the migrations. + * + * @return void + */ + public function up() + { + $this->schema->create('oauth_personal_access_clients', function (Blueprint $table) { + $table->bigIncrements('id'); + $table->uuid('client_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $this->schema->dropIfExists('oauth_personal_access_clients'); + } + + /** + * Get the migration connection name. + * + * @return string|null + */ + public function getConnection() + { + return config('passport.storage.database.connection'); + } +} diff --git a/database/migrations/2017_03_29_000000_avored_framework_schema.php b/database/migrations/2017_03_29_000000_avored_framework_schema.php new file mode 100644 index 000000000..d26bb9f93 --- /dev/null +++ b/database/migrations/2017_03_29_000000_avored_framework_schema.php @@ -0,0 +1,332 @@ +string('email')->index(); + $table->string('token')->index(); + $table->timestamp('created_at'); + }); + + Schema::create('customer_password_resets', function (Blueprint $table) { + $table->string('email')->index(); + $table->string('token')->index(); + $table->timestamp('created_at'); + }); + Schema::create('roles', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('name')->nullable()->default(null); + $table->text('description')->nullable()->default(null); + $table->timestamps(); + }); + + Schema::create('admin_users', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->tinyInteger('is_super_admin')->nullable()->default(null); + $table->uuid('role_id')->nullable()->default(null); + $table->string('first_name')->nullable(); + $table->string('last_name')->nullable(); + $table->string('email')->unique(); + $table->string('password'); + $table->string('language')->nullable()->default('en'); + $table->rememberToken(); + $table->timestamp('email_verified_at')->nullable(); + $table->timestamps(); + + $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade'); + }); + + Schema::create('categories', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('name')->nullable()->default(null); + $table->string('slug')->nullable()->default(null); + $table->text('description')->nullable()->default(null); + $table->string('meta_title')->nullable()->default(null); + $table->string('meta_description')->nullable()->default(null); + $table->timestamps(); + }); + + Schema::table('categories', function (Blueprint $table) { + $table->uuid('parent_id')->nullable(); + $table->foreign('parent_id')->references('id')->on('categories'); + }); + + Schema::create('permissions', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('name')->unique(); + $table->timestamps(); + }); + + Schema::create('permission_role', function (Blueprint $table) { + $table->uuid('permission_id')->nullable()->default(null); + $table->uuid('role_id')->nullable()->default(null); + $table->timestamps(); + $table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade'); + $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade'); + }); + + Schema::create('pages', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('name')->nullable()->default(null); + $table->string('slug')->nullable()->default(null); + $table->text('content')->nullable()->default(null); + $table->string('meta_title')->nullable()->default(null); + $table->string('meta_description')->nullable()->default(null); + $table->timestamps(); + }); + + Schema::create('order_statuses', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('name'); + $table->boolean('is_default')->default(0); + $table->timestamps(); + }); + + Schema::create('properties', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('name'); + $table->string('slug')->unique(); + $table->enum('data_type', ['INTEGER', 'DECIMAL', 'DATETIME', 'VARCHAR', 'BOOLEAN', 'TEXT']) + ->nullable() + ->default(null); + $table->enum( + 'field_type', + ['TEXT', 'TEXTAREA', 'CKEDITOR', 'SELECT', 'FILE', 'DATETIME', 'RADIO', 'SWITCH'] + ); + $table->tinyInteger('use_for_all_products')->default(0); + $table->tinyInteger('use_for_category_filter')->default(0); + $table->integer('sort_order')->nullable()->default(0); + $table->timestamps(); + }); + + Schema::create('property_dropdown_options', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->uuid('property_id'); + $table->string('display_text'); + $table->timestamps(); + $table->foreign('property_id') + ->references('id')->on('properties')->onDelete('cascade'); + }); + Schema::create('attributes', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('name'); + $table->string('slug')->unique(); + $table->enum('display_as', ['IMAGE', 'TEXT'])->default('TEXT'); + $table->timestamps(); + }); + Schema::create('attribute_dropdown_options', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->uuid('attribute_id'); + $table->string('display_text'); + $table->string('path')->nullable()->default(null); + $table->timestamps(); + $table->foreign('attribute_id') + ->references('id')->on('attributes')->onDelete('cascade'); + }); + Schema::create('configurations', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('code')->nullable()->default(null); + $table->text('value')->nullable()->default(null); + $table->timestamps(); + }); + + Schema::create('products', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->enum('type', ['BASIC', 'VARIATION', 'DOWNLOADABLE', 'VARIABLE_PRODUCT'])->default('BASIC'); + $table->string('name')->nullable()->default(null); + $table->string('slug')->nullable()->default(null); + $table->string('sku')->nullable()->default(null); + $table->string('barcode')->nullable()->default(null); + $table->text('description')->nullable()->default(null); + $table->tinyInteger('status')->nullable()->default(null); + $table->tinyInteger('in_stock')->nullable()->default(null); + $table->tinyInteger('track_stock')->nullable()->default(null); + $table->decimal('qty', 10, 6)->nullable(); + $table->tinyInteger('is_taxable')->nullable()->default(null); + $table->decimal('price', 10, 6)->nullable()->default(null); + $table->decimal('cost_price', 10, 6)->nullable()->default(null); + $table->float('weight')->nullable()->default(null); + $table->float('width')->nullable()->default(null); + $table->float('height')->nullable()->default(null); + $table->float('length')->nullable()->default(null); + $table->string('meta_title')->nullable()->default(null); + $table->string('meta_description')->nullable()->default(null); + $table->timestamps(); + }); + + Schema::create('customers', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('first_name')->nullable(); + $table->string('last_name')->nullable(); + $table->string('email')->unique(); + $table->string('password'); + $table->string('image_path')->nullable()->default(null); + $table->rememberToken(); + $table->timestamp('email_verified_at')->nullable(); + $table->timestamps(); + }); + + Schema::create('countries', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('name')->nullable()->default(null); + $table->string('code')->nullable()->default(null); + $table->string('phone_code')->nullable()->default(null); + $table->string('currency_code')->nullable()->default(null); + $table->string('currency_symbol')->nullable()->default(null); + $table->string('lang_code')->nullable()->default(null); + $table->timestamps(); + }); + + Schema::create('addresses', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->uuid('customer_id'); + $table->enum('type', ['SHIPPING', 'BILLING']); + $table->string('first_name')->nullable()->default(null); + $table->string('last_name')->nullable()->default(null); + $table->string('company_name')->nullable()->default(null); + $table->string('address1')->nullable()->default(null); + $table->string('address2')->nullable()->default(null); + $table->string('postcode')->nullable()->default(null); + $table->string('city')->nullable()->default(null); + $table->string('state')->nullable()->default(null); + $table->uuid('country_id')->nullable()->default(null); + $table->string('phone')->nullable()->default(null); + $table->timestamps(); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); + $table->foreign('country_id')->references('id')->on('countries')->onDelete('cascade'); + }); + + + Schema::create('orders', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('shipping_option'); + $table->string('payment_option'); + $table->uuid('order_status_id'); + $table->uuid('customer_id')->nullable(); + $table->uuid('shipping_address_id')->nullable(); + $table->uuid('billing_address_id')->nullable(); + $table->string('track_code')->nullable()->default(null); + $table->timestamps(); + + $table->foreign('shipping_address_id')->references('id')->on('addresses'); + $table->foreign('billing_address_id')->references('id')->on('addresses'); + $table->foreign('order_status_id')->references('id')->on('order_statuses'); + $table->foreign('customer_id')->references('id')->on('customers'); + }); + + Schema::create('order_products', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->uuid('product_id'); + $table->uuid('order_id'); + $table->decimal('qty', 11, 6); + $table->decimal('price', 11, 6); + $table->decimal('tax_amount', 11, 6); + $table->timestamps(); + $table->foreign('order_id')->references('id')->on('orders'); + $table->foreign('product_id')->references('id')->on('products'); + }); + + Schema::create('documents', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->string('path'); + $table->string('mime_type')->nullable(); + $table->integer('size')->nullable(); + $table->string('origional_name')->nullable(); + $table->nullableUuidMorphs('documentable'); + $table->timestamps(); + }); + + Schema::create('category_product', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->uuid('product_id'); + $table->uuid('category_id'); + $table->timestamps(); + $table->foreign('category_id')->references('id')->on('categories'); + $table->foreign('product_id')->references('id')->on('products'); + }); + + Schema::create('cart_products', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->uuid('visitor_id'); + $table->uuid('product_id'); + $table->decimal('qty', 10, 6)->nullable()->default(null); + $table->timestamps(); + $table->foreign('product_id')->references('id')->on('products'); + }); + + Schema::create('subscribers', function (Blueprint $table) { + $table->uuid('id')->primary(); + $table->uuid('customer_id')->nullable()->default(null); + $table->string('email')->nullable()->default(null)->unique(); + $table->enum('status', ['ENABLED', 'DISABLED'])->default('ENABLED'); + $table->timestamps(); + $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); + }); + + $path = __DIR__.'/../../assets/countries.json'; + $json = json_decode(file_get_contents($path), true); + foreach ($json as $country) { + $data['id'] = Uuid::uuid4()->toString(); + $data['code'] = strtolower(Arr::get($country, 'alpha2Code')); + $data['name'] = Arr::get($country, 'name'); + $data['phone_code'] = Arr::get($country, 'callingCodes.0'); + $data['currency_code'] = Arr::get($country, 'currencies.0.code'); + $data['currency_symbol'] = Arr::get($country, 'currencies.0.symbol'); + $data['lang_code'] = Arr::get($country, 'languages.0.name'); + $countries[] = $data; + } + + DB::table('countries')->insert($countries); + + } + + /** + * Uninstall the AvoRed Address Module Schema. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('subscribers'); + Schema::dropIfExists('category_product'); + Schema::dropIfExists('documents'); + Schema::dropIfExists('order_products'); + Schema::dropIfExists('orders'); + Schema::dropIfExists('addresses'); + Schema::dropIfExists('countries'); + Schema::dropIfExists('customers'); + Schema::dropIfExists('products'); + Schema::dropIfExists('configurations'); + Schema::dropIfExists('attribute_dropdown_options'); + Schema::dropIfExists('attributes'); + Schema::dropIfExists('property_dropdown_options'); + Schema::dropIfExists('properties'); + Schema::dropIfExists('order_statuses'); + Schema::dropIfExists('pages'); + Schema::dropIfExists('permission_role'); + Schema::dropIfExists('permissions'); + Schema::table('categories', function (Blueprint $table) { + $table->dropForeign('categories_parent_id_foreign'); + $table->dropColumn('parent_id'); + }); + Schema::dropIfExists('categories'); + Schema::dropIfExists('admin_users'); + Schema::dropIfExists('roles'); + Schema::dropIfExists('admin_password_resets'); + } +} diff --git a/database/migrations/2017_03_29_0000_avored_framework_schema501.php b/database/migrations/2017_03_29_0000_avored_framework_schema501.php new file mode 100644 index 000000000..42d5507e4 --- /dev/null +++ b/database/migrations/2017_03_29_0000_avored_framework_schema501.php @@ -0,0 +1,37 @@ +tinyInteger('status') + ->default(1); + }); + + } + + /** + * Uninstall the AvoRed Address Module Schema. + * + * @return void + */ + public function down() + { + Schema::table('cart_products', function (Blueprint $table) { + $table->dropColumn('status'); + }); + } +} diff --git a/database/migrations/2022_05_15_021036_create_avored_schema_framework.php b/database/migrations/2022_05_15_021036_create_avored_schema_framework.php deleted file mode 100644 index 8d1326d87..000000000 --- a/database/migrations/2022_05_15_021036_create_avored_schema_framework.php +++ /dev/null @@ -1,50 +0,0 @@ -uuid('id')->primary(); - $table->string('name')->nullable()->default(null); - $table->text('description')->nullable()->default(null); - $table->timestamps(); - }); - - Schema::create('admin_users', function (Blueprint $table) { - $table->uuid('id')->primary(); - $table->tinyInteger('is_super_admin')->nullable()->default(null); - $table->uuid('role_id')->nullable()->default(null); - $table->string('first_name')->nullable(); - $table->string('last_name')->nullable(); - $table->string('email')->unique(); - $table->string('password'); - $table->string('language')->nullable()->default('en'); - $table->rememberToken(); - $table->timestamp('email_verified_at')->nullable(); - $table->timestamps(); - - $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('admin_users'); - Schema::dropIfExists('roles'); - } -}; diff --git a/dist/mix-manifest.json b/dist/mix-manifest.json new file mode 100644 index 000000000..7790e2013 --- /dev/null +++ b/dist/mix-manifest.json @@ -0,0 +1,6 @@ +{ + "/vendor/avored/js/app.js": "/vendor/avored/js/app.js", + "/vendor/avored/css/app.css": "/vendor/avored/css/app.css", + "/vendor/avored/images/avored_logo.ico": "/vendor/avored/images/avored_logo.ico", + "/vendor/avored/images/logo_only.svg": "/vendor/avored/images/logo_only.svg" +} diff --git a/dist/vendor/avored/css/app.css b/dist/vendor/avored/css/app.css new file mode 100644 index 000000000..55eeb5fb7 --- /dev/null +++ b/dist/vendor/avored/css/app.css @@ -0,0 +1,4 @@ +.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5)}.cm-animate-fat-cursor,.cm-fat-cursor-mark{-webkit-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{background-color:#7e7;border:0;width:auto}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:-50px}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:0;overflow:scroll!important;padding-bottom:50px;position:relative}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:0;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:0 0!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:0 0}.EasyMDEContainer{display:block}.EasyMDEContainer.sided--no-fullscreen{display:flex;flex-direction:row;flex-wrap:wrap}.EasyMDEContainer .CodeMirror{word-wrap:break-word;border:1px solid #ddd;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;font:inherit;height:auto;padding:10px;z-index:0}.EasyMDEContainer .CodeMirror-scroll{cursor:text}.EasyMDEContainer .CodeMirror-fullscreen{background:#fff;border-bottom-right-radius:0!important;border-right:none!important;bottom:0;height:auto;left:0;position:fixed!important;right:0;top:50px;z-index:8}.EasyMDEContainer .CodeMirror-sided{width:50%!important}.EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided{border-bottom-right-radius:0;border-right:none!important;flex:1 1 auto;position:relative}.EasyMDEContainer .CodeMirror-placeholder{opacity:.5}.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#d9d9d9}.editor-toolbar{border-left:1px solid #bbb;border-right:1px solid #bbb;border-top:1px solid #bbb;border-top-left-radius:4px;border-top-right-radius:4px;padding:9px 10px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.editor-toolbar.fullscreen{background:#fff;border:0;box-sizing:border-box;height:50px;left:0;opacity:1;padding-bottom:10px;padding-top:10px;position:fixed;top:0;width:100%;z-index:9}.editor-toolbar.fullscreen:before{background:linear-gradient(90deg,#fff 0,rgba(255,255,255,0));height:50px;left:0;margin:0;padding:0;position:fixed;top:0;width:20px}.editor-toolbar.fullscreen:after{background:linear-gradient(90deg,rgba(255,255,255,0) 0,#fff);height:50px;margin:0;padding:0;position:fixed;right:0;top:0;width:20px}.EasyMDEContainer.sided--no-fullscreen .editor-toolbar{width:100%}.editor-toolbar .easymde-dropdown,.editor-toolbar button{background:0 0;border:1px solid transparent;border-radius:3px;cursor:pointer;display:inline-block;height:30px;margin:0;padding:0;text-align:center;text-decoration:none!important}.editor-toolbar button{width:30px}.editor-toolbar button.active,.editor-toolbar button:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar i.separator{border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;display:inline-block;margin:0 6px;text-indent:-10px;width:0}.editor-toolbar button:after{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:65%;position:relative;top:2px;vertical-align:text-bottom}.editor-toolbar button.heading-1:after{content:"1"}.editor-toolbar button.heading-2:after{content:"2"}.editor-toolbar button.heading-3:after{content:"3"}.editor-toolbar button.heading-bigger:after{content:"▲"}.editor-toolbar button.heading-smaller:after{content:"▼"}.editor-toolbar.disabled-for-preview button:not(.no-disable){opacity:.6;pointer-events:none}@media only screen and (max-width:700px){.editor-toolbar i.no-mobile{display:none}}.editor-statusbar{color:#959694;font-size:12px;padding:8px 10px;text-align:right}.EasyMDEContainer.sided--no-fullscreen .editor-statusbar{width:100%}.editor-statusbar span{display:inline-block;margin-left:1em;min-width:4em}.editor-statusbar .lines:before{content:"lines: "}.editor-statusbar .words:before{content:"words: "}.editor-statusbar .characters:before{content:"characters: "}.editor-preview-full{height:100%;left:0;position:absolute;top:0;width:100%;z-index:7}.editor-preview-full,.editor-preview-side{box-sizing:border-box;display:none;overflow:auto}.editor-preview-side{word-wrap:break-word;border:1px solid #ddd;bottom:0;position:fixed;right:0;top:50px;width:50%;z-index:9}.editor-preview-active-side{display:block}.EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side{flex:1 1 auto;height:auto;position:static}.editor-preview-active{display:block}.editor-preview{background:#fafafa;padding:10px}.editor-preview>p{margin-top:0}.editor-preview pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th{border:1px solid #ddd;padding:5px}.cm-s-easymde .cm-tag{color:#63a35c}.cm-s-easymde .cm-attribute{color:#795da3}.cm-s-easymde .cm-string{color:#183691}.cm-s-easymde .cm-header-1{font-size:200%;line-height:200%}.cm-s-easymde .cm-header-2{font-size:160%;line-height:160%}.cm-s-easymde .cm-header-3{font-size:125%;line-height:125%}.cm-s-easymde .cm-header-4{font-size:110%;line-height:110%}.cm-s-easymde .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.cm-s-easymde .cm-link{color:#7f8c8d}.cm-s-easymde .cm-url{color:#aab2b3}.cm-s-easymde .cm-quote{color:#7f8c8d;font-style:italic}.editor-toolbar .easymde-dropdown{border:1px solid #fff;border-radius:0;position:relative}.editor-toolbar .easymde-dropdown,.editor-toolbar .easymde-dropdown:hover{background:linear-gradient(to bottom right,#fff 0,#fff 84%,#333 0,#333)}.easymde-dropdown-content{background-color:#f9f9f9;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);display:block;padding:8px;position:absolute;top:30px;visibility:hidden;z-index:2}.easymde-dropdown:active .easymde-dropdown-content,.easymde-dropdown:focus .easymde-dropdown-content{visibility:visible}span[data-img-src]:after{background-image:var(--bg-image);background-repeat:no-repeat;background-size:contain;content:"";display:block;height:0;max-height:100%;max-width:100%;padding-top:var(--height);width:var(--width)}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)} +/*! tailwindcss v2.2.15 | MIT License | https://tailwindcss.com*/ + +/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-webkit-text-size-adjust:100%;line-height:1.15;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;margin:0}hr{color:inherit;height:0}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{border:0 solid;box-sizing:border-box}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{color:inherit;line-height:inherit;padding:0}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{bottom:0;left:0;right:0;top:0}.top-0{top:0}.right-0{right:0}.right-10{right:2.5rem}.bottom-0{bottom:0}.bottom-10{bottom:2.5rem}.left-0{left:0}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-4{margin:1rem}.-m-1{margin:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.my-auto{margin-bottom:auto;margin-top:auto}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.mb-5{margin-bottom:1.25rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-auto{margin-left:auto}.-ml-px{margin-left:-1px}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-56{max-height:14rem}.min-h-screen{min-height:100vh}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-16{width:4rem}.w-48{width:12rem}.w-auto{width:auto}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-full{width:100%}.min-w-max{min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content}.max-w-md{max-width:28rem}.max-w-lg{max-width:32rem}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-initial{flex:0 1 auto}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@keyframes bounce{0%,to{-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.cursor-pointer{cursor:pointer}.cursor-move{cursor:move}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2rem*var(--tw-space-x-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-scroll{overflow-y:scroll}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-full{border-radius:9999px}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-r-md{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem}.rounded-l-lg{border-bottom-left-radius:.5rem;border-top-left-radius:.5rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border-2{border-width:2px}.border-4{border-width:4px}.border{border-width:1px}.border-r-0{border-right-width:0}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-l{border-left-width:1px}.border-dashed{border-style:dashed}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgba(243,244,246,var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(209,213,219,var(--tw-border-opacity))}.border-red-500{--tw-border-opacity:1;border-color:rgba(239,68,68,var(--tw-border-opacity))}.border-green-400{--tw-border-opacity:1;border-color:rgba(52,211,153,var(--tw-border-opacity))}.border-green-500{--tw-border-opacity:1;border-color:rgba(16,185,129,var(--tw-border-opacity))}.border-blue-400{--tw-border-opacity:1;border-color:rgba(96,165,250,var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity:1;border-color:rgba(37,99,235,var(--tw-border-opacity))}.focus\:border-red-700:focus{--tw-border-opacity:1;border-color:rgba(185,28,28,var(--tw-border-opacity))}.focus\:border-blue-300:focus{--tw-border-opacity:1;border-color:rgba(147,197,253,var(--tw-border-opacity))}.bg-transparent{background-color:transparent}.bg-black{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(249,250,251,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgba(107,114,128,var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgba(55,65,81,var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgba(220,38,38,var(--tw-bg-opacity))}.bg-red-700{--tw-bg-opacity:1;background-color:rgba(185,28,28,var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgba(245,158,11,var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgba(209,250,229,var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgba(16,185,129,var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity:1;background-color:rgba(191,219,254,var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgba(59,130,246,var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.hover\:bg-gray-400:hover{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.hover\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgba(220,38,38,var(--tw-bg-opacity))}.bg-opacity-80{--tw-bg-opacity:0.8}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-black{font-weight:900}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-normal{line-height:1.5}.tracking-wider{letter-spacing:.05em}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgba(248,113,113,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgba(16,185,129,var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgba(4,120,87,var(--tw-text-opacity))}.group:hover .group-hover\:text-red-400{--tw-text-opacity:1;color:rgba(248,113,113,var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}.focus\:underline:focus{text-decoration:underline}.opacity-0{opacity:0}.opacity-20{opacity:.2}*,:after,:before{--tw-shadow:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,0.05)}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04)}.hover\:shadow-lg:hover,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05)}.focus\:shadow:focus{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus,.outline-none{outline:2px solid transparent;outline-offset:2px}*,:after,:before{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-4{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-inset{--tw-ring-inset:inset}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(209,213,219,var(--tw-ring-opacity))}.ring-red-400{--tw-ring-opacity:1;--tw-ring-color:rgba(248,113,113,var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(239,68,68,var(--tw-ring-opacity))}.transition{transition-duration:.15s;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:background-color,border-color,color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-transform{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.avored-input{--tw-text-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,0.05);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(209,213,219,var(--tw-ring-opacity));-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(55,65,81,var(--tw-text-opacity));padding:.5rem .75rem;width:100%}.avored-input:active,.avored-input:focus,.avored-input:hover{--tw-ring-opacity:1;--tw-ring-color:rgba(239,68,68,var(--tw-ring-opacity));outline:2px solid transparent;outline-offset:2px}@media (min-width:640px){.sm\:inline{display:inline}.sm\:w-16{width:4rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width:768px){.md\:mb-0{margin-bottom:0}.md\:block{display:block}.md\:w-1\/4{width:25%}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}}@media (min-width:1024px){.lg\:static{position:static}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.5rem*var(--tw-space-x-reverse))}.lg\:px-8{padding-left:2rem;padding-right:2rem}} diff --git a/dist/vendor/avored/images/avored_logo.ico b/dist/vendor/avored/images/avored_logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..8fa84e1eae69c5fcc7af131760061c787ddf1e06 GIT binary patch literal 112436 zcmeD^2V9Na|F@x%7FlVjtfE0iOC>4|MH;U*S{hokHHcD_Xpja?nlwoB5<*)VN_+3U z$NirZd3$?{cK7}LJ)h5WpL?D&zUw^ae7|RW4+4RKz(K$Z1F;qHelG%{2L4-He-H1% z!$9oWhd}W1{s{9S5Rx1i2o{#_;V0V>2n!34bL)>V2?DXr4+B90p0GR(Yy=`B3IlQT zq?jNf{uX>tG@;P(V-heH-gpqSyulLybMI}TV@D)Sid(%+?@Q);_wxk1M}$N)U5tNx zCcY5|#=Vx{9k&NAoV79yZDzPD|1ui0YBJEH2eM$VHr;nx}B3z5iRtP?=%&AmgK4 zjs0703;6%~(M9rD)_RBeae8lF;zyi%8*&PVtXAca?ZVk&gHy3bZ@mdM8>SZt-Jq{}$m7`dVdYg@d#o~4|=;2_- z2@C5PH`(eXoaZHB!`8+*h{4Hn;z$Tp@D4)_tPh3(u8I{~l=rc$rN<58qtR{ouy#wi z#l4``lA9D9$6AW^uIud$xOzl|q4!laTcYAORn_%U(pAm*Yf!O;pDzsPeY!yu_#|qb zU113#kuVW2k${4fFF?v!DUUk_qlQL8*jiY52MZQGZg7^bv6tejyQkCLb7QV>KKB;I>~07V$}LgKb1FIWZG)xYmTN=X)!qM0%nm2j`CZar$9|5{4T2 z&0|8NyCd~lj8pu_++>am(w^Z-c^Tqx@pRD1!&(~yui;)JX~z=BNZH7TEu}<#q8a4f zd7R!H(`rqIn9pH3gO(K3L-DcZ6no2_wVzqE3#;`K8ZR}6_l$j#X)wq>{JGM|ieLmW zkVHZoGGul^_QpYLiZrwLzF1r?T*eV;&&x+{r1A{jWPg{9VVft^nDe-2m^oA~48FOjj{7%Lwn z+I|g(e{EGT()c<_y_8m-{1%YU-u3e;E}RiIqY;zAu}Dj|yxlSk51L+XRNsn}QbKWD zN$w=1;O8%~F-02D^awI;%54{Rq6s8G@bG_n5bVxKI-K0Kp(ESMz$OPsIn;?5%l&3HfbI%=PhBC}T5GU!QeE zY0frQpPysBx(?_+BK(#3uXUUTHA4!~>Uqyh4F&o-rK*A0`el;&Qmlq{rdD>2U=Dba z&<4qRygx?HOSCmG5#uk4!xnMnoTr1=6(`8V2Hc{hAPP~>Jcm3jUfE${iOa=gi}$o3 zFc;?$1%2%SWO^>0pqUOi54XC^V99L~$?W^Dk-nn@b|s?}EP~nCU#d?sKB7B+xSQF@ zm+Pz6uq*xb;o3vE>CekYokmg3Ry6lM+SyPar|%^^zPA{$o+hvdBYS(659L5xPb0Q* zyENm+jZPz79uz|bFYh$=$XKUHhX?!n6Y^q62;+7{3hXheFJrcP@IG8lN+im#!=k6= z9);=9g`FMD5}$IT5F0tWH|QV^p1)E=jkD3R!=L)*>D|&#+*MEqjt8<0Wa@r?W*SXA zaNuO1>}f%Mo@-xkxprw*+>RzcB%RE97E^%svFzP_BQi>vj1Lc0GchY+bM3J`9#Zfn zH-{BL?jjLygF1fTfK;2pvqwj*1~J~)5$RX7qo@Kb5GE&MeVptMBFrB!5LWwKLycq~ z;~qL5>+V(2plg}>AXaNt#}#_jK+VIHgaAF7z&%*Wmo0~l(sI>(r5JY_-?@8Doa+e3 z`gnX+b>8!I#fX;kFGP1lviG#=o_~93Bwc-VTk$);Bxqd=J-4)98ki7(6-^)xKk{k}O55ql=%v$BDsE@pVC3`)6}Ix_l}5 z=0Vq$E9hm~xZOG}EJDC@k3Zp7$G=WlDG7VAr#4E3N~V9j5@t)Ij9~dI*2~HIpmmD` z{w>aEvja~bF+C_>m!(rC+A^STLqrg@N(b>(b(chek9>U0){x<%BOL1i(h2AyDMCO`-)MH zMS>oeg+JDvPmr9qFK+GTqMp8zkjpicH;2qUB@IVtQks4o zq~t{4U>pi9koW+aR7{CaOh_yNF0q=?eyQ}2B3IQ^Rd%w-$Pj#@Dn>-5syq_pSVv_$0vQY?zrNfOf1voDqBv|o+nOYTDYJi zcp$v?Yuwrl4hMfJErw$tjr%@jvjI1mtyJwD2T;Y=T#j3xy;GFnQDaBVVZ$Epa=Z>8 za)!$NspJ`rMu`B|2BV@@K>=D@=?Lum*q3C&gL6Q$N)r~>8($=+>%w8S{(&g%x1r~; z;dn2}DTq||37KSWQQ6;wp%z*or2*JMan!{?1C+!_I8|?CBhk*J9`>zZVBvta~5%~J@IH) z$61VwJV%=cN6C5BOisQ(rx5mz0U?p*T-`I+(bE9RQk3`>Oxzf>!w?6dyxCUKVy!Yk zj(BV`AE?uu&p%r>pVLh_(R5Fod(^bc-&xOuYkhy7Z~hCC%`DbEoz)+*drsm-Dmdzo zfzS5X_guqd*U!pR%g6UHTi)ls;@R`c(3OzPPgY4$!mRrCHX^DKN8i9~FPeB$RwSLo zCu_~y*FhccW92lhvESVn%rp9qIPdoD04J)zyiAUVv9WRK>7D)U;uigF*`rJ`+GP9O zny@TR#b)vG0tD|!NMn$uY87l{4jVeZ`K@uwBkch_uXkqkAqQNYDQ@1mJK%HJcUZxq zkm+uFN;^`XK$7u5doE56H1u~px#4m`l$=Jnh1>etwks%!_tVG6D2V6}Sx7pO z3-f4G zWEb@Td|hX%V+9dOHCmt5v)3JPVwHQ%sE!A^g42bYt$xEfa*vG2r9hX{# zYp?V_b@v{|JJRd#ysjM7-dul=D^FDurS5OIwqFPILnTjecG${<^S!V3xN_Dao2tsZ zFDE*JsM6qRfp^}3rsfk0PWKP-mz6hrT+yjY>bHM*8LPgD`>GE3>`P3J?O11%6QwF+ z8F-e&V$2k<#ZM(?Yks_;X9yXqUR6!_i)9JPy#k7qAS;on@zayHs~;HbnW{QUDD z1OZF0*2R?9q)~HLwI}9fO*3?i<#Nxi+(M<`pa?NR97W!*Ck~xDsJ;31CdIg_s`BgG`daCp zTk+gKfYn?7%B^8d0Y|cm7mw1GSvM!8emS1)5Ps zEE$YP;x=p!Gutx=l&FogfjyX)b2A?b`Euk3o!{2iLi1dgI@Xyd!i;kxz2Vz6$XC2T-r~9w;o9bug1#h z&J|qSxc{+KXt4!>|8tj)(8#M_PsH78+FMInjF7e7pv%pyUtvv``-wkf&CQEtqC-6w zH0!e4J9;s_-@WSz3#E%Xiv>_Fxg7TF)#joN(aioq*Fgm*OR|0r*cG{X(0Kc;llC1U zQavUOG!6{ArJP0R71Es3WaLCT2J1^o`4|VshTj^ueK~+7ck`gN``$vl>+&uek3EUC zt#D+n>M?oZ!+yFq&XwldMF4ka@_F2w{bgGHo!q2kCc7UUWsWLH@gX$wGpMKPxS8wrkngkYlGCjn>CS#>*4!>}?9fGRCtCR@dA4$ZtGf-E zCHms!i*-X??pCZ}J_#Byh4)TUhqumMwez9v*bz(5Ky9kH@G;AVGwC>DjvtIXHT& z!>sQzUoVV!_aO(=yv>hEK)ch(t%_gPq?v#8#q|i%omHU`2dl@TkE!JCkO&rgWo;Ug z_OMw4D{g=P$76mw63_8Vi?36R#Sc#B&rc-|rPA$N`zB*3x_~F@I{2s}6$x2R2|qQD zRsa}odX2yBfk#n_(%a~PBdd;6atid^KGeXjPDJD^*qakA9Q^R2UtUM0?MCK{mk+9H zt&Ti%?Uq1--zF?($Ai|6hFC1LF&69rd0!9Ti{0K38Xnj@fEl4nZ~LIvxNBP`~+`7{OdRvbdt_IGV~eZa-ek|vQDFIE;#GOsh-V#Pw1-Sro6!{&eiKRDsz0I z)vNW`JPrGGUN;rB2r%O)uG2yI*3*1$bSU^Tl8)`t+brbEel+s>nl(%!IZ_gQy%`T| z3nO&&Y4SytZBuQ-KJd~9IuRt|6(hK>0oxsbp}NWgqO2N*t{=(SScpDJhR$U|&z?&rCGk z7KTG_bdST*tDztq;VewQ#{6L*AT$3Rg(g$I0u`R;^lB~=+2?+x{5-`+HF9Z3t_(|@*?Q(` z?3#_rUkc9`I(>R)pWKP_v^s5-ny21b#%D34ItVMZDA8?Zwow$|Yd*(meAlG?u;!*c zABGu^DCsb|Ri}~4z91mG`GmBq{tS}sk#z6nkK4P3N!@{&bny{Wvf<8;#M~!$@9^Fc zr?J-i;;ZYQnJtd=242`C#i~|ui48CEjK8b{8QJEWmoUeKW8LNX$gMxJ1Wxi8Bw@2kEu)5yWe$vFS?-cCn9oeQEat8R7I zgL-z<8J9ZXiIz;hLGiJd!|iEuQv4dZeqJn6NCLinx0B(*+n;7G(cPQTj*H_ilP1E4?^*$!yO+S>e#NM7XhQHmxg<-5m;GZhxUe{xQ|g8)=a*YjB-N7lAyw zZ)51Q&w_?GzI0X}JEY^M*7hwiechf|e9Ie(CN#|;&yn}le>o=h1KT;Y;NF@`pj8wb zzMa%f1j><0e|6I93|ow`E<@Vw)8Rq2ct={_Tn`ZQ*%o!-p5_5xx+o*Y_k-OS6>9-F z8zLP9k`bvKdM7}W(U&gS{7`3-`BQHm9$kDpv(V7SgBR|;>fPiBC}5Y^DZZ{WYSkrA zmK+;GWc+aU2}&L&Ki%Y~vRUthf>$#tiVn8EJZ&)A8ttW8^C%Q?zK|y=@@m_g#sH(& znCpi7Nz0SuV60-&7P8xBHffStr-bbGBP!Gg&g-$HwU1>6I8o5VtFAdrZB7te9x0o} zPfvdER@B+ljIb06`IAW`uy-5kMdSs#28Q%L@k=GMcI)Fj1k`+1_fYuRspzaWB4ZVZ zb#;_rHD-GMHTu{gU1`R^cea`F#4=bw??1(F$BKA_vw4$jGFSDL#wa163$DW@%4zOQ zlM)%E@Cjjv7xxy{c<12d5R|y?xpDdS!PmH%jy9D0PQ=k|LGGtpAMz~zLmlD12m7P3 zb(0R%M`4?D5ADLlieNLDQL=EY*$ zQ%d5Q-(H0TS~#RO2iCWIJ$CS7hU2RIH8&Icwg4q@*Gl+ zLSMDjVh;sQ0TY)UamkwnLn+(G*2jvQIr2h$vdT5d|coGI*?%wMxHI_EewP+nT!3- z!q1j+w_UM)t*ES0EH9msXNxha&VOpixndaqZfYZ`KlUbThAE zjnbvOATOs=y7ZltoX08H9_<&&DGc4Duv2tvoQja5POzfG2dzk#iyC^EhN@H%sxfXv zXAwwmamyM}C2)K5Esms*2ZjeX53G+%Buc1zD`g z1lU@#uNU_`*a5mhF=sm}qrP?PuNH$*l(%I`+t&9Cr87tzJj9YjxcP~!6Xp6C&{~OD z3;K~CEGl*{X7Y^2)>6xU5w52ZT$xIr(75BO8p09wZswNd*}}AcfDt;-ORqMtcbi_mW)1 zybWAgl;Y0Zkf+lnk2bO6Vz)d6xtJMnq4 zd-GzcaMRnHv=yiFWut_SY(cQBO?|@9^R!8QbN z*a3RhOm-sBSg3~dsyJR{MTC~5e;X)EqU|g*52-B@Xd2M>dwA&dVZ$9+ylQ#H={E=- z=P|y#Z^J`b(N-?1@eW^wL5gU^O_TAfUj+f80rwlF>~qWqq9Fz6cE9F#>`=OLK%p&} z(?2cz!J+J1Zihk}j5dSMkF?|kp|a6q0i2C~7#RonXk@l!YmTX2EqbA|jhJ%ZCM?Pa zrdmk{4qQq?Sw>&INMwBS6Mo|*L-OZx)-)ltD%Y;=L(r?TcgR$FD89i1oy>FU)UBY; zt)&w<>Hhf5<9yiPa;y%Q4K%wXY=5!rn-`zr9k*+1J|V32_ql}-GAc#L+U=u_OuCU< zbl+vq5xZ=`>@+IY=&`P6_L@8Hbh6Q~)|#%%IT7n4dYT1CnQ<&rsHI%|Tse2Xf$Q1* z2iAgdsCb?ZgwMs+;Y6c{EEu|%W4|^>Vlj>>95<;IR-rw$TJ%)-_Pq6=4Y+14w0EsOj5?sdv1%!pZ9`C7Z0gYa5oy9tEZL+uB8s zWbF(j1f58(j9vzvl7`{OXP?P+M`9|}1xrr6+WeT`5y^5xnF((r!K$+eU#78eIlJ61 z0kTeJVRz30)vKY{ea{h^hTef{(AOR#4-x9gJOpg;I?TE!1$Tw;-yp1o_PI1D?&@va zcLcQVRl|L;7dBRehxnD$e6*DbYcP?s^57Nl|BGLB$8q{lspgOCO?43k1sRE;E2P!$ zc%;eBeob@-tW+CbmWwGXH#?L_X5P2SYu>I@99+Ub5a_`|>w;fFlP|lEzle4u55FHqn{s#>`9#wrH-$H2^u-k0_Cbco%Z)7y9kZHs)zu+1DQvFL!H3aB`0kjsK~uBJMd?KCMs8XM7lI^s1i9Au>Ls0^d^2w$9T=k5cXFVB*e5 zLPP_$=$e!fgCjCeE)ZANrt5Fmly`opXLqtRn|ED7`Pk@sgAIXwBqhn-HI=DE_$nLk zwBvMaZM;3?^60kGtgg&rJ$lB8A0DFCjDBR;Am`**D(Qq+stPTLcGNJ zX2l|9TdX(SIkm~Wp7JiWRhX=p7^!^X{VMJ&4g1tGRFz~v-zsnvEB7|Jlt|VEJ~fp` z)Ea^TQWx*M#6f(scTK%qQ|@+Cw_L1iwEw9>T*uwW&i%Th;fmqZ!4bSe8DwDxf*(i- z$1-}B2yv4m6T#5eZohVEnPWTdskv8taB(GiWg@Kw^m8!I#Ro^29}XYC5VV^7eJ}Dj zPzH}GZn1Wa!e!YTW3YW6l?>xfW_!?g!U2YihyAb0*&Q67c=Px+)MZj0Y>tdQR&M#Q z#)a-GmpEyb2o@sfgGP*;Nv~!;M;8tlKJ4&3AbG-9>{NZ0Rc8XQt31zGQHIsXBpeTZ zz9s7x#?TY@Jn611MA&E1==1H#BEXgbqp`a|H&LaR0FW6i*tdVps{|&C zNR68e%hlKWlsz>Wb+)$?AmTRA>*6I1_$AB5-u?3YJkUmhK&Q`kg&QG!G0vvzls~Zi zT+6{rChAjNGc27Sf}&AaDQ-g?DoGB z^k@WFioOwx=Lv_sLnb3PNoieJW2%af_!NP}syv{@p_Z9K0Bgb9$49}i%W-{Q?n?n2IU# z<*PdHAi@tOUe8`#<`57zb<;c?zFn7qSGW;JP3}4wV1^d3$7rq{0ZoSWnTD!+;*uht zwBA4yji>#c{F;-D!BRE1F%Wdt|$R1VPjL0FqU$nO5 ziYit%(q_GaF(on=S@Thci6Uf>wezs~GqY1!(ZXNqR}G#+&w2|e4v##P9A&53CzEU_j{Zi3*W`yFtAfh zk}+~C9;4h1(H+CeJ66|nvFiYNawCg!x@tKj7_rtXm^1n`N8*|Y;N{Bm4eoljk42x> z@5!ThMS2=wP29x7MQp4&>ZvCNTBK4otK|Jr7riwpR~=FQw4S62yW>JWF^w(8$eYrH zLuPwfur>=AYQMwFuykWTkp({WL77dZ@orykl7gv@!&yuU9i{rX$Vi(tp-;4V?XPXW zxAWSE!H3dWq@^)8FI~B^m*sS<`)-$L9KSO`s<&c_>eUjh}of{bf(f4&Skl9{PH z>O9f_WxEy6vX z5Iiq2EoI-FQa1hQO3!hE4QpG*J6@JN+tQF;`Qs5}NIHS@=k;syWu%%vSlMn>#_3DM zjfu1JjNLqND_Tn?RhBa+hBVZ6RIfrHUzTZ`I{3cN;B!%YjdSVw8vUb2>^ew?vLrqx z3x@lwTWvnxd+owX?UJ}1jM_iV3wE^TfEhi?O3i`Bq_sf`l!uDbx32;fPb>FRhoaWr zjzeV+b>B-Vgq!U$bzY0V*0gqmHNC_q;e0c05wXqIvHbgZfKuiJv}OqKP4hb*ORoDu zJUWbzN6agY>@fSwBhA=W9r>=PQr-`fO;`W88VgC_8h1EG<>p0kHw><$H%@+uRN7(^ zA8U-t&cPdbZPlK{hKZ4X^pp8IYKxr2Xt&d)wr=Fsm-{0{d=Ja5|5{WP%a9pJa`i6# zX#~;Pjbj?sXR(pY3Q|%+?e=R!1l>@ZZ+sQVkjG2pkM&Y>B}Y`?svRqcOv`bxY6X5(sNE3$Ns?y9eHGn{DW0BZxYOSZsaNyj-(Sak4?6J8NUy9q@V4|B$W}NLK zBRs6LfzLh9NLckLTw-? zn=xD>Bj;L0p&CP2HkGQZ?Iw4Y^g7^XVi`a)9 zVa6R5;tw4(i=9MwJm>DO#t3}uE=+)AaM{oNTwUCd@bU>x5-MVw)uhNvwpCShash^bUH)8=onu_n6lLYUdg1^wAOhOG-n zLB({uu3}xp*?wna;QS^QK{p&ZLZrj6)yW;}Hh|G{soSp}bvRQycbJje)R(vnqV%q5&t-o65wRM;1AXq;W5+2LM&?-J^_)dw&NLj7*>qlL0Z%#oA z-L?;jNm__@<<0q`G8O&PrSar(?~j^E%{0(0Tn@q2#sy2lw=>K92V#r z^7)XTR}V4mM52Hb#B=9ruwz6z!)Qz82#POD7^%p0x)4o zGgPd#Rh2qJ5ToSTJ7749RlF$bYXzMT&X3N=Tx%?L4b3sS4!f%7=k;A(pCoTH71yp8 zQ=!FB*7_8vz-mo}jD4ak$w4^{=3I_EJ zd29HPWb-S`x^oo)LL4XJZnNQkLEL@Q9IGXI{Tj(YCUf4|t@Yhc9%|vlYiR`<7qNgo ze_gY{g%bBO1%yZjY5n*4v7rj*88%aF-=67WWrgi2*?fWKp&nab^9N)BorB{;b0&(H z&0a?Qm{bP&1;qz~uD<3`BXIisd4Go}QQN4JD;OrND$y-;u?c^hAG`ZaH3pkXA$u#U zbqIs^-U9q%r`C>ryoaIq-r_~pPM-}_;`>?j{lHp^>(S=MwrS@P)J2!YN(hjZ-IZUQ zF&Kk1kO;0qMJ?s`qxC~zcE}6UeK76zQRcB16vjG?_w}jNTVaKKCOBY0Z=7OjbbELE zYEd5oqO?=Wv6_tG?_>!^0*6CFKbL{wdr&K18>SK>1b6Xb4Uo`q=k88rO#K?WJNcA9 z!g9B*{nLUxfrDG$9!c6<#Al1-ytE5R&S!6{5FGmsVM|hPqf_=!o7vpQV}1GMO<7%C zEFI?gvc(Ru!`-{vJ1R519S?ZCE=@4*_G>ib%+^wus)z-x$L0GC8%UTu*hlSp`RuWP zUVM*-ZDh=FY`E=oI9+|`?adfOg4oYuwVb?hI_~Om939(xzJ)@mtdeXWcE6O&0psCJ zV<*hrSpB7TMA!)gVmqZ7uiv&-I823MPFTVAEZHPua}uQq8RoqmH1ZMGkXj+JF`IT9 zRmwy(HMzFC%K>}k%(nvvOd?XKD%eA_{B(-c5Czf&C=(n4WPYfJ_xTKR@GVs&R1>lA z;K2dMq{N%4&skY6hiFo=JA!6dkK-B=KOtMk*f7V9jp8_t^%}otW(yu>uv!u)t2?e5EhjT6O;G zQN(=i7cea=sW~^wI8%kh))2g@_phn6!ze(sKgm(Ss>QPUwU?&mf7OXK~I6abe zJ`pBhug<|Je;hP%A+beH{sFdGr~zj@4=v7)0E5F0*{B^I;hzPm9)s2>zwnJTm(l>H z>gCH@-=0Q_g!C3&k1gswVOO5w-+d_MW@@_(cyia?8JC|Jlu5xSO3On=8V0^UFD8GP<}I0WNP@VpzneJsnP-8i z$Mp9qB=;ZY!ou~z4Z@?*4jpyZ`b){W9J8DuH1ytf;=_{9nt78s+a9IAOu5}*=7DMT zP{c-&{VW2(XP<<0^|KsxGQQF!1ZqgAyXz^6z(C2d2EhRVCxUZjgD;;J1Z-(`?7*UM z^7XJ9Z5C*}MYie?X-BEqZntt2_nT$~LM~0I6Io;iO`38_4j1?fGGIWpmUrBy_=?EjJyIYOaW34-LMl$4r?IEd%A4sS=S!A&e0B<875S&9jI4Q6 zZ%%msg4Fv@^adBRwg+NwCK}lb29MiW%SU!}ww6exYqGY5M);*0r-`jaY-sVm8D*HoZr5}K5J9W@1dHuzHgGWp<2^{ra82jl0 zTd?*Vy!x6vdo<08L^he?^C!$8S!a^<<@&fA#JOyu{i?7sm{BDmsf(C$@m`X=)s*!VgI61ClX>|BetF~x13VY1HBgd=tDog6~rJwb!eQEnay zn5b4kj`TISkiN70j)WP@rV}Y{7qwfy_H_G_g2f4R+H(CZ>9kx_Bh~Lu9aJZZ2npHR zp>*Fyf&FEX@yESSHs)*rYrB!_D>(OUOyG#p_s8Szr?@#f?7~ohOF{JQ%Fsy;oh_io z1AV4teFtU5ncam)?qLMD9zYu3F_7)5cE0j>lhU?CHNr-m1C69kRp%_gXl^5&^T|uC zu|gD19yV6kMm4DlsOTCG*){a4J0B4ZkUtRXcS;$3fybmM3a0H?Xup=LZQ!O(eyF=c z4>f8ccu-lEu#Kt;4rT{DgXY8+IM1k6bl|bKl8z0~qXqbGpwN<&Il)U~GOM zXKdKpU}HR>2RjbXPy0RDwL0wWNR@78zhGkGL2I=DS0?3MER^@{U9YHeiJe1Po-28= zw&eM>o{#qevb`?2(1V^zUs}4VrGOBCH?bp3W!1Rz^&6l4`THB>t%ws>1$65a%i#UR zdKJvNm|(||rgi`gHlyF7pV z<~_h3!`>4$Mw!{qJQkcP&A9cRMcvW8BynrvNH^QMma1|wsq7Jmf4&wNS+|a3lil1} zt#4cC=pVNkC_TIAU!PHQ>M&c&&%e&jpQ;E~``K74VoR?FxA8M02Q$RWbIJ8|Hp%XW)!#B**IGh+c?|gy-M~C9b_#yr!St- zAMe~7iQhfiCx`lWzuox5knxu8!ze`e6&_mK54T%!e!IWn=N1S@6me8U@(uUnrYNvK z10lpOb}WKV`RXq4-x|IEn>XO@j_()T$?@m_``ue9Qeb5KOFeOfj=Dh!+}2> z_``vv;{XbULV$ZMxKE6Yp&a}B$D-@&hqJ$Z8~RpMG+0?#IaJWzKKgcec+4N9(FZpR zxWRt(|NaH&zyLP|xaCGiQSLoGqwzI0!=Fn^hRVKv9jvIX9{$qRHJS|K9)dLIz)cJ8 z{|Q44(18i=69WTd&)>f7>$`os4J9jEhdO+?3bk)v#Xs)-`zug_g4HN}{YF$!P!|f+ zi87G)I=HF-i?smYjSp@WAluZqxSo-#S6fi0PSv8=*(?7+H{`>iLzSo#Cu&d@7R{*V z&%4K3T1GNKUITCw|3_(ub^avy#`E0V+EM)c)&HV-s{E&hVSP|jYd|F>^$rXUj`@P} zDE|w*0C?hp+pw^3unx+6y1G7<)~R7Own~(-aT6*hXP^zVmsX%Wg8u^T5J!OPmcG8R z7%#7mF>daEf9F$aolW@6nL1QPMt?gfTMOK1+cpB+4mLE5rw;CBS{X^l``Q)yXf81ll|xeW#SlBWO;Av!Sv-~-z`jg*w$ z0Y1LPsq>Th1;3-1n4S^P7FYu~nCL|N1TFwCnbg$2ejc91r++dp)YThMZEYiI0N(lu z*em&j@&LNq4cOknIyxEG#r)68`n~=G9oZMaT(y!kPlXNeISKmdL8!+pCe1UIB`;rx z0ywR0RD23IxQRkpBU&S#Yc}WZJR$6 zFK*r(=Y!$2$Sv_pKs!TPT7UOq=y@~IH`9CA7XUkP7~lYW{H@$IGJr%?HQabkCpf@ zAyJD0_U1Ey&je~q{sgcT?%Y|vK7S^@Ub@r-`vLPMCwK|~$ZIer3 zo?0e=BX4HbjF$3;_W01ySO~yzD%uMUgEFNZ9b3_oZaBvb#zLPhn8;Za0Qhhj&dblY zt}b;xB(k?3;7B$LQf8e5)+eC%B_27lGUJ@H;aPL@$j4a|w19+w7uE_2=+_5M@JLs; z5uk`NSpbRu$_mQc1;<+_V4&j@te49F7vf9s0^Q|*@L(leJN6CWxoGPL!5G^uWo7iO z^RPaGd6?yrzu`)b`OoItb9aYJg;2*Aqxyq#R_EsrHld^5H<=f3O~hi*`@1p#Kct|& zF&Q?x{Xc%Z8tOxl0N3A<^V@h(hOC_(dg^@>e201o7>|GYTVfU=0pJJIgP~NI;|VwQJ~K$8X&luj7*Q zp>e)>U|j=k<9!(!^lux%-Yd9HZtGlVh4i(yj-<_J@6K|3^Aj*&9|z_npz?=17y1?> zEr7`y9NdNWx)B_!2G_N@&#-Tw=18<_WpHZI*_$#kye0NCfyeJlvpNhhcAJ`$W{{`(8i zLHHgv4ZlW~H2A6WPL0^s|5qLwHHfK3SYsJ5cJ9te2_=I>t3h7EuwRZC0s*Zbi5 zV{nPjhNh)V1KP^Fa8Li_x`~ee!Tw382X6lrFF-s7m`Bav;#%IlOmpQI+;akaXH)@v zS9~8Jz=1I=tZUi#K+TnB=g-#zR8jW7k^h09pyl7sHCI~T{2REee?`l3#Q{7JVEt(- zx{r}VJrMY0fP=y_>Vd$f^^%lCk39{)suS_?y@P-b>gAI0@8AGjREaPq<$Y zTr$(q1KyK-`qbZv?z#;0kpuL;=hM-!Qttro)_nOg*z~J9iw<$HjRJaLGQjs=tOD;e z(RE$pWZt>Dj<0PH`WFE!`~v8Kx0RI8dyNd_HahI-nk?(7 z|DoPjQ882s@Lh4eZ!-Vje}L02z+1G}17RHn{rv68_ygQIR$?FjRQdictfMnNr@id^ zJty;OrvHG42Qs;3floQ>-+feg_}ws^C)iA^){$X??xF%d^t)A|f?#OjP1L{e}K>7hu0N+|#xZ9ppP3900DT z;GFAX$Y`m`fO|!&s|UvChL;M)Vw5W;Hom7d2!2=pl?&jy3a+_W3Eyb5}>odLLu-n)lBzS1CX&z-9WI$zmO*+cnraJ&a+j-c0`M(EQH%u_s` z58u%x50F20S=mqpI_ZHiG2JM7`q%%EKQ8V|RD66Z3Z2%lz&*C$;y@Q!&KD0rgN3#> zdgxbhUwA}B!#`vXzkhhk%jclb#lH{KPr-b24&dE<*^V~(01XuIY=FuA+DiS0HsA5% zpQe>RA>k{a7j!Mkxh)H&53WN2mnPZ>ae;_{{fXf#=_?z`1AbF)-gKZ~TR-v5PklmL z5YDkLRDKK1pPt?i8~?QnWINhq2eb%yc&w}*2-oy$X??f(rpkRHOhuIp&Kp}T z^j4;AozCW)D)))-O4@?Zmoqrm=o8@8viWjeu1W%E+VuK$-@roq#`)x*&gPqt_tYoU z4-yhuQHynU;au>A-&P z-~jn!)z%IdEZ2Ig$@6?uW&FD^v;~)Q+zR-c7+;UJ5^`Bin4k_AT)wn$xUn}5#p z{Z8IfnAp86Z58yP0oJ3w1HAd4)BC2@EkNUXcwXdO+VJ_Ng*M;%^}o0IrpkUI z3~fPpzSw->&o&?QGX*ZCsl57M4a2jVPM%y^JrMe9c6KhGajb7b#=m+lhb;)lCV-zg zxFKPDKg$2A%qPyWg3xy>SciOPGJpQp z{{#7B*4GbzUaI|;LPFK3@bKy9`KFWeuiimh5bhhFZCgIqbiltX+>g5Fe_iHN=>s%t z!?Ww=%CFg^_w<~*%{NmWfVSXL%?rZy2Ee~G67XUwd;aIcfaY}{KlXRcMxJv?1KSiN zvK_U0b=-pb{>k-Wscb=e`|*8<%W`fPI#wvKzR7#B_3JBFpv{-RXtIa(fSNiPtPfgT zTM+7f;9Lo~p?ftt%4Rum0<<3t3|zc*caW!V-pp>EZ}Rs&oBw`(HK@hhBYyVmxIZd~ z<=`{A!hro=Q`1NmocEeb8$VN8=-c7WorT$aGu4H~wgsc2#`V6P=qj7#!VA;^b=YRl zB-6RPhx2?3wfSa}|6`NY=NjukhzM14a(|aPKS705{!uAV79i_N<5FXfyht4utPTT-5_C9?& ze;=Z7pBxg|v8XoROm$$PwjlJ`4zBCV$zODb1^5Ad$*0ZNm%N3=;@f;P$$z1?;LDdi zqkvu-beG9;;|F+hc0OkcP1t;s_w&spyTy7BZ9%v{YdSsTSMT6nNZ^0+#d7oZzW@)& zpCC7P?!M%q&9~5bzPZ*5PR{qJ`HWlq@Yyc*Uy#R2;0VS8??S&kzxsxz#sNDT#lWzz zdA_;IAEt-<1?Ms^2>nl&mJU^ddOq*-=vG1|%LxR9;@Z#=YI_rkUs|SA^K*v=WaotcuQ^b%~UVuY6~VLjGsqK^g~ zT^_Xz#ldUFrki)vo8y zyGJH}@00(pgv~dT{Glxv5HRx`_Qi|iKHJUEg}46&JYYWw^uVNU#$e<7i9-<@df zvmKpeJ{cDve>`}$@l-t!&hrTir!VUIu7%bSXbYyK{QJCMh%2~`PNwV6|Jic@@a`YJ zlj~L*2dmx6f+>gK^)TmzI`8|NEtb`LeiU$EwHsR_Igw^yy5rls`Ux94apE z?>-R$lf&6j7 zyjc|-^MQVQ*Q{B*eH{~R_hLPLeQU;jh{7{Pz{UOlLqbbWCE(?_FZp-xy3qF9hjj@0 z6^45Rz}`mavmI;cIrIMm0^lW8e0Ac#A1HvQqCGt$Xx;w@1i)q8s7L>Qq_TXJ0=}*q9UUv% zu>*be|FpDr=);M9`MC1`3liY1jih82TJ{0ZF6rzX&ILIB8Sh)7Y6*DD>gtM~1|C;4yVlQp*5bcd=OC?n29f=L&%9f7WmFO3QpId|(H-iHM*_8?bI& zJlNOKTLR?&XFu;$K`l`j@OsmiFI_Eg-Niz`-G%1Ad9xIL`=^(P)IY_}zyZK>xx07E z#}+ETh2-bs`+yo47<~$G`P1*uAg85z4S0?i85wgwdp37P+5k8YU0&W-2=E|TDjNTk z`)dvW-sAN5kG_x$YIB?G5iy|)EodZSOew-Vq|2NXIyamb|fk{ zw-XNZ|FQL#TDY?;AGQNSLt|c07lZy<7t*KyD({IC8DLFke;$BGJ4@95BwHp90GVKb zTj}G+_BQCN?^kl1YaAI_66*f_%2A+iJOD5Vmx-i5VCKOAARkJglLrI^)q?$FZ-05- z=kMylrcH?`3yZH{J4VcIojSn^cs{S3GP2@xmH4mivSbIjtI(daB$S8prHF(NJ!lfT&Ja@laGQvJk-_m z#=mhNpX$+f@7kKXx`tywdOdK{fcuYKzX&owmm;7%!Mz^btl&NYZUu0k1~)gjsldGo zU2y$_#~%*-;lLjb{NcbK4*cQ39}fKCz#k4Q1qXo6yVRF8RJy^1z#4yyArMyZ&&c?K zJ``#IfuM%r4g`Yd#}gMmD-a0cAJ6fO)(FJ-dn5ueULfGc#Cy0h5ET3KJp=&56YpUd zfcrblGY)nfk@5G`e}@4&;|KwC#u1t}3=pe;@e}zbg~#&&L?_}W!pI-#$HM^esbT9W z@&5<|f~SUIatMFCJV5A_@HqLC;(vz6=|Nac4UeCRzKu`pq@bU2cpCkh!{h9m6#pZP9ES~lriRDa^`j=k zG*iRl?3xt+Bm9#=Q^VBX@%_oLsbQWe@jt@fYaD<-HEi`g{Z9r?4S$dRn}I*V6Ab*p zo*y;vC%b+!=x4k&B>pFRe#ZY`*N+TegnzQogr zMBX?-lgJxyLnfg&-bPFU2TK0YH~xfC@sH#`UoZU6F2Gt|a9e{L1F;qSf{S8o3vh~8CZ1OK( z291ILvBc}wTdS?DTiR`HTWUN!+EcQ#2h2hI)_IUMt1JTpWBa|lIzEVt&wRc+FK-nJ z;8hF!qACJhW>xNN5`nUafWO7NIy#Mm&{x=0e|#_u{mEUp&@h~s*y{<>uboY~vrPle zby87NYZ#mk?sV^jg=>KS;9g&V$Aae_z}X43_wKb9LVvT&~ozO-Tg#7826+3i`*H4Xo+XJbKjm9+We$Ic|^- z5fs$*e7bVy@(#3*&7drTDdhb&*w!{8CL%I(TQeIRjvlRszWNk?3v8MM0B2eim4>m| z!1+}g4vtFHw{Jt*(}0-q73BTHhaInfRqkx#K--ZH%bV*3d~_Ntr0z||&&8!}PJ8G8 zzPo`h=mqm0;-IeH0Qc@w&Xs=P`#E4T4GZ}X{YQfKm~*x`fIjTbV(}if!$4;dpDpZ( zbilWL(n4sSnl~b%+i#-mUp;}W@GUKyTc_ql&|M`7Wh{;yyH{vd!Z`+mMK zrppI?je~Dbl2)l{SDBJIe`yo_x1xDb5ZNr*|YVq-GjrR3%WoV zTfn%(&|GQ!ReEUGfODhxClHH?>3R68^z(@WV>QVWIGKggJ&_;yDC8FvU6?I8l?GU+VBG>fa5bTgI5mDD;cM4g;Ndij zb{-`t3ln^^B@4l6YF^l;fH6x8;9EUsYTQD?u-$w6w$FY-c8m1{XO|f*wmt~j{7z}< zxt}-uEB=6U$YHxjw^(#flmp7#sIT8N@GIDJjk|H94t4Qj!=l!GU*C>b0M`k$7xf8s zx4F_dQ+jxIptyJ@%D|v>(ddWgP`9^_N-QeTlL~`#AHN#^pNZD#-kX`#ji2`c_w+4R z-w)20g!^|FJmx-$;=}fSxd1ng4xgQ`O>LnogA4LKfq;M=}COl^I zUQe&&C+(02aBs7zY5jtD>gU%P{SQQ!Fc2Bp{dhKXPL~Fr@wazx>Obg*Jh*V75H(*r z1Gc5$TshGtB>5jjgLaVP^y&Ha+eSu}|Dqkz4}DMQ=*+J#1ZR|0fO8P z2f>(r?sW3~)w_v4Z{oY3`kYT+2Wb z|DS!{RJtd^bLk7=I0CRu1s9#LSr!Q9*AL8AchlAVXP-Ag@6;#k3r$RB*B64d0sk0B znkCwcmJECY2v^tk%*k?|?!Tg9-L!q)RN5!P8XCXv3!yEVn>%2E(YKP*KM>-)Byzr*yp{SbGtW{7gPH}u#Uuk z)<`XLLa=VfWrF^>_IXq3o(RLfP)qB(T?p3^0bf;I%S_g+!GSt3zHSSyIg*vlS+MLU zc%ZFaHa<22Y)^aYeT!NBZ71+!-Z~#1K;7TlyBf}AW1};Tzr(G!cVw@o=9jv;oa+K@MlY|b z7l8KvYwv1+qPni|Dn>F|h1ibOXu8olc8pV-mWZ`%U877KP-Im^VKkb>Ofj7%jQ?62 zFg4@E{4`@HR@(^v!JnUGBU4es@=h z9Ut>J@4k2MJ?Gy0?tS;3`<=6Wjq<-Ao}(Ot3JR(|7(f1??(Z7V?_XtRo@~VL4X!|% zF5A!Psyc+<&bS>rs^5W+#tW&b$2;QVOC*Qm5S95ZzHx_9?o}vv5H_@{sO&SsD^Lg| zJA>e;o$^C%iquK>spkDOmngLeQ3xaxDNhyyH6XJ?Mo!;-#eV`wKZ$c8&VZkY5ePgu z?yDL=quQW*NqG0&`VGMU?t=aE9^gwi!TxwUo`pS!L>@6ECCyoHzFC(KUCh1>8*cn< z*RIBut*sqlzb&x+c;eMpYxk4AF4LbfO4#V-%dee>{$mQ2(dvOTQG53`<^UI4PZ&9t zFQd?@w!=m!AN%Mb`3yL7rX^wF!kU2Io8>Fgl$5G(uurzgiu{nhXMTQtKIv1%{P-|o zp4YCuex|;@eUO#>Vc$M5JNwENJ}!DzD55f( zEd$!^9hTlK&CRVnWQGUc>+hpoZ<)=P;yD}@(y?QAW}A^8GW3N{3Cnh_*iY`jp1WZi zeE8w5Rci0MQF$Diy1MrGP%)d(Ow6xH??FpLML zeJqJ(dg-OBUerOfmAd!WTMyU?d&K93pf61aeR>QDq7=ih{Wj|kOX;l*ac4AV}2`LmiR?PD* zqVB`ibyNFc-TS$fdZ)Mx7oL~*X=7qOlicp$^`~Bb)Nk><{;k!z){2j{Lzxa zu;w@%*k?{pFO~h^>B-DL!#wE@d^`-*lE>vmU5v9ZAzjrjP364~kKwHrMH4)H&z`(BZfo6iS6Bn$QUQ~P9Olm*@!_Wm$xG?r3& z=q8r)JR^BsR@ORQuOH8v;2SeVxmnmZ zmTLE7_!3a{ffLC#fd8sowSFv)nM`JpYK^6&qlE33Gm^5Z<<-#8{sY+71likXWhuu@ zQEnEdv2@Oy;5JyX;u@`+!~Wi?$;{uQaT#`rd-!*V^bTrcCX-pD;#f-Q(Qk8jKKJq( zzIKzyhY~A;)|e^E&B8R6lKlru58Ky9^jkySPNd3&Hh5^sl56J~|G9Iu$4n-(NVBp! z=cRAIT~`n(+05pHJ%%+TztNZ}%FV*b$tNVz^Cc!$k}s@ZnB^O(cxZz`unlQ-yDw;d zub8ZA^pQvYA^d+L@l->90UdPQ7~z7F?9z+wIrgAv^KJJS*|J z=SoAWe=67OuU9reFEyaMxWM_OgZSwx!3I>dohcJ|9 z&o)kE`E(bpt-U)kF77}plglj4$T&$pAMcq@5-atwb!)|Igex>F`|#mkwjVf97q)J} zii~=3QIEaz^3MIee}CgLz;32}+qO!DpFO?2yXqM*aJ})H^RJ8>SJI-^4zwOlNjZMy zhqA>vcGRJ{|Di3 zR}G*|aWH5RD0UorAlyOFu3Vd~jebhZX|uHu{L4-ha4*pM0FCzAVkj(9z`f-ApmI9E zzGT`%rfmfGa#H>{7|kWVI5;X%82@-m@&PXfv=~P{1j9m@Q7^%;5awtMg=H9)lG^FM z49D_OCxvAg7Dr_m7Q!6$)f?_n{J=@@ED962j;O~^>wyBJu(G}hr}a3_i8uo|tyl!^ zgM(h2qet(I#d`2X=ysOCFX=?wGmY~=+~_@f8dIR(T?YKoV(hp4$ZWBJR~ZbQWD&nV zGIlK4W!Ic4D!Og>8yWCZIVm&q@+DrEK)SottFONYztVm52H*MnwbIdj(t!eJqB%cs zyK74H($h2S+ccpbF#;$L=)!+ugnOd&*l+%`GG%9I-n`4E_M)+_4O*LEU(yt|2pAqs zzgt;ZHN{5dr{}0A#o7)ShVKBEX37^d^mKpfEV1$m>$W9k_*38Tcy0&Q#+x_aeBMkt zzdmM)l51zEsj26vor^i^fy0f(ER~Ta)W^qQ)i{_wDoAL#mlvLSz<3?KmyP(cpuFoFug{(OS z@#VqqoqX+bRh#nZgfVre7Ekd$_LqOd^U=CaOZ%@hV}`L$E%E^YEaha8k5(9ao3X$s z+}7et_i21jNH_*P(dmG`PAfk2c(nJSIqs^-0X6sr_NC= z4aW7QYCQDr?cd)#PH%s9^5oNjbzyRHxn>Kz7G1oVMh6c^ZboBE=+?z*lWBDq$h^|gmc@sSN$}cyv?SCF00@A^aVW>t(-W zv{uD>a0|}^zeO{h{}$3U^a8(Pe6Vk~mVZt>po19Co?{*uG@rn4f68Me)^Jf+yI1h( z=^DSOG>fH&{mL-RDHNDHDht*Xe$=QVav4ychQ4>8FPJ)E!g++EDo>my&gIHiWkFz{Rk1qZKq$54KU?h3E8}c)+HC&=T@xZ8 literal 0 HcmV?d00001 diff --git a/dist/vendor/avored/images/logo_only.svg b/dist/vendor/avored/images/logo_only.svg new file mode 100644 index 000000000..9e9e9910f --- /dev/null +++ b/dist/vendor/avored/images/logo_only.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/dist/vendor/avored/js/app.js b/dist/vendor/avored/js/app.js new file mode 100644 index 000000000..dc321c8fd --- /dev/null +++ b/dist/vendor/avored/js/app.js @@ -0,0 +1,2 @@ +/*! For license information please see app.js.LICENSE.txt */ +(()=>{var e,t={9669:(e,t,n)=>{e.exports=n(1609)},5448:(e,t,n)=>{"use strict";var r=n(4867),i=n(6026),o=n(4372),a=n(5327),l=n(4097),s=n(4109),u=n(7985),c=n(5061);e.exports=function(e){return new Promise((function(t,n){var f=e.data,d=e.headers,p=e.responseType;r.isFormData(f)&&delete d["Content-Type"];var h=new XMLHttpRequest;if(e.auth){var m=e.auth.username||"",g=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";d.Authorization="Basic "+btoa(m+":"+g)}var v=l(e.baseURL,e.url);function y(){if(h){var r="getAllResponseHeaders"in h?s(h.getAllResponseHeaders()):null,o={data:p&&"text"!==p&&"json"!==p?h.response:h.responseText,status:h.status,statusText:h.statusText,headers:r,config:e,request:h};i(t,n,o),h=null}}if(h.open(e.method.toUpperCase(),a(v,e.params,e.paramsSerializer),!0),h.timeout=e.timeout,"onloadend"in h?h.onloadend=y:h.onreadystatechange=function(){h&&4===h.readyState&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))&&setTimeout(y)},h.onabort=function(){h&&(n(c("Request aborted",e,"ECONNABORTED",h)),h=null)},h.onerror=function(){n(c("Network Error",e,null,h)),h=null},h.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(c(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",h)),h=null},r.isStandardBrowserEnv()){var x=(e.withCredentials||u(v))&&e.xsrfCookieName?o.read(e.xsrfCookieName):void 0;x&&(d[e.xsrfHeaderName]=x)}"setRequestHeader"in h&&r.forEach(d,(function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete d[t]:h.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(h.withCredentials=!!e.withCredentials),p&&"json"!==p&&(h.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&h.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&h.upload&&h.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){h&&(h.abort(),n(e),h=null)})),f||(f=null),h.send(f)}))}},1609:(e,t,n)=>{"use strict";var r=n(4867),i=n(1849),o=n(321),a=n(7185);function l(e){var t=new o(e),n=i(o.prototype.request,t);return r.extend(n,o.prototype,t),r.extend(n,t),n}var s=l(n(5655));s.Axios=o,s.create=function(e){return l(a(s.defaults,e))},s.Cancel=n(5263),s.CancelToken=n(4972),s.isCancel=n(6502),s.all=function(e){return Promise.all(e)},s.spread=n(8713),s.isAxiosError=n(6268),e.exports=s,e.exports.default=s},5263:e=>{"use strict";function t(e){this.message=e}t.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},t.prototype.__CANCEL__=!0,e.exports=t},4972:(e,t,n)=>{"use strict";var r=n(5263);function i(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;e((function(e){n.reason||(n.reason=new r(e),t(n.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var e;return{token:new i((function(t){e=t})),cancel:e}},e.exports=i},6502:e=>{"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},321:(e,t,n)=>{"use strict";var r=n(4867),i=n(5327),o=n(782),a=n(3572),l=n(7185),s=n(4875),u=s.validators;function c(e){this.defaults=e,this.interceptors={request:new o,response:new o}}c.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=l(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&s.assertOptions(t,{silentJSONParsing:u.transitional(u.boolean,"1.0.0"),forcedJSONParsing:u.transitional(u.boolean,"1.0.0"),clarifyTimeoutError:u.transitional(u.boolean,"1.0.0")},!1);var n=[],r=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(r=r&&t.synchronous,n.unshift(t.fulfilled,t.rejected))}));var i,o=[];if(this.interceptors.response.forEach((function(e){o.push(e.fulfilled,e.rejected)})),!r){var c=[a,void 0];for(Array.prototype.unshift.apply(c,n),c=c.concat(o),i=Promise.resolve(e);c.length;)i=i.then(c.shift(),c.shift());return i}for(var f=e;n.length;){var d=n.shift(),p=n.shift();try{f=d(f)}catch(e){p(e);break}}try{i=a(f)}catch(e){return Promise.reject(e)}for(;o.length;)i=i.then(o.shift(),o.shift());return i},c.prototype.getUri=function(e){return e=l(this.defaults,e),i(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(e){c.prototype[e]=function(t,n){return this.request(l(n||{},{method:e,url:t,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(e){c.prototype[e]=function(t,n,r){return this.request(l(r||{},{method:e,url:t,data:n}))}})),e.exports=c},782:(e,t,n)=>{"use strict";var r=n(4867);function i(){this.handlers=[]}i.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(e){r.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=i},4097:(e,t,n)=>{"use strict";var r=n(1793),i=n(7303);e.exports=function(e,t){return e&&!r(t)?i(e,t):t}},5061:(e,t,n)=>{"use strict";var r=n(481);e.exports=function(e,t,n,i,o){var a=new Error(e);return r(a,t,n,i,o)}},3572:(e,t,n)=>{"use strict";var r=n(4867),i=n(8527),o=n(6502),a=n(5655);function l(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return l(e),e.headers=e.headers||{},e.data=i.call(e,e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||a.adapter)(e).then((function(t){return l(e),t.data=i.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return o(t)||(l(e),t&&t.response&&(t.response.data=i.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},481:e=>{"use strict";e.exports=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},7185:(e,t,n)=>{"use strict";var r=n(4867);e.exports=function(e,t){t=t||{};var n={},i=["url","method","data"],o=["headers","auth","proxy","params"],a=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],l=["validateStatus"];function s(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function u(i){r.isUndefined(t[i])?r.isUndefined(e[i])||(n[i]=s(void 0,e[i])):n[i]=s(e[i],t[i])}r.forEach(i,(function(e){r.isUndefined(t[e])||(n[e]=s(void 0,t[e]))})),r.forEach(o,u),r.forEach(a,(function(i){r.isUndefined(t[i])?r.isUndefined(e[i])||(n[i]=s(void 0,e[i])):n[i]=s(void 0,t[i])})),r.forEach(l,(function(r){r in t?n[r]=s(e[r],t[r]):r in e&&(n[r]=s(void 0,e[r]))}));var c=i.concat(o).concat(a).concat(l),f=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===c.indexOf(e)}));return r.forEach(f,u),n}},6026:(e,t,n)=>{"use strict";var r=n(5061);e.exports=function(e,t,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},8527:(e,t,n)=>{"use strict";var r=n(4867),i=n(5655);e.exports=function(e,t,n){var o=this||i;return r.forEach(n,(function(n){e=n.call(o,e,t)})),e}},5655:(e,t,n)=>{"use strict";var r=n(4155),i=n(4867),o=n(6016),a=n(481),l={"Content-Type":"application/x-www-form-urlencoded"};function s(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var u,c={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==r&&"[object process]"===Object.prototype.toString.call(r))&&(u=n(5448)),u),transformRequest:[function(e,t){return o(t,"Accept"),o(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(s(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)||t&&"application/json"===t["Content-Type"]?(s(t,"application/json"),function(e,t,n){if(i.isString(e))try{return(t||JSON.parse)(e),i.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,o=!n&&"json"===this.responseType;if(o||r&&i.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw a(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};c.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],(function(e){c.headers[e]={}})),i.forEach(["post","put","patch"],(function(e){c.headers[e]=i.merge(l)})),e.exports=c},1849:e=>{"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r{"use strict";var r=n(4867);function i(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var o;if(n)o=n(t);else if(r.isURLSearchParams(t))o=t.toString();else{var a=[];r.forEach(t,(function(e,t){null!=e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,(function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),a.push(i(t)+"="+i(e))})))})),o=a.join("&")}if(o){var l=e.indexOf("#");-1!==l&&(e=e.slice(0,l)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}},7303:e=>{"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},4372:(e,t,n)=>{"use strict";var r=n(4867);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,i,o,a){var l=[];l.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&l.push("expires="+new Date(n).toGMTString()),r.isString(i)&&l.push("path="+i),r.isString(o)&&l.push("domain="+o),!0===a&&l.push("secure"),document.cookie=l.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},1793:e=>{"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},6268:e=>{"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}},7985:(e,t,n)=>{"use strict";var r=n(4867);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=i(window.location.href),function(t){var n=r.isString(t)?i(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},6016:(e,t,n)=>{"use strict";var r=n(4867);e.exports=function(e,t){r.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))}},4109:(e,t,n)=>{"use strict";var r=n(4867),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),(function(e){if(o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t){if(a[t]&&i.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}})),a):a}},8713:e=>{"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},4875:(e,t,n)=>{"use strict";var r=n(8593),i={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){i[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var o={},a=r.version.split(".");function l(e,t){for(var n=t?t.split("."):a,r=e.split("."),i=0;i<3;i++){if(n[i]>r[i])return!0;if(n[i]0;){var o=r[i],a=t[o];if(a){var l=e[o],s=void 0===l||a(l,o,e);if(!0!==s)throw new TypeError("option "+o+" must be "+s)}else if(!0!==n)throw Error("Unknown option "+o)}},validators:i}},4867:(e,t,n)=>{"use strict";var r=n(1849),i=Object.prototype.toString;function o(e){return"[object Array]"===i.call(e)}function a(e){return void 0===e}function l(e){return null!==e&&"object"==typeof e}function s(e){if("[object Object]"!==i.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function u(e){return"[object Function]"===i.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),o(e))for(var n=0,r=e.length;n{n(3225)},3225:(e,t,n)=>{"use strict";n.r(t);var r,i,o,a,l=n(8508),s=n.n(l),u=n(9669),c=n.n(u),f=(n(6486),n(4442)),d=n.n(f),p=Object.create,h=Object.defineProperty,m=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty,v=Object.getOwnPropertyNames,y=Object.getOwnPropertyDescriptor,x=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),b=x((e=>{function t(e,t){const n=Object.create(null),r=e.split(",");for(let e=0;e!!n[e.toLowerCase()]:e=>!!n[e]}Object.defineProperty(e,"__esModule",{value:!0});var r={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"HYDRATE_EVENTS",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},i={1:"STABLE",2:"DYNAMIC",3:"FORWARDED"},o=t("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt");var a="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",l=t(a),s=t(a+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected"),u=/[>/="'\u0009\u000a\u000c\u0020]/,c={};var f=t("animation-iteration-count,border-image-outset,border-image-slice,border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,stroke-miterlimit,stroke-opacity,stroke-width"),d=t("accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap");var p=/;(?![^(]*\))/g,h=/:(.+)/;function m(e){const t={};return e.split(p).forEach((e=>{if(e){const n=e.split(h);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}var g=t("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"),v=t("svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"),y=t("area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"),x=/["'&<>]/;var b=/^-?>||--!>|M(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:F(t)?{[`Set(${t.size})`]:[...t.values()]}:!N(t)||E(t)||I(t)?t:String(t),D=Object.freeze({}),_=Object.freeze([]),S=/^on[^a-z]/,A=Object.assign,j=Object.prototype.hasOwnProperty,E=Array.isArray,M=e=>"[object Map]"===z(e),F=e=>"[object Set]"===z(e),T=e=>e instanceof Date,L=e=>"function"==typeof e,O=e=>"string"==typeof e,N=e=>null!==e&&"object"==typeof e,B=Object.prototype.toString,z=e=>B.call(e),I=e=>"[object Object]"===z(e),R=t(",key,ref,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),P=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},H=/-(\w)/g,W=P((e=>e.replace(H,((e,t)=>t?t.toUpperCase():"")))),q=/\B([A-Z])/g,U=P((e=>e.replace(q,"-$1").toLowerCase())),$=P((e=>e.charAt(0).toUpperCase()+e.slice(1))),V=P((e=>e?`on${$(e)}`:""));e.EMPTY_ARR=_,e.EMPTY_OBJ=D,e.NO=()=>!1,e.NOOP=()=>{},e.PatchFlagNames=r,e.babelParserDefaultPlugins=["bigInt","optionalChaining","nullishCoalescingOperator"],e.camelize=W,e.capitalize=$,e.def=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},e.escapeHtml=function(e){const t=""+e,n=x.exec(t);if(!n)return t;let r,i,o="",a=0;for(i=n.index;i=t){for(let a=e-2;a<=e+2||n>i;a++){if(a<0||a>=r.length)continue;const l=a+1;o.push(`${l}${" ".repeat(Math.max(3-String(l).length,0))}| ${r[a]}`);const s=r[a].length;if(a===e){const e=t-(i-s)+1,r=Math.max(1,n>i?s-e:n-t);o.push(" | "+" ".repeat(e)+"^".repeat(r))}else if(a>e){if(n>i){const e=Math.max(Math.min(n-i,s),1);o.push(" | "+"^".repeat(e))}i+=s+1}}break}return o.join("\n")},e.getGlobalThis=()=>k||(k="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{}),e.hasChanged=(e,t)=>e!==t&&(e==e||t==t),e.hasOwn=(e,t)=>j.call(e,t),e.hyphenate=U,e.invokeArrayFns=(e,t)=>{for(let n=0;nO(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,e.isKnownAttr=d,e.isMap=M,e.isModelListener=e=>e.startsWith("onUpdate:"),e.isNoUnitNumericStyleProp=f,e.isObject=N,e.isOn=e=>S.test(e),e.isPlainObject=I,e.isPromise=e=>N(e)&&L(e.then)&&L(e.catch),e.isReservedProp=R,e.isSSRSafeAttrName=function(e){if(c.hasOwnProperty(e))return c[e];const t=u.test(e);return t&&console.error(`unsafe attribute name: ${e}`),c[e]=!t},e.isSVGTag=v,e.isSet=F,e.isSpecialBooleanAttr=l,e.isString=O,e.isSymbol=e=>"symbol"==typeof e,e.isVoidTag=y,e.looseEqual=w,e.looseIndexOf=function(e,t){return e.findIndex((e=>w(e,t)))},e.makeMap=t,e.normalizeClass=function e(t){let n="";if(O(t))n=t;else if(E(t))for(let r=0;r{const n=e.indexOf(t);n>-1&&e.splice(n,1)},e.slotFlagsText=i,e.stringifyStyle=function(e){let t="";if(!e)return t;for(const n in e){const r=e[n],i=n.startsWith("--")?n:U(n);(O(r)||"number"==typeof r&&f(i))&&(t+=`${i}:${r};`)}return t},e.toDisplayString=e=>null==e?"":N(e)?JSON.stringify(e,C,2):String(e),e.toHandlerKey=V,e.toNumber=e=>{const t=parseFloat(e);return isNaN(t)?e:t},e.toRawType=e=>z(e).slice(8,-1),e.toTypeString=z})),w=x(((e,t)=>{t.exports=b()})),k=x((e=>{Object.defineProperty(e,"__esModule",{value:!0});var t,n=w(),r=new WeakMap,i=[],o=Symbol("iterate"),a=Symbol("Map key iterate");function l(e,r=n.EMPTY_OBJ){(function(e){return e&&!0===e._isEffect})(e)&&(e=e.raw);const o=function(e,n){const r=function(){if(!r.active)return e();if(!i.includes(r)){u(r);try{return p(),i.push(r),t=r,e()}finally{i.pop(),h(),t=i[i.length-1]}}};return r.id=s++,r.allowRecurse=!!n.allowRecurse,r._isEffect=!0,r.active=!0,r.raw=e,r.deps=[],r.options=n,r}(e,r);return r.lazy||o(),o}var s=0;function u(e){const{deps:t}=e;if(t.length){for(let n=0;n{e&&e.forEach((e=>{(e!==t||e.allowRecurse)&&d.add(e)}))};if("clear"===i)f.forEach(p);else if("length"===l&&n.isArray(e))f.forEach(((e,t)=>{("length"===t||t>=s)&&p(e)}));else switch(void 0!==l&&p(f.get(l)),i){case"add":n.isArray(e)?n.isIntegerKey(l)&&p(f.get("length")):(p(f.get(o)),n.isMap(e)&&p(f.get(a)));break;case"delete":n.isArray(e)||(p(f.get(o)),n.isMap(e)&&p(f.get(a)));break;case"set":n.isMap(e)&&p(f.get(o))}d.forEach((t=>{t.options.onTrigger&&t.options.onTrigger({effect:t,target:e,key:l,type:i,newValue:s,oldValue:u,oldTarget:c}),t.options.scheduler?t.options.scheduler(t):t()}))}var v=n.makeMap("__proto__,__v_isRef,__isVue"),y=new Set(Object.getOwnPropertyNames(Symbol).map((e=>Symbol[e])).filter(n.isSymbol)),x=_(),b=_(!1,!0),k=_(!0),C=_(!0,!0),D={};function _(e=!1,t=!1){return function(r,i,o){if("__v_isReactive"===i)return!e;if("__v_isReadonly"===i)return e;if("__v_raw"===i&&o===(e?t?ae:oe:t?ie:re).get(r))return r;const a=n.isArray(r);if(!e&&a&&n.hasOwn(D,i))return Reflect.get(D,i,o);const l=Reflect.get(r,i,o);if(n.isSymbol(i)?y.has(i):v(i))return l;if(e||m(r,"get",i),t)return l;if(me(l)){return!a||!n.isIntegerKey(i)?l.value:l}return n.isObject(l)?e?se(l):le(l):l}}["includes","indexOf","lastIndexOf"].forEach((e=>{const t=Array.prototype[e];D[e]=function(...e){const n=pe(this);for(let e=0,t=this.length;e{const t=Array.prototype[e];D[e]=function(...e){d();const n=t.apply(this,e);return h(),n}}));var S=j(),A=j(!0);function j(e=!1){return function(t,r,i,o){let a=t[r];if(!e&&(i=pe(i),a=pe(a),!n.isArray(t)&&me(a)&&!me(i)))return a.value=i,!0;const l=n.isArray(t)&&n.isIntegerKey(r)?Number(r)(console.warn(`Set operation on key "${String(t)}" failed: target is readonly.`,e),!0),deleteProperty:(e,t)=>(console.warn(`Delete operation on key "${String(t)}" failed: target is readonly.`,e),!0)},F=n.extend({},E,{get:b,set:A}),T=n.extend({},M,{get:C}),L=e=>n.isObject(e)?le(e):e,O=e=>n.isObject(e)?se(e):e,N=e=>e,B=e=>Reflect.getPrototypeOf(e);function z(e,t,n=!1,r=!1){const i=pe(e=e.__v_raw),o=pe(t);t!==o&&!n&&m(i,"get",t),!n&&m(i,"get",o);const{has:a}=B(i),l=r?N:n?O:L;return a.call(i,t)?l(e.get(t)):a.call(i,o)?l(e.get(o)):void(e!==i&&e.get(t))}function I(e,t=!1){const n=this.__v_raw,r=pe(n),i=pe(e);return e!==i&&!t&&m(r,"has",e),!t&&m(r,"has",i),e===i?n.has(e):n.has(e)||n.has(i)}function R(e,t=!1){return e=e.__v_raw,!t&&m(pe(e),"iterate",o),Reflect.get(e,"size",e)}function P(e){e=pe(e);const t=pe(this);return B(t).has.call(t,e)||(t.add(e),g(t,"add",e,e)),this}function H(e,t){t=pe(t);const r=pe(this),{has:i,get:o}=B(r);let a=i.call(r,e);a?ne(r,i,e):(e=pe(e),a=i.call(r,e));const l=o.call(r,e);return r.set(e,t),a?n.hasChanged(t,l)&&g(r,"set",e,t,l):g(r,"add",e,t),this}function W(e){const t=pe(this),{has:n,get:r}=B(t);let i=n.call(t,e);i?ne(t,n,e):(e=pe(e),i=n.call(t,e));const o=r?r.call(t,e):void 0,a=t.delete(e);return i&&g(t,"delete",e,void 0,o),a}function q(){const e=pe(this),t=0!==e.size,r=n.isMap(e)?new Map(e):new Set(e),i=e.clear();return t&&g(e,"clear",void 0,void 0,r),i}function U(e,t){return function(n,r){const i=this,a=i.__v_raw,l=pe(a),s=t?N:e?O:L;return!e&&m(l,"iterate",o),a.forEach(((e,t)=>n.call(r,s(e),s(t),i)))}}function $(e,t,r){return function(...i){const l=this.__v_raw,s=pe(l),u=n.isMap(s),c="entries"===e||e===Symbol.iterator&&u,f="keys"===e&&u,d=l[e](...i),p=r?N:t?O:L;return!t&&m(s,"iterate",f?a:o),{next(){const{value:e,done:t}=d.next();return t?{value:e,done:t}:{value:c?[p(e[0]),p(e[1])]:p(e),done:t}},[Symbol.iterator](){return this}}}}function V(e){return function(...t){{const r=t[0]?`on key "${t[0]}" `:"";console.warn(`${n.capitalize(e)} operation ${r}failed: target is readonly.`,pe(this))}return"delete"!==e&&this}}var G={get(e){return z(this,e)},get size(){return R(this)},has:I,add:P,set:H,delete:W,clear:q,forEach:U(!1,!1)},K={get(e){return z(this,e,!1,!0)},get size(){return R(this)},has:I,add:P,set:H,delete:W,clear:q,forEach:U(!1,!0)},X={get(e){return z(this,e,!0)},get size(){return R(this,!0)},has(e){return I.call(this,e,!0)},add:V("add"),set:V("set"),delete:V("delete"),clear:V("clear"),forEach:U(!0,!1)},Z={get(e){return z(this,e,!0,!0)},get size(){return R(this,!0)},has(e){return I.call(this,e,!0)},add:V("add"),set:V("set"),delete:V("delete"),clear:V("clear"),forEach:U(!0,!0)};function Y(e,t){const r=t?e?Z:K:e?X:G;return(t,i,o)=>"__v_isReactive"===i?!e:"__v_isReadonly"===i?e:"__v_raw"===i?t:Reflect.get(n.hasOwn(r,i)&&i in t?r:t,i,o)}["keys","values","entries",Symbol.iterator].forEach((e=>{G[e]=$(e,!1,!1),X[e]=$(e,!0,!1),K[e]=$(e,!1,!0),Z[e]=$(e,!0,!0)}));var J={get:Y(!1,!1)},Q={get:Y(!1,!0)},ee={get:Y(!0,!1)},te={get:Y(!0,!0)};function ne(e,t,r){const i=pe(r);if(i!==r&&t.call(e,i)){const t=n.toRawType(e);console.warn(`Reactive ${t} contains both the raw and reactive versions of the same object${"Map"===t?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}var re=new WeakMap,ie=new WeakMap,oe=new WeakMap,ae=new WeakMap;function le(e){return e&&e.__v_isReadonly?e:ue(e,!1,E,J,re)}function se(e){return ue(e,!0,M,ee,oe)}function ue(e,t,r,i,o){if(!n.isObject(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const a=o.get(e);if(a)return a;const l=(s=e).__v_skip||!Object.isExtensible(s)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(n.toRawType(s));var s;if(0===l)return e;const u=new Proxy(e,2===l?i:r);return o.set(e,u),u}function ce(e){return fe(e)?ce(e.__v_raw):!(!e||!e.__v_isReactive)}function fe(e){return!(!e||!e.__v_isReadonly)}function de(e){return ce(e)||fe(e)}function pe(e){return e&&pe(e.__v_raw)||e}var he=e=>n.isObject(e)?le(e):e;function me(e){return Boolean(e&&!0===e.__v_isRef)}function ge(e,t=!1){return me(e)?e:new class{constructor(e,t=!1){this._rawValue=e,this._shallow=t,this.__v_isRef=!0,this._value=t?e:he(e)}get value(){return m(pe(this),"get","value"),this._value}set value(e){n.hasChanged(pe(e),this._rawValue)&&(this._rawValue=e,this._value=this._shallow?e:he(e),g(pe(this),"set","value",e))}}(e,t)}function ve(e){return me(e)?e.value:e}var ye={get:(e,t,n)=>ve(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const i=e[t];return me(i)&&!me(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function xe(e,t){return me(e[t])?e[t]:new class{constructor(e,t){this._object=e,this._key=t,this.__v_isRef=!0}get value(){return this._object[this._key]}set value(e){this._object[this._key]=e}}(e,t)}e.ITERATE_KEY=o,e.computed=function(e){let t,r;return n.isFunction(e)?(t=e,r=()=>{console.warn("Write operation failed: computed value is readonly")}):(t=e.get,r=e.set),new class{constructor(e,t,n){this._setter=t,this._dirty=!0,this.__v_isRef=!0,this.effect=l(e,{lazy:!0,scheduler:()=>{this._dirty||(this._dirty=!0,g(pe(this),"set","value"))}}),this.__v_isReadonly=n}get value(){const e=pe(this);return e._dirty&&(e._value=this.effect(),e._dirty=!1),m(e,"get","value"),e._value}set value(e){this._setter(e)}}(t,r,n.isFunction(e)||!e.set)},e.customRef=function(e){return new class{constructor(e){this.__v_isRef=!0;const{get:t,set:n}=e((()=>m(this,"get","value")),(()=>g(this,"set","value")));this._get=t,this._set=n}get value(){return this._get()}set value(e){this._set(e)}}(e)},e.effect=l,e.enableTracking=p,e.isProxy=de,e.isReactive=ce,e.isReadonly=fe,e.isRef=me,e.markRaw=function(e){return n.def(e,"__v_skip",!0),e},e.pauseTracking=d,e.proxyRefs=function(e){return ce(e)?e:new Proxy(e,ye)},e.reactive=le,e.readonly=se,e.ref=function(e){return ge(e)},e.resetTracking=h,e.shallowReactive=function(e){return ue(e,!1,F,Q,ie)},e.shallowReadonly=function(e){return ue(e,!0,T,te,ae)},e.shallowRef=function(e){return ge(e,!0)},e.stop=function(e){e.active&&(u(e),e.options.onStop&&e.options.onStop(),e.active=!1)},e.toRaw=pe,e.toRef=xe,e.toRefs=function(e){de(e)||console.warn("toRefs() expects a reactive object but received a plain one.");const t=n.isArray(e)?new Array(e.length):{};for(const n in e)t[n]=xe(e,n);return t},e.track=m,e.trigger=g,e.triggerRef=function(e){g(pe(e),"set","value",e.value)},e.unref=ve})),C=x(((e,t)=>{t.exports=k()})),D=!1,_=!1,S=[];function A(e){!function(e){S.includes(e)||S.push(e);_||D||(D=!0,queueMicrotask(j))}(e)}function j(){D=!1,_=!0;for(let e=0;e{(void 0===t||t.includes(n))&&r.forEach((e=>e())),delete e._x_attributeCleanups[n]}))}var N=new MutationObserver(W),B=!1;function z(){N.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),B=!0}var I=[],R=!1;function P(){(I=I.concat(N.takeRecords())).length&&!R&&(R=!0,queueMicrotask((()=>{W(I),I.length=0,R=!1})))}function H(e){if(!B)return e();P(),N.disconnect(),B=!1;let t=e();return z(),t}function W(e){let t=[],n=[],r=new Map,i=new Map;for(let o=0;o1===e.nodeType&&t.push(e))),e[o].removedNodes.forEach((e=>1===e.nodeType&&n.push(e)))),"attributes"===e[o].type)){let t=e[o].target,n=e[o].attributeName,a=e[o].oldValue,l=()=>{r.has(t)||r.set(t,[]),r.get(t).push({name:n,value:t.getAttribute(n)})},s=()=>{i.has(t)||i.set(t,[]),i.get(t).push(n)};t.hasAttribute(n)&&null===a?l():t.hasAttribute(n)?(s(),l()):s()}i.forEach(((e,t)=>{O(t,e)})),r.forEach(((e,t)=>{F.forEach((n=>n(t,e)))}));for(let e of t)n.includes(e)||L.forEach((t=>t(e)));for(let e of n)t.includes(e)||T.forEach((t=>t(e)));t=null,n=null,r=null,i=null}function q(e,t,n){return e._x_dataStack=[t,...$(n||e)],()=>{e._x_dataStack=e._x_dataStack.filter((e=>e!==t))}}function U(e,t){let n=e._x_dataStack[0];Object.entries(t).forEach((([e,t])=>{n[e]=t}))}function $(e){return e._x_dataStack?e._x_dataStack:"function"==typeof ShadowRoot&&e instanceof ShadowRoot?$(e.host):e.parentNode?$(e.parentNode):[]}function V(e){return new Proxy({},{ownKeys:()=>Array.from(new Set(e.flatMap((e=>Object.keys(e))))),has:(t,n)=>e.some((e=>e.hasOwnProperty(n))),get:(t,n)=>(e.find((e=>e.hasOwnProperty(n)))||{})[n],set:(t,n,r)=>{let i=e.find((e=>e.hasOwnProperty(n)));return i?i[n]=r:e[e.length-1][n]=r,!0}})}function G(e){let t=(n,r="")=>{Object.entries(n).forEach((([i,o])=>{let a=""===r?i:`${r}.${i}`;var l;"object"==typeof o&&null!==o&&o._x_interceptor?n[i]=o.initialize(e,a,i):"object"!=typeof(l=o)||Array.isArray(l)||null===l||o===n||o instanceof Element||t(o,a)}))};return t(e)}function K(e,t=(()=>{})){let n={initialValue:void 0,_x_interceptor:!0,initialize(t,n,r){return e(this.initialValue,(()=>function(e,t){return t.split(".").reduce(((e,t)=>e[t]),e)}(t,n)),(e=>X(t,n,e)),n,r)}};return t(n),e=>{if("object"==typeof e&&null!==e&&e._x_interceptor){let t=n.initialize.bind(n);n.initialize=(r,i,o)=>{let a=e.initialize(r,i,o);return n.initialValue=a,t(r,i,o)}}else n.initialValue=e;return n}}function X(e,t,n){if("string"==typeof t&&(t=t.split(".")),1!==t.length){if(0===t.length)throw error;return e[t[0]]||(e[t[0]]={}),X(e[t[0]],t.slice(1),n)}e[t[0]]=n}var Z={};function Y(e,t){Z[e]=t}function J(e,t){return Object.entries(Z).forEach((([n,r])=>{Object.defineProperty(e,`$${n}`,{get:()=>r(t,{Alpine:$e,interceptor:K}),enumerable:!1})})),e}function Q(e,t,n={}){let r;return ee(e,t)((e=>r=e),n),r}function ee(...e){return te(...e)}var te=ne;function ne(e,t){let n={};J(n,e);let r=[n,...$(e)];if("function"==typeof t)return function(e,t){return(n=(()=>{}),{scope:r={},params:i=[]}={})=>{ie(n,t.apply(V([r,...e]),i))}}(r,t);let i=function(e,t){let n=function(e){if(re[e])return re[e];let t=Object.getPrototypeOf((async function(){})).constructor,n=/^[\n\s]*if.*\(.*\)/.test(e)||/^(let|const)/.test(e)?`(() => { ${e} })()`:e,r=new t(["__self","scope"],`with (scope) { __self.result = ${n} }; __self.finished = true; return __self.result;`);return re[e]=r,r}(t);return(t=(()=>{}),{scope:r={},params:i=[]}={})=>{n.result=void 0,n.finished=!1;let o=V([r,...e]),a=n(n,o);n.finished?ie(t,n.result,o,i):a.then((e=>{ie(t,e,o,i)}))}}(r,t);return oe.bind(null,e,t,i)}var re={};function ie(e,t,n,r){if("function"==typeof t){let i=t.apply(n,r);i instanceof Promise?i.then((t=>ie(e,t,n,r))):e(i)}else e(t)}function oe(e,t,n,...r){try{return n(...r)}catch(n){throw console.warn(`Alpine Expression Error: ${n.message}\n\nExpression: "${t}"\n\n`,e),n}}var ae="x-";function le(e=""){return ae+e}var se={};function ue(e,t){se[e]=t}function ce(e,t,n){let r={};return Array.from(t).map(me(((e,t)=>r[e]=t))).filter(ye).map(function(e,t){return({name:n,value:r})=>{let i=n.match(xe()),o=n.match(/:([a-zA-Z0-9\-:]+)/),a=n.match(/\.[^.\]]+(?=[^\]]*$)/g)||[],l=t||e[n]||n;return{type:i?i[1]:null,value:o?o[1]:null,modifiers:a.map((e=>e.replace(".",""))),expression:r,original:l}}}(r,n)).sort(ke).map((t=>function(e,t){let n=()=>{},r=se[t.type]||n,a=[],l=e=>a.push(e),[s,u]=function(e){let t=()=>{};return[n=>{let r=i(n);e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach((e=>e()))}),e._x_effects.add(r),t=()=>{void 0!==r&&(e._x_effects.delete(r),o(r))}},()=>{t()}]}(e);a.push(u);let c={Alpine:$e,effect:s,cleanup:l,evaluateLater:ee.bind(ee,e),evaluate:Q.bind(Q,e)},f=()=>a.forEach((e=>e()));!function(e,t,n){e._x_attributeCleanups||(e._x_attributeCleanups={}),e._x_attributeCleanups[t]||(e._x_attributeCleanups[t]=[]),e._x_attributeCleanups[t].push(n)}(e,t.original,f);let d=()=>{e._x_ignore||e._x_ignoreSelf||(r.inline&&r.inline(e,t,c),r=r.bind(r,e,t,c),fe?de.get(pe).push(r):r())};return d.runCleanups=f,d}(e,t)))}var fe=!1,de=new Map,pe=Symbol();var he=(e,t)=>({name:n,value:r})=>(n.startsWith(e)&&(n=n.replace(e,t)),{name:n,value:r});function me(e=(()=>{})){return({name:t,value:n})=>{let{name:r,value:i}=ge.reduce(((e,t)=>t(e)),{name:t,value:n});return r!==t&&e(r,t),{name:r,value:i}}}var ge=[];function ve(e){ge.push(e)}function ye({name:e}){return xe().test(e)}var xe=()=>new RegExp(`^${ae}([^:^.]+)\\b`);var be="DEFAULT",we=["ignore","ref","data","bind","init","for","model","transition","show","if",be,"element"];function ke(e,t){let n=-1===we.indexOf(e.type)?be:e.type,r=-1===we.indexOf(t.type)?be:t.type;return we.indexOf(n)-we.indexOf(r)}function Ce(e,t,n={}){e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0,cancelable:!0}))}var De=[],_e=!1;function Se(e){De.push(e),queueMicrotask((()=>{_e||setTimeout((()=>{Ae()}))}))}function Ae(){for(_e=!1;De.length;)De.shift()()}function je(e,t){if("function"==typeof ShadowRoot&&e instanceof ShadowRoot)return void Array.from(e.children).forEach((e=>je(e,t)));let n=!1;if(t(e,(()=>n=!0)),n)return;let r=e.firstElementChild;for(;r;)je(r,t),r=r.nextElementSibling}function Ee(e,...t){console.warn(`Alpine Warning: ${e}`,...t)}var Me=[],Fe=[];function Te(){return Me.map((e=>e()))}function Le(e){Me.push(e)}function Oe(e){if(e){if(Te().some((t=>e.matches(t))))return e;if(e.parentElement)return Oe(e.parentElement)}}function Ne(e,t=je){!function(e){fe=!0;let t=Symbol();pe=t,de.set(t,[]);let n=()=>{for(;de.get(t).length;)de.get(t).shift()();de.delete(t)};e(n),fe=!1,n()}((()=>{t(e,((e,t)=>{ce(e,e.attributes).forEach((e=>e())),e._x_ignore&&t()}))}))}function Be(e,t){var n;return function(){var r=this,i=arguments,o=function(){n=null,e.apply(r,i)};clearTimeout(n),n=setTimeout(o,t)}}function ze(e,t){let n;return function(){let r=this,i=arguments;n||(e.apply(r,i),n=!0,setTimeout((()=>n=!1),t))}}var Ie={},Re=!1;var Pe=!1;function He(e){return(...t)=>Pe||e(...t)}var We={};var qe,Ue,$e={get reactive(){return r},get release(){return o},get effect(){return i},get raw(){return a},version:"3.3.3",disableEffectScheduling:function(e){E=!1,e(),E=!0},setReactivityEngine:function(e){r=e.reactive,o=e.release,i=t=>e.effect(t,{scheduler:e=>{E?A(e):e()}}),a=e.raw},addRootSelector:Le,mapAttributes:ve,evaluateLater:ee,setEvaluator:function(e){te=e},closestRoot:Oe,interceptor:K,mutateDom:H,directive:ue,throttle:ze,debounce:Be,evaluate:Q,initTree:Ne,nextTick:Se,prefix:function(e){ae=e},plugin:function(e){e($e)},magic:Y,store:function(e,t){if(Re||(Ie=r(Ie),Re=!0),void 0===t)return Ie[e];Ie[e]=t,"object"==typeof t&&null!==t&&t.hasOwnProperty("init")&&"function"==typeof t.init&&Ie[e].init()},start:function(){var e;document.body||Ee("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's ` +@endpush diff --git a/resources/views/catalog/attribute/create.blade.php b/resources/views/catalog/attribute/create.blade.php new file mode 100644 index 000000000..f4c54dbad --- /dev/null +++ b/resources/views/catalog/attribute/create.blade.php @@ -0,0 +1,53 @@ + +
+
+
+

+ {{ __('avored::system.create') }} {{ __('avored::system.attribute') }} +

+ +
+ +
+ + + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + {{ __('avored::system.cancel') }} + +
+
+
+
+ +
+ +
diff --git a/resources/views/catalog/attribute/edit.blade.php b/resources/views/catalog/attribute/edit.blade.php new file mode 100644 index 000000000..07c23b03f --- /dev/null +++ b/resources/views/catalog/attribute/edit.blade.php @@ -0,0 +1,50 @@ + +
+
+
+

+ {{ __('avored::system.edit') }} {{ __('avored::system.attribute') }} +

+ +
+ +
+ + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + {{ __('avored::system.cancel') }} + +
+
+
+
+
+
diff --git a/resources/views/catalog/attribute/index.blade.php b/resources/views/catalog/attribute/index.blade.php new file mode 100644 index 000000000..75a36443e --- /dev/null +++ b/resources/views/catalog/attribute/index.blade.php @@ -0,0 +1,143 @@ + +
+
+
+

+ {{ __('avored::system.attribute') }} {{ __('avored::system.list') }} +

+ + + {{ __('avored::system.create') }} + + +
+ +
+ +
+ + + + + + {{ __('avored::system.name') }} + + + {{ __('avored::system.slug') }} + + + {{ __('avored::system.display_as') }} + + + + {{ __('avored::system.actions') }} + + + + + @foreach ($attributes as $attribute) + + + {{ $attribute->name ?? '' }} + + + {{ $attribute->slug ?? '' }} + + + {{ $attribute->display_as ?? '' }} + + + + +
+ + + + | + + + + + +
+
+
+ @endforeach +
+
+
+ {{ $attributes->render() }} +
+
+
+
+ + +
+
diff --git a/resources/views/catalog/category/_fields.blade.php b/resources/views/catalog/category/_fields.blade.php new file mode 100644 index 000000000..5ec1f2b3c --- /dev/null +++ b/resources/views/catalog/category/_fields.blade.php @@ -0,0 +1,68 @@ +
+ + + + @foreach ($options as $optionValue => $optionLabel) + + @endforeach + + +
+ +
+
+
+ +
+
+
+
+ +
+
+
+ + +
+ +
+ +
+
+
+ +
+
+ +
+
+ +
+
+
diff --git a/resources/views/catalog/category/create.blade.php b/resources/views/catalog/category/create.blade.php new file mode 100644 index 000000000..626448b1f --- /dev/null +++ b/resources/views/catalog/category/create.blade.php @@ -0,0 +1,53 @@ + +
+
+
+

+ {{ __('avored::system.create') }} {{ __('avored::system.category') }} +

+ +
+ +
+ + + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + Cancel + +
+
+
+
+ +
+ +
diff --git a/resources/views/catalog/category/edit.blade.php b/resources/views/catalog/category/edit.blade.php new file mode 100644 index 000000000..0bffdaa51 --- /dev/null +++ b/resources/views/catalog/category/edit.blade.php @@ -0,0 +1,50 @@ + +
+
+
+

+ {{ __('avored::system.edit') }} {{ __('avored::system.category') }} +

+ +
+ +
+ + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + {{ __('avored::system.cancel') }} + +
+
+
+
+
+
diff --git a/resources/views/catalog/category/index.blade.php b/resources/views/catalog/category/index.blade.php new file mode 100644 index 000000000..fd6ea3f94 --- /dev/null +++ b/resources/views/catalog/category/index.blade.php @@ -0,0 +1,152 @@ + +
+
+
+

+ {{ __('avored::system.category') }} {{ __('avored::system.list') }} +

+ + + {{ __('avored::system.create') }} + + +
+ +
+ +
+ + + + + {{ __('avored::system.parent') }} + + + + {{ __('avored::system.name') }} + + + {{ __('avored::system.slug') }} + + + {{ __('avored::system.meta_title') }} + + + {{ __('avored::system.meta_description') }} + + + {{ __('avored::system.actions') }} + + + + + @foreach ($categories as $category) + + + {{ $category->parent->name ?? '' }} + + + {{ $category->name ?? '' }} + + + {{ $category->slug ?? '' }} + + + {{ $category->meta_title ?? '' }} + + + {{ $category->meta_description ?? '' }} + + +
+ + + + | + + + + + +
+
+
+ @endforeach +
+
+
+ {{ $categories->render() }} +
+
+
+
+ + +
+
diff --git a/resources/views/catalog/product/_fields.blade.php b/resources/views/catalog/product/_fields.blade.php new file mode 100644 index 000000000..9f6cd34db --- /dev/null +++ b/resources/views/catalog/product/_fields.blade.php @@ -0,0 +1,188 @@ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+ + @foreach ($options as $optionValue => $optionLabel) + + @endforeach + + +
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
+ +
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+ + + +
+
+
+ +
+
+ +
+
+ +
+
+
diff --git a/resources/views/catalog/product/create.blade.php b/resources/views/catalog/product/create.blade.php new file mode 100644 index 000000000..71c7175aa --- /dev/null +++ b/resources/views/catalog/product/create.blade.php @@ -0,0 +1,83 @@ + +
+
+
+

+ {{ __('avored::system.create') }} {{ __('avored::system.product') }} +

+ +
+ +
+ + +
+
+
+ + {{ __('avored::system.basic_info') }} + + + + +
+ +
+
+
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+ + + + @foreach ($typeOptions as $typeValue => $typeLabel) + + @endforeach + + +
+
+
+
+ +
+ + + + Cancel + +
+
+
+
+ +
+ +
diff --git a/resources/views/catalog/product/edit.blade.php b/resources/views/catalog/product/edit.blade.php new file mode 100644 index 000000000..59cd5fbbc --- /dev/null +++ b/resources/views/catalog/product/edit.blade.php @@ -0,0 +1,50 @@ + +
+
+
+

+ {{ __('avored::system.edit') }} {{ __('avored::system.product') }} +

+ +
+ +
+ + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + {{ __('avored::system.cancel') }} + +
+
+
+
+
+
diff --git a/resources/views/catalog/product/index.blade.php b/resources/views/catalog/product/index.blade.php new file mode 100644 index 000000000..434a08b0d --- /dev/null +++ b/resources/views/catalog/product/index.blade.php @@ -0,0 +1,146 @@ + +
+
+
+

+ {{ __('avored::system.product') }} {{ __('avored::system.list') }} +

+ + + {{ __('avored::system.create') }} + + +
+ +
+ +
+ + + + + + {{ __('avored::system.name') }} + + + {{ __('avored::system.slug') }} + + + {{ __('avored::system.meta_title') }} + + + {{ __('avored::system.meta_description') }} + + + {{ __('avored::system.actions') }} + + + + + @foreach ($products as $product) + + + {{ $product->name ?? '' }} + + + {{ $product->slug ?? '' }} + + + {{ $product->meta_title ?? '' }} + + + {{ $product->meta_description ?? '' }} + + +
+ + + + | + + + + + +
+
+
+ @endforeach +
+
+
+ {{ $products->render() }} +
+
+
+
+ + +
+
diff --git a/resources/views/catalog/property/_fields.blade.php b/resources/views/catalog/property/_fields.blade.php new file mode 100644 index 000000000..19a00c3c3 --- /dev/null +++ b/resources/views/catalog/property/_fields.blade.php @@ -0,0 +1,186 @@ +
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
+
+
+ + + @foreach ($fieldTypeOptions as $fieldTypeValue => $fieldTypeLabel) + + @endforeach + + +
+ +
+
+
+ + + + @foreach ($dataTypeOptions as $dataTypeValue => $dataTypeLabel) + + @endforeach + + +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ + + + + +
+ +@push('scripts') + +@endpush diff --git a/resources/views/catalog/property/create.blade.php b/resources/views/catalog/property/create.blade.php new file mode 100644 index 000000000..d9841227a --- /dev/null +++ b/resources/views/catalog/property/create.blade.php @@ -0,0 +1,53 @@ + +
+
+
+

+ {{ __('avored::system.create') }} {{ __('avored::system.property') }} +

+ +
+ +
+ + + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + {{ __('avored::system.cancel') }} + +
+
+
+
+ +
+ +
diff --git a/resources/views/catalog/property/edit.blade.php b/resources/views/catalog/property/edit.blade.php new file mode 100644 index 000000000..886a63aa9 --- /dev/null +++ b/resources/views/catalog/property/edit.blade.php @@ -0,0 +1,50 @@ + +
+
+
+

+ {{ __('avored::system.edit') }} {{ __('avored::system.property') }} +

+ +
+ +
+ + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + {{ __('avored::system.cancel') }} + +
+
+
+
+
+
diff --git a/resources/views/catalog/property/index.blade.php b/resources/views/catalog/property/index.blade.php new file mode 100644 index 000000000..f89e90097 --- /dev/null +++ b/resources/views/catalog/property/index.blade.php @@ -0,0 +1,143 @@ + +
+
+
+

+ {{ __('avored::system.property') }} {{ __('avored::system.list') }} +

+ + + {{ __('avored::system.create') }} + + +
+ +
+ +
+ + + + + + {{ __('avored::system.name') }} + + + {{ __('avored::system.slug') }} + + + {{ __('avored::system.data_type') }} + + + + {{ __('avored::system.actions') }} + + + + + @foreach ($properties as $property) + + + {{ $property->name ?? '' }} + + + {{ $property->slug ?? '' }} + + + {{ $property->data_type ?? '' }} + + + + +
+ + + + | + + + + + +
+
+
+ @endforeach +
+
+
+ {{ $properties->render() }} +
+
+
+
+ + +
+
diff --git a/resources/views/cms/page/_fields.blade.php b/resources/views/cms/page/_fields.blade.php new file mode 100644 index 000000000..1abf04a3e --- /dev/null +++ b/resources/views/cms/page/_fields.blade.php @@ -0,0 +1,51 @@ +
+
+
+ +
+
+
+
+ +
+
+
+ + +
+ +
+ +
+
+
+ +
+
+ +
+
+ +
+
+
diff --git a/resources/views/cms/page/create.blade.php b/resources/views/cms/page/create.blade.php new file mode 100644 index 000000000..351d74379 --- /dev/null +++ b/resources/views/cms/page/create.blade.php @@ -0,0 +1,53 @@ + +
+
+
+

+ {{ __('avored::system.create') }} {{ __('avored::system.page') }} +

+ +
+ +
+ + + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + Cancel + +
+
+
+
+ +
+ +
diff --git a/resources/views/cms/page/edit.blade.php b/resources/views/cms/page/edit.blade.php new file mode 100644 index 000000000..fe55f0a8f --- /dev/null +++ b/resources/views/cms/page/edit.blade.php @@ -0,0 +1,50 @@ + +
+
+
+

+ {{ __('avored::system.edit') }} {{ __('avored::system.page') }} +

+ +
+ +
+ + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + {{ __('avored::system.cancel') }} + +
+
+
+
+
+
diff --git a/resources/views/cms/page/index.blade.php b/resources/views/cms/page/index.blade.php new file mode 100644 index 000000000..93e492587 --- /dev/null +++ b/resources/views/cms/page/index.blade.php @@ -0,0 +1,132 @@ + +
+
+
+

+ {{ __('avored::system.page') }} {{ __('avored::system.list') }} +

+ + + {{ __('avored::system.create') }} + + +
+ +
+ +
+ + + + + {{ __('avored::system.name') }} + + + {{ __('avored::system.slug') }} + + + {{ __('avored::system.meta_title') }} + + + {{ __('avored::system.meta_description') }} + + + {{ __('avored::system.actions') }} + + + + + @foreach ($pages as $page) + + + {{ $page->name ?? '' }} + + + {{ $page->slug ?? '' }} + + + {{ $page->meta_title ?? '' }} + + + {{ $page->meta_description ?? '' }} + + + +
+ + + + | + + + + + + + + +
+
+
+ @endforeach +
+
+
+ {{ $pages->render() }} +
+
+
+
+
+
+ + + Close + +
+
+ +
+
diff --git a/resources/views/order/order-status/_fields.blade.php b/resources/views/order/order-status/_fields.blade.php new file mode 100644 index 000000000..a8b2222f3 --- /dev/null +++ b/resources/views/order/order-status/_fields.blade.php @@ -0,0 +1,17 @@ +
+ +
+ + +
+ +
diff --git a/resources/views/order/order-status/create.blade.php b/resources/views/order/order-status/create.blade.php new file mode 100644 index 000000000..3f77b8a92 --- /dev/null +++ b/resources/views/order/order-status/create.blade.php @@ -0,0 +1,53 @@ + +
+
+
+

+ {{ __('avored::system.create') }} {{ __('avored::system.order-status') }} +

+ +
+ +
+ + + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + Cancel + +
+
+
+
+ +
+ +
diff --git a/resources/views/order/order-status/edit.blade.php b/resources/views/order/order-status/edit.blade.php new file mode 100644 index 000000000..667c4b979 --- /dev/null +++ b/resources/views/order/order-status/edit.blade.php @@ -0,0 +1,50 @@ + +
+
+
+

+ {{ __('avored::system.edit') }} {{ __('avored::system.order-status') }} +

+ +
+ +
+ + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + {{ __('avored::system.cancel') }} + +
+
+
+
+
+
diff --git a/resources/views/order/order-status/index.blade.php b/resources/views/order/order-status/index.blade.php new file mode 100644 index 000000000..2b97c0f68 --- /dev/null +++ b/resources/views/order/order-status/index.blade.php @@ -0,0 +1,136 @@ + +
+
+
+

+ {{ __('avored::system.order-status') }} {{ __('avored::system.list') }} +

+ + + {{ __('avored::system.create') }} + + +
+ +
+ +
+ + + + + + {{ __('avored::system.name') }} + + + {{ __('avored::system.is_default') }} + + + + {{ __('avored::system.actions') }} + + + + + @foreach ($orderStatuses as $orderStatus) + + + {{ $orderStatus->name ?? '' }} + + + {{ $orderStatus->is_default ? 'Default' : '' }} + + + +
+ + + + | + + + + + +
+
+
+ @endforeach +
+
+
+ {{ $orderStatuses->render() }} +
+
+
+
+ + +
+
diff --git a/resources/views/order/order/index.blade.php b/resources/views/order/order/index.blade.php new file mode 100644 index 000000000..f52c39c2e --- /dev/null +++ b/resources/views/order/order/index.blade.php @@ -0,0 +1,62 @@ + +
+
+
+

+ {{ __('avored::system.order') }} {{ __('avored::system.list') }} +

+ +
+ +
+ +
+ + + + + + {{ __('avored::system.shipping_option') }} + + + {{ __('avored::system.payment_option') }} + + + + + {{ __('avored::system.actions') }} + + + + + @foreach ($orders as $order) + + + {{ $order->shipping_option ?? '' }} + + + + {{ $order->payment_option ?? '' }} + + + + +
+ + + + +
+
+
+ @endforeach +
+
+
+ {{ $orders->render() }} +
+
+
+
+
+
diff --git a/resources/views/partials/header.blade.php b/resources/views/partials/header.blade.php index c6503c287..b14a3f8a1 100644 --- a/resources/views/partials/header.blade.php +++ b/resources/views/partials/header.blade.php @@ -27,7 +27,7 @@ class="h-8 w-8 rounded-full"
- + {{ __('avored::system.edit_profile') }} diff --git a/resources/views/system/components/form/alert.blade.php b/resources/views/system/components/form/alert.blade.php new file mode 100644 index 000000000..7fef19b04 --- /dev/null +++ b/resources/views/system/components/form/alert.blade.php @@ -0,0 +1,5 @@ +@if (!empty($message)) +
+

{{ $message }}

+
+@endif diff --git a/resources/views/system/components/form/checkbox.blade.php b/resources/views/system/components/form/checkbox.blade.php new file mode 100644 index 000000000..8b8e2b7ae --- /dev/null +++ b/resources/views/system/components/form/checkbox.blade.php @@ -0,0 +1,10 @@ + + diff --git a/resources/views/system/components/form/easymde.blade.php b/resources/views/system/components/form/easymde.blade.php new file mode 100644 index 000000000..2c1eb81b3 --- /dev/null +++ b/resources/views/system/components/form/easymde.blade.php @@ -0,0 +1,21 @@ +
+ @if ($label) + + @endif +
+ + + @if ($errors->has($name)) +
+ {{ $errors->first($name) }} +
+ @endif +
+
diff --git a/resources/views/system/components/form/input.blade.php b/resources/views/system/components/form/input.blade.php index 788964cca..c49442848 100644 --- a/resources/views/system/components/form/input.blade.php +++ b/resources/views/system/components/form/input.blade.php @@ -7,7 +7,7 @@
merge([ 'autofocus' => false, - ]) }} class="form-input w-full ring-red-100 rounded {{ ($errors->has($name)) ? 'ring-red-400' : '' }} {{ $class }}" /> + ]) }} class="avored-input {{ ($errors->has($name)) ? 'ring-red-400' : '' }} {{ $class }}" /> @if ($errors->has($name))
{{ $errors->first($name) }} @@ -15,3 +15,5 @@ @endif
+ +{{-- ring-1 ring-gray-300 px-3 py-2 w-full rounded focus:outline-none focus:ring-red-500 --}} diff --git a/resources/views/system/components/form/link.blade.php b/resources/views/system/components/form/link.blade.php new file mode 100644 index 000000000..0bb4b15de --- /dev/null +++ b/resources/views/system/components/form/link.blade.php @@ -0,0 +1,24 @@ +@switch($style) + @case('normal') + + {{ $slot }} + + @break + @case('button-primary') + + {{ $slot }} + + @break + @case('button-default') + + {{ $slot }} + + @break + @default + +@endswitch diff --git a/resources/views/system/components/form/select.blade.php b/resources/views/system/components/form/select.blade.php new file mode 100644 index 000000000..5de1ed1da --- /dev/null +++ b/resources/views/system/components/form/select.blade.php @@ -0,0 +1,22 @@ +
+ @if ($label) + + @endif +
+ + + @if ($errors->has($name)) +
+ {{ $errors->first($name) }} +
+ @endif +
+
diff --git a/resources/views/system/components/form/select2.blade.php b/resources/views/system/components/form/select2.blade.php new file mode 100644 index 000000000..08b2fe4ab --- /dev/null +++ b/resources/views/system/components/form/select2.blade.php @@ -0,0 +1,92 @@ +
+ + +
+ +
+ +
+
+
+
+ +
+ +
+
+
+ + + +
+
+
+
+
+
+ +
+
+
+
+
+
+
diff --git a/resources/views/system/components/form/toggle.blade.php b/resources/views/system/components/form/toggle.blade.php new file mode 100644 index 000000000..cfb06e3e8 --- /dev/null +++ b/resources/views/system/components/form/toggle.blade.php @@ -0,0 +1,18 @@ + + +
+
+
+
+ {{ $label }} + +
diff --git a/resources/views/system/components/form/upload.blade.php b/resources/views/system/components/form/upload.blade.php new file mode 100644 index 000000000..47864d260 --- /dev/null +++ b/resources/views/system/components/form/upload.blade.php @@ -0,0 +1,138 @@ +
+
+ + +
+ +

Drag your files here or click in this area.

+
+
+ + +
+ + + + diff --git a/resources/views/system/components/table.blade.php b/resources/views/system/components/table.blade.php new file mode 100644 index 000000000..122c5c797 --- /dev/null +++ b/resources/views/system/components/table.blade.php @@ -0,0 +1,20 @@ +@props([ + 'header', + 'body', +]) + +
+
+
+ + + {{ $header }} + + + {{ $body }} + +
+
+
+
diff --git a/resources/views/system/components/table/cell.blade.php b/resources/views/system/components/table/cell.blade.php new file mode 100644 index 000000000..5648f7285 --- /dev/null +++ b/resources/views/system/components/table/cell.blade.php @@ -0,0 +1,3 @@ + + {{ $slot }} + diff --git a/resources/views/system/components/table/header.blade.php b/resources/views/system/components/table/header.blade.php new file mode 100644 index 000000000..1c5ab0d89 --- /dev/null +++ b/resources/views/system/components/table/header.blade.php @@ -0,0 +1,3 @@ + + {{ $slot }} + diff --git a/resources/views/system/components/table/row.blade.php b/resources/views/system/components/table/row.blade.php new file mode 100644 index 000000000..14b26c028 --- /dev/null +++ b/resources/views/system/components/table/row.blade.php @@ -0,0 +1,3 @@ + + {{ $slot }} + diff --git a/resources/views/system/configuration/cards/basic.blade.php b/resources/views/system/configuration/cards/basic.blade.php new file mode 100644 index 000000000..a60eabcd9 --- /dev/null +++ b/resources/views/system/configuration/cards/basic.blade.php @@ -0,0 +1,23 @@ + +
+ +
+
+ +
+
+ +
diff --git a/resources/views/system/configuration/cards/tax.blade.php b/resources/views/system/configuration/cards/tax.blade.php new file mode 100644 index 000000000..e69de29bb diff --git a/resources/views/system/configuration/index.blade.php b/resources/views/system/configuration/index.blade.php new file mode 100644 index 000000000..f6cc84bb7 --- /dev/null +++ b/resources/views/system/configuration/index.blade.php @@ -0,0 +1,53 @@ + +
+
+
+

+ {{ __('avored::system.system_configuration') }} +

+ +
+ +
+ + + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + {{ __('avored::system.cancel') }} + +
+
+
+
+ +
+ +
diff --git a/resources/views/system/role/_fields.blade.php b/resources/views/system/role/_fields.blade.php new file mode 100644 index 000000000..cbae3595a --- /dev/null +++ b/resources/views/system/role/_fields.blade.php @@ -0,0 +1,33 @@ + +
+ +
+ +
+ @foreach ($permissions as $group) +
+
+
+ {{ $group->label() }} +
+
+ @foreach ($group->permissionList as $permission) +
+ + +
+ @endforeach +
+
+
+ @endforeach +
diff --git a/resources/views/system/role/create.blade.php b/resources/views/system/role/create.blade.php new file mode 100644 index 000000000..71cbc039f --- /dev/null +++ b/resources/views/system/role/create.blade.php @@ -0,0 +1,53 @@ + +
+
+
+

+ {{ __('avored::system.create') }} {{ __('avored::system.role') }} +

+ +
+ +
+ + + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + Cancel + +
+
+
+
+ +
+ +
diff --git a/resources/views/system/role/edit.blade.php b/resources/views/system/role/edit.blade.php new file mode 100644 index 000000000..c191a658d --- /dev/null +++ b/resources/views/system/role/edit.blade.php @@ -0,0 +1,50 @@ + +
+
+
+

+ {{ __('avored::system.edit') }} {{ __('avored::system.role') }} +

+ +
+ +
+ + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + {{ __('avored::system.cancel') }} + +
+
+
+
+
+
diff --git a/resources/views/system/role/index.blade.php b/resources/views/system/role/index.blade.php new file mode 100644 index 000000000..c998a6cc1 --- /dev/null +++ b/resources/views/system/role/index.blade.php @@ -0,0 +1,114 @@ + +
+
+
+

+ {{ __('avored::system.role') }} {{ __('avored::system.list') }} +

+ + + {{ __('avored::system.create') }} + + +
+ +
+ +
+ + + + + {{ __('avored::system.name') }} + + + {{ __('avored::system.actions') }} + + + + + @foreach ($roles as $role) + + + {{ $role->name ?? '' }} + + + +
+ + + + | + + + + + + + + +
+
+
+ @endforeach +
+
+
+ {{ $roles->render() }} +
+
+
+
+ + +
+
diff --git a/resources/views/user/auth/password/new.blade.php b/resources/views/user/auth/password/new.blade.php new file mode 100644 index 000000000..c60dc8819 --- /dev/null +++ b/resources/views/user/auth/password/new.blade.php @@ -0,0 +1,84 @@ + + + + + + + + + + @yield('meta_title', 'AvoRed E commerce') + + + + +
+
+
+
+ + AvoRed Ecommerce + +

+ {{ __('avored::system.reset_your_avored_admin') }} +

+

+

+
+ + + + + + +
+ +
+
+ +
+
+ +
+ + +
+ +
+
+
+
+
+ + diff --git a/resources/views/user/auth/reset.blade.php b/resources/views/user/auth/reset.blade.php new file mode 100644 index 000000000..a9b1a7acf --- /dev/null +++ b/resources/views/user/auth/reset.blade.php @@ -0,0 +1,69 @@ + + + + + + + + + + @yield('meta_title', 'AvoRed E commerce') + + + + +
+
+
+
+ + AvoRed Ecommerce + +

+ {{ __('avored::system.reset_your_avored_admin') }} +

+

+

+
+ + + + + + +
+ +
+ +
+ +
+
+
+
+
+ + diff --git a/resources/views/user/staff/_fields.blade.php b/resources/views/user/staff/_fields.blade.php new file mode 100644 index 000000000..6c364fc5f --- /dev/null +++ b/resources/views/user/staff/_fields.blade.php @@ -0,0 +1,88 @@ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+ @if (!isset($staff)) + + @else + + @endif +
+ + +
+ +
+ + +
+ + + @foreach ($options as $optionValue => $optionLabel) + + @endforeach + + +
+ +@if (!isset($staff)) +
+
+
+ +
+
+ +
+
+ +
+
+
+@endif diff --git a/resources/views/user/staff/create.blade.php b/resources/views/user/staff/create.blade.php new file mode 100644 index 000000000..018285271 --- /dev/null +++ b/resources/views/user/staff/create.blade.php @@ -0,0 +1,53 @@ + +
+
+
+

+ {{ __('avored::system.create') }} {{ __('avored::system.staff') }} +

+ +
+ +
+ + + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + Cancel + +
+
+
+
+ +
+ +
diff --git a/resources/views/user/staff/edit.blade.php b/resources/views/user/staff/edit.blade.php new file mode 100644 index 000000000..f7ef79ed5 --- /dev/null +++ b/resources/views/user/staff/edit.blade.php @@ -0,0 +1,50 @@ + +
+
+
+

+ {{ __('avored::system.edit') }} {{ __('avored::system.staff') }} +

+ +
+ +
+ + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + Cancel + +
+
+
+
+
+
diff --git a/resources/views/user/staff/index.blade.php b/resources/views/user/staff/index.blade.php new file mode 100644 index 000000000..4021b09a7 --- /dev/null +++ b/resources/views/user/staff/index.blade.php @@ -0,0 +1,122 @@ + +
+
+
+

+ {{ __('avored::system.staff') }} {{ __('avored::system.list') }} +

+ + + {{ __('avored::system.create') }} + + +
+ +
+ +
+ + + + + {{ __('avored::system.first_name') }} + + + {{ __('avored::system.last_name') }} + + + {{ __('avored::system.email') }} + + + {{ __('avored::system.actions') }} + + + + + @foreach ($staffs as $staff) + + + {{ $staff->first_name ?? '' }} + + + {{ $staff->last_name ?? '' }} + + + {{ $staff->email ?? '' }} + + +
+ + + + | + + + + + +
+
+
+ @endforeach +
+
+
+ {{ $staffs->render() }} +
+
+
+
+ + +
+
diff --git a/resources/views/user/subscriber/_fields.blade.php b/resources/views/user/subscriber/_fields.blade.php new file mode 100644 index 000000000..9f2a99fdb --- /dev/null +++ b/resources/views/user/subscriber/_fields.blade.php @@ -0,0 +1,24 @@ +
+ +
+ + +
+ + + + + +
diff --git a/resources/views/user/subscriber/create.blade.php b/resources/views/user/subscriber/create.blade.php new file mode 100644 index 000000000..63beabccf --- /dev/null +++ b/resources/views/user/subscriber/create.blade.php @@ -0,0 +1,53 @@ + +
+
+
+

+ {{ __('avored::system.create') }} {{ __('avored::system.subscriber') }} +

+ +
+ +
+ + + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + Cancel + +
+
+
+
+ +
+ +
diff --git a/resources/views/user/subscriber/edit.blade.php b/resources/views/user/subscriber/edit.blade.php new file mode 100644 index 000000000..4cae30434 --- /dev/null +++ b/resources/views/user/subscriber/edit.blade.php @@ -0,0 +1,50 @@ + +
+
+
+

+ {{ __('avored::system.edit') }} {{ __('avored::system.subscriber') }} +

+ +
+ +
+ + @foreach ($tabs as $tab) +
+
+
+ + {{ $tab->label() }} + + + + +
+ +
+
+ @php + $path = $tab->view(); + @endphp + @include($path) +
+
+ @endforeach + +
+ + + + {{ __('avored::system.cancel') }} + +
+
+
+
+
+
diff --git a/resources/views/user/subscriber/index.blade.php b/resources/views/user/subscriber/index.blade.php new file mode 100644 index 000000000..eaaa41552 --- /dev/null +++ b/resources/views/user/subscriber/index.blade.php @@ -0,0 +1,132 @@ + +
+
+
+

+ {{ __('avored::system.subscriber') }} {{ __('avored::system.list') }} +

+ + + {{ __('avored::system.create') }} + + +
+ +
+
+ + + + + {{ __('avored::system.email') }} + + + {{ __('avored::system.status') }} + + + {{ __('avored::system.actions') }} + + + + + @foreach ($subscribers as $subscriber) + + + {{ $subscriber->email ?? '' }} + + + {{ $subscriber->status ?? '' }} + + +
+ + + + | + + + + + +
+
+
+ @endforeach +
+
+
+ {{ $subscribers->render() }} +
+
+
+
+ + +
+
diff --git a/routes/web.php b/routes/web.php index 364e2912f..c20473149 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,12 +1,22 @@ prefix($baseAdminUrl) ->namespace('AvoRed\\Framework') ->name('admin.') - ->group( - function () { - Route::get('login', [LoginController::class, 'loginForm']) - ->name('login'); - Route::post('login', [LoginController::class, 'login']) - ->name('login.post'); - - /***************** PASSWORD RESET *****************/ - Route::get( - 'password/reset', - [\AvoRed\Framework\User\Controllers\ForgotPasswordController::class, 'linkRequestForm'] - )->name('password.request'); - Route::post( - 'password/email', - [\AvoRed\Framework\User\Controllers\ForgotPasswordController::class, 'sendResetLinkEmail'] - )->name('password.email'); - - Route::get( - 'password/reset/{token}', - [\AvoRed\Framework\User\Controllers\ResetPasswordController::class, 'showResetForm'] - )->name('password.reset'); - Route::post('password/reset', [\AvoRed\Framework\User\Controllers\ResetPasswordController::class, 'reset']) - ->name('password.update'); - }); + ->group(function () { + /***************** LOGIN ROUTE *****************/ + Route::get('login', [LoginController::class, 'loginForm']) + ->name('login'); + Route::post('login', [LoginController::class, 'login']) + ->name('login.post'); + Route::post('logout', [LoginController::class, 'logout']) + ->name('logout'); + /***************** PASSWORD RESET *****************/ + Route::get( + 'password/reset', + [\AvoRed\Framework\User\Controllers\ForgotPasswordController::class, 'linkRequestForm'] + )->name('password.request'); + Route::post( + 'password/email', + [\AvoRed\Framework\User\Controllers\ForgotPasswordController::class, 'sendResetLinkEmail'] + )->name('password.email'); + + Route::get( + 'password/reset/{token}', + [\AvoRed\Framework\User\Controllers\ResetPasswordController::class, 'showResetForm'] + )->name('password.reset'); + Route::post('password/reset', [\AvoRed\Framework\User\Controllers\ResetPasswordController::class, 'reset']) + ->name('password.update'); + }); Route::middleware(['web', 'admin.auth:admin', 'permission']) ->prefix($baseAdminUrl) ->name('admin.') ->group(function () { + Route::get('', [DashboardController::class, 'index']) ->name('dashboard'); -}); + + + /***************** CATALOG ROUTES *****************/ + Route::resource('category', CategoryController::class); + Route::resource('property', PropertyController::class); + Route::resource('attribute', AttributeController::class); + Route::resource('product', ProductController::class); + + + /***************** USER ROUTES *****************/ + Route::resource('staff', StaffController::class); + Route::resource('subscriber', SubscriberController::class); + + + /***************** ORDER ROUTES *****************/ + Route::resource('order-status', OrderStatusController::class); + Route::get('order', [OrderController::class, 'index'])->name('order.index'); + Route::get('order/{order}', [OrderController::class, 'show'])->name('order.show'); + + + /***************** CMS ROUTES *****************/ + Route::resource('page', PageController::class); + + + /***************** SYSTEM ROUTES *****************/ + Route::resource('role', RoleController::class); + Route::get('configuration', [\AvoRed\Framework\System\Controllers\ConfigurationController::class, 'index']) + ->name('configuration.index'); + Route::post('configuration', [\AvoRed\Framework\System\Controllers\ConfigurationController::class, 'store']) + ->name('configuration.store'); + }); diff --git a/src/AvoRedServiceProvider.php b/src/AvoRedServiceProvider.php index 9a660ecfc..2f89dd76b 100644 --- a/src/AvoRedServiceProvider.php +++ b/src/AvoRedServiceProvider.php @@ -3,60 +3,179 @@ namespace AvoRed\Framework; use AvoRed\Framework\Breadcrumb\BreadcrumbProvider; +use AvoRed\Framework\Cart\CartProvider; +use AvoRed\Framework\Database\Models\OauthClient; +use AvoRed\Framework\Document\DocumentProvider; use AvoRed\Framework\Menu\MenuProvider; +use AvoRed\Framework\Module\ModuleProvider; +use AvoRed\Framework\Payment\PaymentProvider; +use AvoRed\Framework\Permission\PermissionProvider; use AvoRed\Framework\Support\Middleware\AdminAuth; -use AvoRed\Framework\Support\Middleware\Permission; +use AvoRed\Framework\Support\Middleware\Permission as MiddlewarePermission; use AvoRed\Framework\Support\Middleware\RedirectIfAdminAuth; use AvoRed\Framework\Support\Providers\ComponentsProvider; +use AvoRed\Framework\Support\Providers\GraphqlProvider; use AvoRed\Framework\Support\Providers\ModelsProvider; +use AvoRed\Framework\Shipping\ShippingProvider; +use AvoRed\Framework\Support\Providers\EventsProvider; use AvoRed\Framework\System\Console\AdminMakeCommand; use AvoRed\Framework\System\Console\InstallCommand; +use AvoRed\Framework\System\Composers\LayoutComposer; +use AvoRed\Framework\Tab\TabProvider; use Illuminate\Support\Facades\App; +use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; +use Laravel\Passport\Passport; class AvoRedServiceProvider extends ServiceProvider { + /** + * Providers List for the Framework. + * @var array + */ protected $providers = [ + ModuleProvider::class, + CartProvider::class, BreadcrumbProvider::class, ComponentsProvider::class, - ModelsProvider::class, + DocumentProvider::class, + EventsProvider::class, + GraphqlProvider::class, MenuProvider::class, + ModelsProvider::class, + PaymentProvider::class, + PermissionProvider::class, + ShippingProvider::class, + TabProvider::class ]; + /** + * Register services. + * @return void + */ public function register() { + $this->ignorePassport(); $this->registerProviders(); - $this->registerConfig(); + $this->registerConfigData(); + $this->registerRoutePath(); + $this->registerMiddleware(); + // $this->registerViewComposerData(); $this->registerConsoleCommands(); + $this->registerMigrationPath(); $this->registerViewPath(); - $this->registerTranslationPath(); - $this->registerMiddleware(); + $this->registerAssets(); } + /** + * Bootstrap services. + * @return void + */ public function boot() { - $this->registerRoutes(); - $this->registerMigrationPath(); + $this->registerTranslationPath(); + $this->setupPublishFiles(); + } + + /** + * Register Route Path. + * @return void + */ + public function ignorePassport() + { + Passport::ignoreMigrations(); + Passport::setClientUuids(true); + Passport::useClientModel(OauthClient::class); + } + + /** + * Register Route Path. + * @return void + */ + public function registerRoutePath() + { + $this->loadRoutesFrom(__DIR__ . '/../routes/web.php'); } - public function registerProviders() + /** + * Register Console Commands. + * @return void + */ + public function registerConsoleCommands() + { + $this->commands([InstallCommand::class]); + $this->commands([AdminMakeCommand::class]); + } + + /** + * Register Migration Path. + * @return void + */ + public function registerMigrationPath() + { + $this->loadMigrationsFrom(__DIR__ . '/../database/migrations'); + } + + /** + * Register View Path. + * @return void + */ + public function registerViewPath() + { + $this->loadViewsFrom(__DIR__ . '/../resources/views', 'avored'); + } + + /** + * Register Translation Path. + * @return void + */ + public function registerTranslationPath() + { + $this->loadTranslationsFrom(__DIR__ . '/../resources/lang', 'avored'); + } + + /** + * Registering AvoRed E commerce Service Provider. + * @return void + */ + protected function registerProviders() { foreach ($this->providers as $provider) { App::register($provider); } } - public function registerRoutes() + /** + * Registering AvoRed E commerce Middleware. + * @return void + */ + protected function registerMiddleware() { - $this->loadRoutesFrom(__DIR__ . '/../routes/web.php'); + $router = $this->app['router']; + $router->aliasMiddleware('admin.auth', AdminAuth::class); + $router->aliasMiddleware('admin.guest', RedirectIfAdminAuth::class); + $router->aliasMiddleware('permission', MiddlewarePermission::class); + // $router->aliasMiddleware('avored', AvoRedCore::class); } - public function registerConfig() + /** + * Register config data for AvoRed E commerce Framework. + * @return void + */ + public function registerConfigData() { - $this->mergeConfigFrom(__DIR__ . '/../config/avored.php', 'avored'); + $this->mergeConfigFrom( + __DIR__ . '/../config/avored.php', + 'avored' + ); $avoredConfigData = include __DIR__ . '/../config/avored.php'; $authConfig = $this->app['config']->get('auth', []); + // $this->app['config']->set( + // 'passport.client_uuids', + // true + // ); + $this->app['config']->set( 'auth.guards', array_merge($authConfig['guards'], $avoredConfigData['auth']['guards']) @@ -71,32 +190,47 @@ public function registerConfig() ); } - public function registerConsoleCommands() + /** + * Registering Class Based View Composer. + * @return void + */ + public function registerViewComposerData() { - $this->commands([InstallCommand::class]); - $this->commands([AdminMakeCommand::class]); + View::composer('avored::layouts.app', LayoutComposer::class); } - public function registerMigrationPath() + /** + * Registering AvoRed Assets. + * @return void + */ + public function registerAssets() { - $this->loadMigrationsFrom(__DIR__. '/../database/migrations'); + // Asset::registerJS(function (AssetItem $item) { + // $item->key('avored.avored.js') + // ->path(__DIR__ . '/../dist/js/avored.js'); + // }); + // Asset::registerJS(function (AssetItem $item) { + // $item->key('avored.app.js') + // ->path(__DIR__ . '/../dist/js/app.js'); + // }); + // Asset::registerCSS(function (AssetItem $item) { + // $item->key('avored.app.css') + // ->path(__DIR__ . '/../dist/css/app.css'); + // }); } - public function registerViewPath() - { - $this->loadViewsFrom(__DIR__ . '/../resources/views', 'avored'); - } - - public function registerTranslationPath() + /** + * Set up the file which can be published to use the package. + * @return void + */ + public function setupPublishFiles() { - $this->loadTranslationsFrom(__DIR__ . '/../resources/lang', 'avored'); - } + $this->publishes([ + __DIR__ . '/../config/avored.php' => config_path('avored.php'), + ], 'avored-config'); - protected function registerMiddleware() - { - $router = $this->app['router']; - $router->aliasMiddleware('admin.auth', AdminAuth::class); - $router->aliasMiddleware('admin.guest', RedirectIfAdminAuth::class); - $router->aliasMiddleware('permission', Permission::class); + $this->publishes([ + __DIR__ . '/../dist' => public_path(), + ], 'avored-public'); } } diff --git a/src/Breadcrumb/BreadcrumbProvider.php b/src/Breadcrumb/BreadcrumbProvider.php index e2ccc2719..f7d91fe7b 100644 --- a/src/Breadcrumb/BreadcrumbProvider.php +++ b/src/Breadcrumb/BreadcrumbProvider.php @@ -28,7 +28,7 @@ public function boot() public function register() { $this->registerServices(); - $this->app->alias('breadcrumb', Builder::class); + $this->app->alias('breadcrumb', 'AvoRed\Framework\Breadcrumb\Builder'); } /** @@ -53,7 +53,7 @@ function () { */ public function provides() { - return ['breadcrumb', Builder::class]; + return ['breadcrumb', 'AvoRed\Framework\Breadcrumb\Builder']; } /** diff --git a/src/Cart/Cart.php b/src/Cart/Cart.php new file mode 100644 index 000000000..239c2e4a2 --- /dev/null +++ b/src/Cart/Cart.php @@ -0,0 +1,17 @@ +productRepository = $productRepository; + $this->cartProductRepository = $cartProductRepository; + } + + /** + * Destroy Product from Cart By Given Slug. + * @param string $slug + * @return self + */ + public function destroy(string $slug) + { + $product = $this->getProductBySlug($slug); + $this->cartProductRepository->query()->where('product_id', $product->id)->where('visitor_id', $this->visitor())->delete(); + } + /** + * update Product from Cart By Given Slug. + * @param string $slug + * @return self + */ + public function update(string $slug, $qty) + { + /** @var Product $product */ + $product = $this->productRepository->findBySlug($slug); + $cartProduct = $this->getCartProduct($product->id); + + $cartProduct->qty = $qty; + $cartProduct->save(); + return $this; + } + /** + * Add Product to Cart By Given Slug. + * @param string $slug + * @param int $qty + * @param array $attributes + * @return CartProduct + */ + public function add(string $slug, float $qty = 1, array $attributes = []): CartProduct + { + /** @var Product $product */ + $product = $this->productRepository->findBySlug($slug); + $cartProduct = $this->getCartProduct($product->id); + + if ($cartProduct !== null) { + $cartProduct->qty = $cartProduct->qty + $qty; + $cartProduct->save(); + } else { + $data = [ + 'visitor_id' => $this->visitor, + 'product_id' => $product->id, + 'qty' => $qty + ]; + $cartProduct = $this->cartProductRepository->create($data); + } + + return $cartProduct; + } + + public function getProductBySlug(string $slug): Product + { + return $this->productRepository->findBySlug($slug); + } + /** + * + * @param string $productId + * @return CartProduct|null $cartProduct + */ + public function getCartProduct(string $productId): ?CartProduct + { + return $this->cartProductRepository + ->query() + ->where('visitor_id', $this->visitor()) + ->where('product_id', $productId) + ->first(); + } + /** + * To check if the Product Existing in the Cart + * @param string $slug + * @return boolean + */ + protected function exist($slug): bool + { + return $this->getSession()->has($slug); + } + + /** + * Clear the All Cart Products. + * @return void + */ + public function clear() + { + } + + /** + * Get the Current Collection for the Prophetoducts. + * @return \Illuminate\Support\Collection + */ + public function getSession() + { + } + + /** + * Get the Session Key for the Session Manager. + * @return string $sessionKey + */ + public function visitor($visitor = null) + { + if ($visitor) { + $this->visitor = $visitor; + return $this; + } + + return $this->visitor; + } + + + /** + * Update the Session Collection. + * @return self $this + */ + protected function updateSessionCollection() + { + return $this; + } + + /** + * Get the List of All the Current Session Cart Products. + * @return \Illuminate\Support\Collection + */ + public function all() + { + return $this->cartProductRepository + ->query() + ->where('visitor_id', $this->visitor()) + ->where('status', CartProduct::WAITING_TO_BE_PLACED_ORDER) + ->get(); + } + + /** + * Get the List of All the Current Session Cart Products. + * @return \Illuminate\Support\Collection + */ + public function toArray() + { + $products = $this->all(); + $items = Collection::make([]); + foreach ($products as $product) { + $items->push([ + 'slug' => $product->slug(), + 'image' => $product->image(), + 'price' => $product->price(), + 'qty' => $product->qty(), + 'name' => $product->name(), + 'tax' => $product->taxAmount(), + 'attributes' => $product->attributes(), + ]); + } + + return $items; + } + + /** + * Get the List of All the Current Session Cart Products. + * @return mixed $cartTotal + */ + public function total($format = true) + { + $products = $this->all(); + $total = 0; + foreach ($products as $product) { + $total += $product->total(); + } + $total = $total - $this->discount(); + + if ($format === true) { + return number_format($total, 2); + } + + return $total; + } + + /** + * Get the Total Number of Products into the Cart. + * @return int $count + */ + public function count() + { + return $this->getSession()->count(); + } +} diff --git a/src/Cart/CartProduct.php b/src/Cart/CartProduct.php new file mode 100644 index 000000000..0da5eebd0 --- /dev/null +++ b/src/Cart/CartProduct.php @@ -0,0 +1,197 @@ +name; + } else { + $this->name = $name; + + return $this; + } + } + + /** + * Set/Get Cart Product id. + * @param mixed $id + * @return mixed $id + */ + public function id($id = null) + { + if ($id === null) { + return $this->id; + } else { + $this->id = $id; + + return $this; + } + } + + /** + * Set/Get Cart Product Tax Amount. + * @param mixed $taxAmount + * @return mixed $taxAmount + */ + public function taxAmount($taxAmount = null) + { + if ($taxAmount === null) { + return $this->taxAmount; + } else { + $this->taxAmount = $taxAmount; + + return $this; + } + } + + /** + * Set/Get Cart Product Name. + * @param mixed $attributes + * @return mixed $attributes + */ + public function attributes($attributes = null) + { + if ($attributes === null) { + return $this->attributes; + } else { + $this->attributes = $attributes; + + return $this; + } + } + + /** + * Set/Get Cart Product Image. + * @param mixed $image + * @return mixed $image + */ + public function image($image = null) + { + if ($image === null) { + return $this->image; + } else { + $this->image = $image; + + return $this; + } + } + + /** + * Set/Get Cart Product Slug. + * @param mixed $slug + * @return mixed $slug + */ + public function slug($slug = null) + { + if ($slug === null) { + return $this->slug; + } else { + $this->slug = $slug; + + return $this; + } + } + + /** + * Set/Get Cart Product Qty. + * @param mixed $qty + * @return mixed $qty + */ + public function qty($qty = null) + { + if ($qty === null) { + return $this->qty; + } else { + $this->qty = $qty; + + return $this; + } + } + + /** + * Set/Get Cart Product Price. + * @param mixed $price + * @return mixed $price + */ + public function price($price = null) + { + if ($price === null) { + return $this->formattedPrice(); + } else { + $this->price = $price; + + return $this; + } + } + public function formattedPrice() + { + return number_format((float) $this->price, 2); + } + + /** + * Get Cart Product Totla. + * @return float $total + */ + public function total(): float + { + return ($this->qty() * $this->price()) + $this->taxAmount(); + } +} diff --git a/src/Cart/CartProvider.php b/src/Cart/CartProvider.php new file mode 100644 index 000000000..f6d5bb736 --- /dev/null +++ b/src/Cart/CartProvider.php @@ -0,0 +1,51 @@ +registerServices(); + } + + /** + * Register the Admin Menu instance. + * + * @return void + */ + protected function registerServices() + { + $this->app->singleton('cart', CartManager::class); + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + return ['cart', CartManager::class]; + } +} diff --git a/src/Catalog/Controllers/AttributeController.php b/src/Catalog/Controllers/AttributeController.php new file mode 100644 index 000000000..5168865fa --- /dev/null +++ b/src/Catalog/Controllers/AttributeController.php @@ -0,0 +1,120 @@ +attributeRepository = $repository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + $attributes = $this->attributeRepository->paginate(); + + return view('avored::catalog.attribute.index') + ->with('attributes', $attributes); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $displayAsOptions = Attribute::DISPLAY_AS; + $tabs = Tab::get('catalog.attribute'); + + return view('avored::catalog.attribute.create') + ->with('displayAsOptions', $displayAsOptions) + ->with('tabs', $tabs); + } + + /** + * Store a newly created resource in storage. + * + * @param AttributeRequest $request + * @return \Illuminate\Http\Response + */ + public function store(AttributeRequest $request) + { + $attribute = $this->attributeRepository->create($request->all()); + $this->attributeRepository->saveAttributeDropdownOptions($request, $attribute); + + return redirect(route('admin.attribute.index')); + } + + /** + * Show the form for editing the specified resource. + * + * @param Attribute $attribute + * @return \Illuminate\Http\Response + */ + public function edit(Attribute $attribute) + { + $tabs = Tab::get('catalog.attribute'); + + $displayAsOptions = Attribute::DISPLAY_AS; + $tabs = Tab::get('catalog.attribute'); + + $attribute->load('dropdownOptions'); + + return view('avored::catalog.attribute.edit') + ->with('displayAsOptions', $displayAsOptions) + ->with('tabs', $tabs) + ->with('attribute', $attribute); + } + + /** + * Update the specified resource in storage. + * + * @param AttributeRequest $request + * @param Attribute $attribute + * @return \Illuminate\Http\Response + */ + public function update(AttributeRequest $request, Attribute $attribute) + { + $attribute->update($request->all()); + $this->attributeRepository->saveAttributeDropdownOptions($request, $attribute); + return redirect(route('admin.attribute.index')); + } + + /** + * Remove the specified resource from storage. + * + * @param Attribute $attribute + * @return \Illuminate\Http\Response + */ + public function destroy(Attribute $attribute) + { + $attribute->delete(); + + return new JsonResponse([ + 'success' => true, + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.attribute')]) + ]); + } +} diff --git a/src/Catalog/Controllers/CategoryController.php b/src/Catalog/Controllers/CategoryController.php new file mode 100644 index 000000000..c7be28045 --- /dev/null +++ b/src/Catalog/Controllers/CategoryController.php @@ -0,0 +1,117 @@ +categoryRepository = $repository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + $categories = $this->categoryRepository->paginate(); + + return view('avored::catalog.category.index') + ->with('categories', $categories); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $options = $this->categoryRepository->options(); + $tabs = Tab::get('catalog.category'); + + return view('avored::catalog.category.create') + ->with('options', $options) + ->with('tabs', $tabs); + } + + /** + * Store a newly created resource in storage. + * + * @param CategoryRequest $request + * @return \Illuminate\Http\Response + */ + public function store(CategoryRequest $request) + { + $this->categoryRepository->create($request->all()); + + return redirect(route('admin.category.index')); + } + + /** + * Show the form for editing the specified resource. + * + * @param Category $category + * @return \Illuminate\Http\Response + */ + public function edit(Category $category) + { + $tabs = Tab::get('catalog.category'); + + $options = $this->categoryRepository + ->options(); + $options->pull($category->id); + return view('avored::catalog.category.edit') + ->with('category', $category) + ->with('options', $options) + ->with('tabs', $tabs); + } + + /** + * Update the specified resource in storage. + * + * @param CategoryRequest $request + * @param Category $category + * @return \Illuminate\Http\Response + */ + public function update(CategoryRequest $request, Category $category) + { + $category->update($request->all()); + + return redirect(route('admin.category.index')); + } + + /** + * Remove the specified resource from storage. + * + * @param Category $category + * @return \Illuminate\Http\Response + */ + public function destroy(Category $category) + { + $category->delete(); + + return new JsonResponse([ + 'success' => true, + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.category')]) + ]); + } +} diff --git a/src/Catalog/Controllers/ProductController.php b/src/Catalog/Controllers/ProductController.php new file mode 100644 index 000000000..8b3bf027f --- /dev/null +++ b/src/Catalog/Controllers/ProductController.php @@ -0,0 +1,130 @@ +productRepository = $repository; + $this->categoryRepository = $categoryRepository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + $products = $this->productRepository->paginate(); + + return view('avored::catalog.product.index') + ->with('products', $products); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $typeOptions = Product::PRODUCT_TYPES; + $options = $this->categoryRepository->options(); + $tabs = Tab::get('catalog.product'); + + return view('avored::catalog.product.create') + ->with('typeOptions', $typeOptions) + ->with('tabs', $tabs) + ->with('options', $options); + } + + /** + * Store a newly created resource in storage. + * + * @param ProductRequest $request + * @return \Illuminate\Http\Response + */ + public function store(ProductRequest $request) + { + $product = $this->productRepository->create($request->all()); + // $this->productRepository->saveProductDropdownOptions($request, $product); + + return redirect(route('admin.product.index')); + } + + /** + * Show the form for editing the specified resource. + * + * @param Product $product + * @return \Illuminate\Http\Response + */ + public function edit(Product $product) + { + $tabs = Tab::get('catalog.product'); + $options = $this->categoryRepository->options(); + // $displayAsOptions = Product::DISPLAY_AS; + $tabs = Tab::get('catalog.product'); + + return view('avored::catalog.product.edit') + // ->with('displayAsOptions', $displayAsOptions) + ->with('tabs', $tabs) + ->with('options', $options) + ->with('product', $product); + } + + /** + * Update the specified resource in storage. + * + * @param ProductRequest $request + * @param Product $product + * @return \Illuminate\Http\Response + */ + public function update(ProductRequest $request, Product $product) + { + $product->update($request->all()); + $this->productRepository->saveProductCategories($product, $request); + return redirect(route('admin.product.index')); + } + + /** + * Remove the specified resource from storage. + * + * @param Product $product + * @return \Illuminate\Http\Response + */ + public function destroy(Product $product) + { + $product->delete(); + + return new JsonResponse([ + 'success' => true, + 'message' => __('avored::system.success_delete_message', ['product' => __('avored::system.product')]) + ]); + } +} diff --git a/src/Catalog/Controllers/PropertyController.php b/src/Catalog/Controllers/PropertyController.php new file mode 100644 index 000000000..1d5f4e95e --- /dev/null +++ b/src/Catalog/Controllers/PropertyController.php @@ -0,0 +1,124 @@ +propertyRepository = $repository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + $properties = $this->propertyRepository->paginate(); + + return view('avored::catalog.property.index') + ->with('properties', $properties); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $dataTypeOptions = Property::PROPERTY_DATATYPES; + $fieldTypeOptions = Property::PROPERTY_FIELDTYPES; + $tabs = Tab::get('catalog.property'); + + return view('avored::catalog.property.create') + ->with('dataTypeOptions', $dataTypeOptions) + ->with('fieldTypeOptions', $fieldTypeOptions) + ->with('tabs', $tabs); + } + + /** + * Store a newly created resource in storage. + * + * @param PropertyRequest $request + * @return \Illuminate\Http\Response + */ + public function store(PropertyRequest $request) + { + $property = $this->propertyRepository->create($request->all()); + $this->propertyRepository->savePropertyDropdown($request, $property); + + return redirect(route('admin.property.index')); + } + + /** + * Show the form for editing the specified resource. + * + * @param Property $property + * @return \Illuminate\Http\Response + */ + public function edit(Property $property) + { + $tabs = Tab::get('catalog.property'); + + $dataTypeOptions = Property::PROPERTY_DATATYPES; + $fieldTypeOptions = Property::PROPERTY_FIELDTYPES; + $tabs = Tab::get('catalog.property'); + + $property->load('dropdownOptions'); + + return view('avored::catalog.property.edit') + ->with('dataTypeOptions', $dataTypeOptions) + ->with('fieldTypeOptions', $fieldTypeOptions) + ->with('tabs', $tabs) + ->with('property', $property); + } + + /** + * Update the specified resource in storage. + * + * @param PropertyRequest $request + * @param Property $property + * @return \Illuminate\Http\Response + */ + public function update(PropertyRequest $request, Property $property) + { + $property->update($request->all()); + $this->propertyRepository->savePropertyDropdown($request, $property); + return redirect(route('admin.property.index')); + } + + /** + * Remove the specified resource from storage. + * + * @param Property $property + * @return \Illuminate\Http\Response + */ + public function destroy(Property $property) + { + $property->delete(); + + return new JsonResponse([ + 'success' => true, + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.property')]) + ]); + } +} diff --git a/src/Catalog/Requests/AttributeRequest.php b/src/Catalog/Requests/AttributeRequest.php new file mode 100644 index 000000000..f3e49e44e --- /dev/null +++ b/src/Catalog/Requests/AttributeRequest.php @@ -0,0 +1,32 @@ + 'required', + 'slug' => 'required', + 'display_as' => 'required' + ]; + } +} diff --git a/src/Catalog/Requests/CategoryRequest.php b/src/Catalog/Requests/CategoryRequest.php new file mode 100644 index 000000000..1d6e84c9f --- /dev/null +++ b/src/Catalog/Requests/CategoryRequest.php @@ -0,0 +1,30 @@ + 'required', + ]; + } +} diff --git a/src/Catalog/Requests/ProductRequest.php b/src/Catalog/Requests/ProductRequest.php new file mode 100644 index 000000000..ae6072a9a --- /dev/null +++ b/src/Catalog/Requests/ProductRequest.php @@ -0,0 +1,32 @@ + 'required', + 'slug' => 'required', + // 'type' => 'required' + ]; + } +} diff --git a/src/Catalog/Requests/PropertyRequest.php b/src/Catalog/Requests/PropertyRequest.php new file mode 100644 index 000000000..c4612dc7a --- /dev/null +++ b/src/Catalog/Requests/PropertyRequest.php @@ -0,0 +1,31 @@ + 'required', + 'slug' => 'required' + ]; + } +} diff --git a/src/Cms/Controllers/PageController.php b/src/Cms/Controllers/PageController.php new file mode 100644 index 000000000..84ab0fddf --- /dev/null +++ b/src/Cms/Controllers/PageController.php @@ -0,0 +1,112 @@ +pageRepository = $repository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + $pages = $this->pageRepository->paginate(); + + return view('avored::cms.page.index') + ->with('pages', $pages); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $tabs = Tab::get('cms.page'); + + return view('avored::cms.page.create') + ->with('tabs', $tabs); + } + + /** + * Store a newly created resource in storage. + * + * @param PageRequest $request + * @return \Illuminate\Http\Response + */ + public function store(PageRequest $request) + { + $page = $this->pageRepository->create($request->all()); + + return redirect(route('admin.page.index')); + } + + /** + * Show the form for editing the specified resource. + * + * @param Page $page + * @return \Illuminate\Http\Response + */ + public function edit(Page $page) + { + $tabs = Tab::get('cms.page'); + + return view('avored::cms.page.edit') + ->with('page', $page) + ->with('tabs', $tabs); + } + + /** + * Update the specified resource in storage. + * + * @param PageRequest $request + * @param Page $page + * @return \Illuminate\Http\Response + */ + public function update(PageRequest $request, Page $page) + { + $page->update($request->all()); + + return redirect(route('admin.page.index')); + } + + /** + * Remove the specified resource from storage. + * + * @param Page $page + * @return \Illuminate\Http\Response + */ + public function destroy(Page $page) + { + $page->delete(); + + return new JsonResponse([ + 'success' => true, + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.page')]) + ]); + } +} diff --git a/src/Cms/Requests/PageRequest.php b/src/Cms/Requests/PageRequest.php new file mode 100644 index 000000000..cd3403a26 --- /dev/null +++ b/src/Cms/Requests/PageRequest.php @@ -0,0 +1,31 @@ + 'required', + 'slug' => 'required' + ]; + } +} diff --git a/src/Database/Contracts/AddressModelInterface.php b/src/Database/Contracts/AddressModelInterface.php new file mode 100644 index 000000000..98e112c23 --- /dev/null +++ b/src/Database/Contracts/AddressModelInterface.php @@ -0,0 +1,16 @@ + 'Shipping Address', + self::BILLING => 'Billing Address', + ]; + + /** + * Address Belongs to a Country Model. + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function country() + { + return $this->belongsTo(Country::class); + } +} diff --git a/src/Database/Models/AdminUser.php b/src/Database/Models/AdminUser.php index 9b8f50366..117e8ffbf 100644 --- a/src/Database/Models/AdminUser.php +++ b/src/Database/Models/AdminUser.php @@ -2,9 +2,9 @@ namespace AvoRed\Framework\Database\Models; +use Illuminate\Notifications\Notifiable; use AvoRed\Framework\User\Notifications\ResetPassword; use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Notifications\Notifiable; use Illuminate\Support\Facades\Hash; class AdminUser extends BaseModel @@ -12,62 +12,101 @@ class AdminUser extends BaseModel use Notifiable; use HasFactory; + /** + * The attributes that are mass assignable. + * + * @var string[] + */ protected $fillable = [ - 'first_name', - 'last_name', - 'email', - 'password', - 'role_id', - 'is_super_admin', + 'first_name', 'last_name', 'email', 'password', 'role_id', 'is_super_admin', ]; + /** + * The attributes that should be hidden for arrays. + * @var array + */ protected $hidden = [ 'password', 'remember_token', ]; + /** + * The attributes that should be hidden for arrays. + * @var array + */ protected $appends = [ 'image_path_url', 'image_path_name', ]; - // public function sendPasswordResetNotification($token) - // { - // $this->notify(new ResetPassword($token)); - // } + /** + * Send the password reset notification. + * + * @param string $token + * @return void + */ + public function sendPasswordResetNotification($token) + { + $this->notify(new ResetPassword($token)); + } + /** + * Get the full name for the Admin User. + * @return string $fullName + */ public function getFullNameAttribute() { return $this->attributes['first_name'] . ' ' . $this->attributes['last_name']; } + /** + * Get the full name for the Admin User. + * @return string $fullName + */ public function getImagePathUrlAttribute() { if (empty($this->imagePath)) { return 'https://place-hold.it/250x250'; } - return asset('storage' . DIRECTORY_SEPARATOR . $this->imagePath->path); } + /** + * Get the full name for the Admin User. + * @return string $fullName + */ public function getImagePathNameAttribute() { return basename($this->image_path); } + /** + * Set User Password for the Admin User. + * @param string $password + * @return void + */ public function setPasrdAttribute($val) { $this->attributes['password'] = Hash::make($val); } - // public function permissions() - // { - // dd($this->role->permissions); - // } + + /** + * To check if user has permission to access the given route name. + * @return \Illuminate\Database\Eloquent\Collection $permissions + */ + public function permissions() + { + dd($this->role->permissions); + } + public function role() { return $this->belongsTo(Role::class); } - + /** + * To check if user has permission to access the given route name. + * @return bool + */ public function hasPermission($routeName): bool { if ($this->is_super_admin) { @@ -81,8 +120,11 @@ public function hasPermission($routeName): bool return true; } - // public function imagePath() - // { - // return $this->morphOne(Document::class, 'documentable'); - // } + /** + * Get the staff profile image. + */ + public function imagePath() + { + return $this->morphOne(Document::class, 'documentable'); + } } diff --git a/src/Database/Models/Attribute.php b/src/Database/Models/Attribute.php new file mode 100644 index 000000000..16a3fa0f5 --- /dev/null +++ b/src/Database/Models/Attribute.php @@ -0,0 +1,57 @@ + 'Image', + 'TEXT' => 'Text', + ]; + + /** + * The attributes that are mass assignable. + * @var array + */ + protected $fillable = ['name', 'slug', 'display_as']; + + /** + * Appended attribute for the model. + * @var + */ + protected $appends = ['dropdown']; + + /** + * Attribute has many dropdown options. + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function dropdownOptions() + { + return $this->hasMany(AttributeDropdownOption::class); + } + + /** + * Attribute Belongs to many Products. + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function products() + { + return $this->belongsToMany(Product::class); + } + + /** + * Get the Dropdown Options for Select. + * @return \Illuminate\Database\Eloquent\Collection + */ + public function getDropdownAttribute() + { + return $this->dropdownOptions; + } +} diff --git a/src/Database/Models/AttributeDropdownOption.php b/src/Database/Models/AttributeDropdownOption.php new file mode 100644 index 000000000..449062d56 --- /dev/null +++ b/src/Database/Models/AttributeDropdownOption.php @@ -0,0 +1,21 @@ +belongsTo(Attribute::class); + } +} diff --git a/src/Database/Models/CartProduct.php b/src/Database/Models/CartProduct.php new file mode 100644 index 000000000..68b12f641 --- /dev/null +++ b/src/Database/Models/CartProduct.php @@ -0,0 +1,49 @@ +belongsTo(Product::class); + } + + /** + * CartProduct Belongs to a product. + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function customer() + { + return $this->belongsTo(Customer::class, 'visitor_id'); + } +} diff --git a/src/Database/Models/Category.php b/src/Database/Models/Category.php new file mode 100644 index 000000000..cb3ce2786 --- /dev/null +++ b/src/Database/Models/Category.php @@ -0,0 +1,49 @@ +belongsToMany(Product::class); + } + + /** + * Category can has many child categories. + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function children() + { + return $this->hasMany(self::class, 'parent_id'); + } + + /** + * Category can have one parent category. + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function parent() + { + return $this->belongsTo(self::class, 'parent_id'); + } +} diff --git a/src/Database/Models/Configuration.php b/src/Database/Models/Configuration.php new file mode 100644 index 000000000..f8fbf3ae5 --- /dev/null +++ b/src/Database/Models/Configuration.php @@ -0,0 +1,12 @@ +notify(new CustomerResetPassword($token)); + } + + /** + * Get the full name for the Admin User. + * @return string $fullName + */ + public function getFullNameAttribute() + { + return $this->attributes['first_name'].' '.$this->attributes['last_name']; + } + + /** + * Get the full name for the Admin User. + * @return string $fullName + */ + public function getImagePathUrlAttribute() + { + if ($this->attributes['image_path'] === null) { + return 'https://placehold.it/250x250'; + } + return asset('storage/'.$this->attributes['image_path']); + } + + /** + * Get the full name for the Admin User. + * @return string $fullName + */ + public function getImagePathNameAttribute() + { + return basename($this->image_path); + } + + /** + * Get the Passport Client for User and If it doesnot exist then create a new one + * @return \Laravel\Passport\Client $client + */ + public function getPassportClient() + { + $client = $this->clients()->first(); + if (null === $client) { + $clientRepository = app(ClientRepository::class); + $redirectUri = asset(''); + $client = $clientRepository->createPasswordGrantClient($this->id, $this->full_name, $redirectUri, 'customers'); + } + + return $client; + } + + public function addresses() + { + return $this->hasMany(Address::class); + } + public function setPasswordAttribute($value) + { + return $this->attributes['password'] = bcrypt($value); + } + public function getPasswordAttribute($value) + { + return $this->attributes['password']; + } + /** + * To check if user has permission to access the given route name. + * @return bool + */ + public function hasPermission($routeName): bool + { + if ($this->is_super_admin) { + return true; + } + $role = $this->role; + if ($role->permissions->pluck('name')->contains($routeName) == false) { + return false; + } + + return true; + } + + /** + * To check if user has permission to access the given route name. + * @return \Illuminate\Database\Eloquent\Collection $permissions + */ + public function permissions() + { + // + } + + public function role() + { + return $this->belongsTo(Role::class); + } + + public function cartProducts() + { + return $this->hasMany(CartProduct::class, 'visitor_id', 'id'); + } + + /** + * Get the order comments. + */ + public function orderComments() + { + // + } +} diff --git a/src/Database/Models/Document.php b/src/Database/Models/Document.php new file mode 100644 index 000000000..2cfc14a5b --- /dev/null +++ b/src/Database/Models/Document.php @@ -0,0 +1,40 @@ +morphTo(); + } + + public function getUrlAttribute() + { + if ($this->path) { + return asset($this->path); + } + + return null; + } +} diff --git a/src/Database/Models/OauthClient.php b/src/Database/Models/OauthClient.php new file mode 100644 index 000000000..10d48f222 --- /dev/null +++ b/src/Database/Models/OauthClient.php @@ -0,0 +1,48 @@ +setAttribute('id', Uuid::uuid4()->toString()); + }); + } +} diff --git a/src/Database/Models/Order.php b/src/Database/Models/Order.php new file mode 100644 index 000000000..0deeda5b8 --- /dev/null +++ b/src/Database/Models/Order.php @@ -0,0 +1,77 @@ +belongsTo(OrderStatus::class); + } + + /** + * Order Customer. + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function customer() + { + return $this->belongsTo(Customer::class); + } + + /** + * Order Shipping Address. + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function shippingAddress() + { + return $this->belongsTo(Address::class, 'shipping_address_id'); + } + + /** + * Order Billing Address. + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function billingAddress() + { + return $this->belongsTo(Address::class, 'billing_address_id'); + } + + /** + * Order Billing Address. + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function products() + { + return $this->hasMany(OrderProduct::class); + } + + /** + * Order has many Comments. + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function orderComments() + { + return $this->hasMany(OrderComment::class); + } +} diff --git a/src/Database/Models/OrderProduct.php b/src/Database/Models/OrderProduct.php new file mode 100644 index 000000000..f4d75d822 --- /dev/null +++ b/src/Database/Models/OrderProduct.php @@ -0,0 +1,36 @@ +belongsTo(Order::class); + } + + /** + * Order Product belongs to one Product. + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function product() + { + return $this->belongsTo(Product::class); + } +} diff --git a/src/Database/Models/OrderStatus.php b/src/Database/Models/OrderStatus.php new file mode 100644 index 000000000..ec0140673 --- /dev/null +++ b/src/Database/Models/OrderStatus.php @@ -0,0 +1,15 @@ +content; + $pattern = sprintf('/(@)?%s\s*(.+?)\s*%s(\r?\n)?/s', $this->contentTags[0], $this->contentTags[1]); + $callback = function ($matches) { + $whitespace = empty($matches[3]) ? '' : $matches[3] . $matches[3]; + // $widget = Widget::get($matches[2]); + + // if (method_exists($widget, 'render')) { + // $widgetContent = $widget->render(); + // } else { + // $widgetContent = ''; + // } + // return $matches[1] ? substr($matches[0], 1) : "{$widgetContent}{$whitespace}"; + }; + return preg_replace_callback($pattern, $callback, $content); + } +} diff --git a/src/Database/Models/Permission.php b/src/Database/Models/Permission.php new file mode 100644 index 000000000..4d44c38f9 --- /dev/null +++ b/src/Database/Models/Permission.php @@ -0,0 +1,21 @@ +hasMany(Role::class); + } +} diff --git a/src/Database/Models/Product.php b/src/Database/Models/Product.php new file mode 100644 index 000000000..22313f7c2 --- /dev/null +++ b/src/Database/Models/Product.php @@ -0,0 +1,89 @@ + 'Basic', + self::PRODUCT_TYPES_DOWNLOADABLE => 'Downlodable', + self::PRODUCT_TYPES_VARIABLE_PRODUCT => 'Variable Product', + ]; + + public const PRODUCT_TYPES_BASIC = 'BASIC'; + public const PRODUCT_TYPES_DOWNLOADABLE = 'DOWNLOADABLE'; + public const PRODUCT_TYPES_VARIABLE_PRODUCT = 'VARIABLE_PRODUCT'; + public const PRODUCT_TYPES_VARIATION = 'VARIATION'; + + /** + * Belongs to Many Categories. + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function categories() + { + return $this->belongsToMany(Category::class) + ->using(new class () extends Pivot { + use UuidTrait; + }) + ->withTimestamps(); + } + + /** + * Get the product image. + */ + public function document() + { + return $this->morphOne(Document::class, 'documentable'); + } + + /** + * Scope a query to only include popular users. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeWithoutVariation($query) + { + return $query->where('type', '!=', self::PRODUCT_TYPES_VARIATION); + } +} diff --git a/src/Database/Models/Property.php b/src/Database/Models/Property.php new file mode 100644 index 000000000..ab1d8b249 --- /dev/null +++ b/src/Database/Models/Property.php @@ -0,0 +1,109 @@ + 'Integer', + 'DECIMAL' => 'Decimal', + 'DATETIME' => 'Date Time', + 'VARCHAR' => 'VarChar (max:255)', + 'BOOLEAN' => 'Boolean (true/false)', + 'TEXT' => 'Text Area (big text)', + ]; + + /** + * The available field types for the product property. + * @var array + */ + public const PROPERTY_FIELDTYPES = [ + 'TEXT' => 'Text box', + 'TEXTAREA' => 'Text Area', + 'CKEDITOR' => 'Rich Text Editor', + 'SELECT' => 'Select (dropdown)', + 'FILE' => 'File', + 'DATETIME' => 'Date Time', + 'RADIO' => 'Radio', + 'SWITCH' => 'Switch', + ]; + + /** + * Property has many varchar value. + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function products() + { + return $this->hasMany(Product::class); + } + + /** + * Property has many dropdown options. + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function dropdownOptions() + { + return $this->hasMany(PropertyDropdownOption::class); + } + + /** + * Get the Dropdown Options for Select. + * @return \Illuminate\Database\Eloquent\Collection + */ + public function getDropdownAttribute() + { + if ($this->field_type === 'SELECT' || $this->field_type === 'RADIO') { + return $this->dropdownOptions()->remember()->get(); + } + } + + /** + * Get the Dropdown Options for Select. + * @return \Illuminate\Support\Collection + */ + public function getDropdownOptions(): Collection + { + $data = Collection::make([]); + + if ($this->dropdownOptions !== null && count($this->dropdownOptions) > 0) { + foreach ($this->dropdownOptions as $dropdown) { + $data->push([ + 'label' => $dropdown->display_text, + 'value' => $dropdown->id, + ]); + } + } + + return $data; + } +} diff --git a/src/Database/Models/PropertyDropdownOption.php b/src/Database/Models/PropertyDropdownOption.php new file mode 100644 index 000000000..221065577 --- /dev/null +++ b/src/Database/Models/PropertyDropdownOption.php @@ -0,0 +1,12 @@ +permissions->pluck('name'); - // $permissions = explode(',', $routes); - // $hasPermission = true; - - // foreach ($permissions as $permissions) { - // if (! $modelPermissions->contains($permissions)) { - // $hasPermission = false; - // } - // } - - // return $hasPermission; - // } - - // /** - // * Role has many Permissions. - // * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany - // */ - // public function permissions() - // { - // return $this->belongsToMany(Permission::class); - // } + public function hasPermission($routes) + { + $modelPermissions = $this->permissions->pluck('name'); + $permissions = explode(',', $routes); + $hasPermission = true; + + foreach ($permissions as $permissions) { + if (! $modelPermissions->contains($permissions)) { + $hasPermission = false; + } + } + + return $hasPermission; + } + + /** + * Role has many Permissions. + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function permissions() + { + return $this->belongsToMany(Permission::class); + } } diff --git a/src/Database/Models/Subscriber.php b/src/Database/Models/Subscriber.php new file mode 100644 index 000000000..6b80188ab --- /dev/null +++ b/src/Database/Models/Subscriber.php @@ -0,0 +1,28 @@ +belongsTo(Customer::class); + } +} diff --git a/src/Database/Repository/AddressRepository.php b/src/Database/Repository/AddressRepository.php new file mode 100644 index 000000000..3850095af --- /dev/null +++ b/src/Database/Repository/AddressRepository.php @@ -0,0 +1,43 @@ +model = new Address(); + } + + /** + * Get the model for the repository + * @return Address + */ + public function model(): Address + { + return $this->model; + } + + + /** + * Get All Addresses from Database via User Id. + * @param int $userId + * @return \Illuminate\Database\Eloquent\Collection $addresses + */ + public function getByCustomerId(int $userId): Collection + { + return Address::with('country')->whereCustomerId($userId)->get(); + } +} diff --git a/src/Database/Repository/AdminUserRepository.php b/src/Database/Repository/AdminUserRepository.php index 3b3de88ee..bbbc9e017 100644 --- a/src/Database/Repository/AdminUserRepository.php +++ b/src/Database/Repository/AdminUserRepository.php @@ -2,29 +2,48 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Contracts\AdminUserModelInterface; use AvoRed\Framework\Database\Models\AdminUser; +use AvoRed\Framework\Database\Contracts\AdminUserModelInterface; class AdminUserRepository extends BaseRepository implements AdminUserModelInterface { + /** + * Filterable Fields + * @var array $filterType + */ protected $filterFields = [ 'first_name', 'last_name', 'email', ]; + /** + * @var AdminUser $model + */ protected $model; + /** + * Construct for the AdminUser Repository + */ public function __construct() { $this->model = new AdminUser(); } + /** + * Get the model for the repository + * @return AdminUser + */ public function model(): AdminUser { return $this->model; } + /** + * Find AdminUser by given Email in database. + * @param string $email + * @return \AvoRed\Framework\Database\Models\AdminUser $adminUser + */ public function findByEmail(string $email): AdminUser { return AdminUser::whereEmail($email)->first(); diff --git a/src/Database/Repository/AttributeDropdownOptionRepository.php b/src/Database/Repository/AttributeDropdownOptionRepository.php new file mode 100644 index 000000000..bda2db4ce --- /dev/null +++ b/src/Database/Repository/AttributeDropdownOptionRepository.php @@ -0,0 +1,40 @@ +model = new AttributeDropdownOption(); + } + + /** + * Get the model for the repository + * @return Attribute + */ + public function model(): AttributeDropdownOption + { + return $this->model; + } +} diff --git a/src/Database/Repository/AttributeRepository.php b/src/Database/Repository/AttributeRepository.php new file mode 100644 index 000000000..5fc1a0d63 --- /dev/null +++ b/src/Database/Repository/AttributeRepository.php @@ -0,0 +1,79 @@ +model = new Attribute(); + } + + /** + * Get the model for the repository + * @return Attribute + */ + public function model(): Attribute + { + return $this->model; + } + + /** + * Save Attribute Dropdown options. + * @param \AvoRed\Framework\Catalog\Requests\AttributeRequest $request + * @param \\AvoRed\Framework\Database\Models\Attribute $attribute + * @return void + */ + public function saveAttributeDropdownOptions(AttributeRequest $request, Attribute $attribute) + { + if ($request->get('dropdown_options') !== null && count($request->get('dropdown_options')) > 0) { + $options = collect(); + $beforeAttributeIds = $attribute->dropdownOptions()->pluck('id'); + foreach ($request->get('dropdown_options') as $key => $option) { + if (empty($option['display_text'])) { + continue; + } + $attributeDropdownOption = $attribute->dropdownOptions()->where('id', $key)->first(); + unset($option['id']); + if ($attributeDropdownOption !== null) { + $attributeDropdownOption->update($option); + } else { + $attribute->dropdownOptions()->create($option); + } + $options->push($key); + } + $deletedIds = $beforeAttributeIds->filter(function ($attributeId) use ($options) { + return !$options->contains($attributeId); + }); + + foreach ($deletedIds as $key => $deletedId) { + // $attribute->attributeProductValues()->where('id', $deletedId)->delete(); + $attribute->dropdownOptions()->where('id', $deletedId)->delete(); + } + } + } +} diff --git a/src/Database/Repository/BaseRepository.php b/src/Database/Repository/BaseRepository.php index 2acd13314..9d6aee8b5 100644 --- a/src/Database/Repository/BaseRepository.php +++ b/src/Database/Repository/BaseRepository.php @@ -9,33 +9,65 @@ abstract class BaseRepository { + /** + * All the Repository class must have an model method which should return the Model Class + * + */ abstract public function model(); + /** + * Get Query Builder of the model + * @param int $perPage + * @return Illuminate\Database\Eloquent\Builder + */ public function query(): Builder { return $this->model()->query(); } + /** + * Create Model Resource into a database. + * @param array $data + * @return \AvoRed\Framework\Database\Models\BaseModel $model + */ public function create(array $data) { return $this->model()->create($data); } + /** + * Find Model Resource into a database. + * @param string $id + * @return \AvoRed\Framework\Database\Models\Model $model + */ public function find(string $id): Model { return $this->model()->find($id); } + /** + * Delete Model Resource from a database. + * @param string $id + * @return int + */ public function delete(string $id): int { return $this->model()->destroy($id); } + /** + * Get All Models Collection from the database. + * @return \Illuminate\Database\Eloquent\Collection $models + */ public function all(): Collection { return $this->model()->all(); } + /** + * Get All Models Collection from the database. + * @return LengthAwarePaginator $models + */ public function paginate(): LengthAwarePaginator { return $this->model()->paginate(); diff --git a/src/Database/Repository/CartProductRepository.php b/src/Database/Repository/CartProductRepository.php new file mode 100644 index 000000000..608cf6ffb --- /dev/null +++ b/src/Database/Repository/CartProductRepository.php @@ -0,0 +1,31 @@ +model = new CartProduct(); + } + + /** + * Get the model for the repository + * @return CartProduct + */ + public function model(): CartProduct + { + return $this->model; + } +} diff --git a/src/Database/Repository/CategoryRepository.php b/src/Database/Repository/CategoryRepository.php new file mode 100644 index 000000000..9c703bcad --- /dev/null +++ b/src/Database/Repository/CategoryRepository.php @@ -0,0 +1,183 @@ +model = new Category(); + } + + /** + * Find Category Resource into a database. + * @param string $slug + * @return \AvoRed\Framework\Database\Models\Category $category + */ + public function findBySlug(string $slug): Category + { + return Category::whereSlug($slug)->first(); + } + + /** + * Get All Category from the database. + * @return \Illuminate\Database\Eloquent\Collection $categories + */ + public function getCategoryProducts(Request $request): Collection + { + $builder = Product::whereHas('categories', function ($query) use ($request) { + $query->whereSlug($request->get('slug')); + }); + + foreach ($request->except(['slug', '_token']) as $key => $values) { + [$filterType, $paramSuffix] = $this->splitParam($key); + + if ($filterType === 'PROPERTY') { + $builder = $this->filterProperties($builder, $paramSuffix, $values); + } + + if ($filterType === 'ATTRIBUTE') { + $builder = $this->filterAttributes($builder, $paramSuffix, $values); + } + } + + $builder->where('type', '!=', 'VARIATION'); + + return $builder->get(); + } + + + + /** + * Get all the categories option to use in Menu Builder. + * @return \Illuminate\Support\Collection $categories + */ + public function getCategoryOptionForMenuBuilder(): SupportCollection + { + $categories = SupportCollection::make([]); + $all = Category::all(); + + $i = 1; + foreach ($all as $category) { + $dummyModel = new stdClass(); + $dummyModel->id = $i; + + $routeParam = config('avored.routes.category.param'); + $routeName = config('avored.routes.category.name'); + $dummyModel->name = $category->name; + $dummyModel->url = route($routeName, $category->$routeParam, false); + $dummyModel->submenus = []; + + $categories->push($dummyModel); + $i++; + } + + return $categories; + } + + /** + * Get all the categories options to use in dropdown. + * @param string $label + * @param mixed $value + * @return \Illuminate\Database\Eloquent\Collectionp $categoryOptions + */ + public function options($label = 'name', $value = 'id'): SupportCollection + { + return Category::all()->pluck($label, $value); + } + + /** + * filter properties via builder. + * @return \Illuminate\Database\Eloquent\Builder $builder + */ + private function filterProperties($builder, $paramSuffix, $values) + { + $property = Property::whereSlug($paramSuffix)->first(); + + $builder->whereHas('productPropertyIntegerValues', function ($query) use ($property, $values) { + $query + ->wherePropertyId($property->id) + ->whereIn('value', $values); + }); + + return $builder; + } + + /** + * filter attributes via builder. + * @return \Illuminate\Database\Eloquent\Builder $builder + */ + private function filterAttributes($builder, $paramSuffix, $values) + { + $attribute = Attribute::whereSlug($paramSuffix)->first(); + $builder->whereHas('attributeProductValues', function ($query) use ($attribute, $values) { + $query + ->whereAttributeId($attribute->id) + ->whereIn('attribute_dropdown_option_id', $values); + }); + + return $builder; + } + + /** + * Split the param and find out which type and etc. + * @return array + */ + private function splitParam($key) + { + $filterType = ''; + $paramPrefix = substr($key, 0, 4); + $paramSuffix = substr($key, 4); + + if ($paramPrefix === 'p___') { + $filterType = 'PROPERTY'; + } elseif ($paramPrefix === 'a___') { + $filterType = 'ATTRIBUTE'; + } + + return [$filterType, $paramSuffix]; + } + + /** + * Model object for the repository + * @return \AvoRed\Framework\Database\Models\Category $model + */ + public function model(): Category + { + return $this->model; + } +} diff --git a/src/Database/Repository/ConfigurationRepository.php b/src/Database/Repository/ConfigurationRepository.php new file mode 100644 index 000000000..77afb26b9 --- /dev/null +++ b/src/Database/Repository/ConfigurationRepository.php @@ -0,0 +1,76 @@ +model = new Configuration(); + } + + + /** + * Model object for the repository + * @return \AvoRed\Framework\Database\Models\Configuration $model + */ + public function model(): Configuration + { + return $this->model; + } + + /** + * Get value of a configuration by given code. + * @param string $code + * @return string $value + */ + public function getValueByCode($code) + { + $configuration = Configuration::whereCode($code)->first(); + + if ($configuration === null) { + return; + } + + return $configuration->value; + } + + /** + * Get model of a configuration by given code. + * @param string $code + * @return string $value + */ + public function getModelByCode($code) + { + $configuration = Configuration::whereCode($code)->first(); + + if ($configuration === null) { + return; + } + + return $configuration; + } + + /** + * create configuration by given data. + * @param array $data + * @return string $value + */ + public function create(array $data): Configuration + { + return Configuration::create($data); + } +} diff --git a/src/Database/Repository/CustomerRepository.php b/src/Database/Repository/CustomerRepository.php new file mode 100644 index 000000000..b27fb2e63 --- /dev/null +++ b/src/Database/Repository/CustomerRepository.php @@ -0,0 +1,74 @@ +model = new Customer(); + } + + /** + * Get the model for the repository + * @return Customer + */ + public function model(): Customer + { + return $this->model; + } + + /** + * Find Customer by given Email in database. + * @param string $email + * @return \AvoRed\Framework\Database\Models\Customer $adminUser + */ + public function findByEmail(string $email): ?Customer + { + return Customer::whereEmail($email)->first(); + } + + /** + * Find New Customer by given parameter in database. + * @param string $from + * @param string $to + * @param string $groupBy + * @return \Illuminate\Support\Collection $customers + */ + public function getNewCustomersBy($from, $to, $groupBy): Collection + { + return $this->model->where('created_at', '>=', $from) + ->where('created_at', '<=', $to) + ->orderBy('created_at') + ->get() + ->groupBy(function ($customer) use ($groupBy) { + switch ($groupBy) { + case "DAY": + return Carbon::parse($customer->created_at)->format('d-M-Y'); + break; + case "WEEK": + return $customer->created_at->startOfWeek()->format('d-M-Y') . ':'. $customer->created_at->endOfWeek()->format('d-M-Y'); + break; + case "MONTH": + return Carbon::parse($customer->created_at)->format('M-Y'); + break; + case "YEAR": + return Carbon::parse($customer->created_at)->format('Y'); + break; + } + }); + } +} diff --git a/src/Database/Repository/DocumentRepository.php b/src/Database/Repository/DocumentRepository.php new file mode 100644 index 000000000..855b6069e --- /dev/null +++ b/src/Database/Repository/DocumentRepository.php @@ -0,0 +1,31 @@ +model = new Document(); + } + + /** + * Get the model for the repository + * @return Document + */ + public function model(): Document + { + return $this->model; + } +} diff --git a/src/Database/Repository/OrderProductRepository.php b/src/Database/Repository/OrderProductRepository.php new file mode 100644 index 000000000..0fe332241 --- /dev/null +++ b/src/Database/Repository/OrderProductRepository.php @@ -0,0 +1,45 @@ +model = new OrderProduct(); + } + + /** + * Get the model for the repository + * @return OrderProduct + */ + public function model(): OrderProduct + { + return $this->model; + } + + /** + * Create OrderProduct Resource into a database. + * @param array $data + * @return \AvoRed\Framework\Database\Models\OrderProduct $orderProduct + */ + public function create(array $data): OrderProduct + { + $orderProduct = parent::create($data); + event(new OrderProductCreated($orderProduct)); + + return $orderProduct; + } +} diff --git a/src/Database/Repository/OrderRepository.php b/src/Database/Repository/OrderRepository.php new file mode 100644 index 000000000..54a6f09b2 --- /dev/null +++ b/src/Database/Repository/OrderRepository.php @@ -0,0 +1,95 @@ +model = new Order(); + } + + /** + * Get the model for the repository + * @return Order + */ + public function model(): Order + { + return $this->model; + } + + /** + * Find Orders of a given user Id. + * @param string $id + * @return \Illuminate\Database\Eloquent\Collection $userOrders + */ + public function findByCustomerId(string $id): LengthAwarePaginator + { + return Order::whereCustomerId($id)->paginate(); + } + + /** + * Get no of order by given month + * @return int $totalOrders + */ + public function getCurrentMonthTotalOrder(): int + { + $firstDay = $this->getFirstDay(); + $totalOrder = Order::select('id')->where('created_at', '>', $firstDay)->count(); + + return $totalOrder; + } + /** + * Get Total Revenue of current month + * @return int $totalOrders + */ + public function getCurrentMonthTotalRevenue(): float + { + $total = 0; + $firstDay = $this->getFirstDay(); + $orders = Order::with('products') + ->select('*') + ->where('created_at', '>', $firstDay) + ->get(); + + foreach ($orders as $order) { + foreach ($order->products as $product) { + $total += ($product->qty * $product->price) + $product->tax_amount; + } + } + + return $total; + } + + private function getFirstDay() + { + $startDay = Carbon::now(); + return $startDay->firstOfMonth(); + } +} diff --git a/src/Database/Repository/OrderStatusRepository.php b/src/Database/Repository/OrderStatusRepository.php new file mode 100644 index 000000000..16106b9c4 --- /dev/null +++ b/src/Database/Repository/OrderStatusRepository.php @@ -0,0 +1,64 @@ +model = new OrderStatus(); + } + + /** + * Get the model for the repository + * @return OrderStatus + */ + public function model(): OrderStatus + { + return $this->model; + } + + /** + * Find OrderStatus Resource into a database. + * @param int $id + * @return \AvoRed\Framework\Database\Models\OrderStatus $orderStatus + */ + public function findDefault(): OrderStatus + { + return OrderStatus::whereIsDefault(1)->first(); + } + + /** + * Update existing is default status to zero so new one can be marked + * + * @return bool + */ + public function updateDefaultOrderStatusToNull(): bool + { + return OrderStatus::whereIsDefault(1)->update(['is_default' => 0]); + } +} diff --git a/src/Database/Repository/PageRepository.php b/src/Database/Repository/PageRepository.php new file mode 100644 index 000000000..0b8bcb001 --- /dev/null +++ b/src/Database/Repository/PageRepository.php @@ -0,0 +1,56 @@ +model = $page; + } + + /** + * Get the model for the repository + * @return Page + */ + public function model(): Page + { + return $this->model; + } + + /** + * Find Page Resource into a database. + * @param string $slug + * @return \AvoRed\Framework\Database\Models\Page $page + */ + public function findBySlug(string $slug) + { + return Page::whereSlug($slug)->first(); + } +} diff --git a/src/Database/Repository/PermissionRepository.php b/src/Database/Repository/PermissionRepository.php new file mode 100644 index 000000000..b1aa3cbb6 --- /dev/null +++ b/src/Database/Repository/PermissionRepository.php @@ -0,0 +1,43 @@ +model = new Permission(); + } + + /** + * Get the model for the repository + * @return Permission + */ + public function model() + { + return $this->model; + } + + + /** + * find Permission by given name from database. + * @param string $name + * @return \AvoRed\Framework\Database\Models\Permission $permission + */ + public function findByName(string $name) + { + return Permission::whereName($name)->first(); + } +} diff --git a/src/Database/Repository/ProductRepository.php b/src/Database/Repository/ProductRepository.php new file mode 100644 index 000000000..04918ebc6 --- /dev/null +++ b/src/Database/Repository/ProductRepository.php @@ -0,0 +1,91 @@ +model = new Product(); + } + + /** + * Find a Product by given slug. + * @param string $slug + * @return \AvoRed\Framework\Database\Models\Product $product + */ + public function findBySlug(string $slug): Product + { + return Product::whereSlug($slug)->first(); + } + + /** + * Find a Product by given barcode. + * @param string $barcode + * @return \AvoRed\Framework\Database\Models\Product $product + */ + public function findByBarcode(string $barcode): Product + { + return Product::whereBarcode($barcode)->first(); + } + + /** + * Get all the products from the connected database. + * @param int $perPage + * @return \Illuminate\Database\Eloquent\Collection $products + */ + public function getAllWithoutVaiation(int $perPage = 10): LengthAwarePaginator + { + return Product::withoutVariation()->paginate($perPage); + } + + /** + * Sync Product with categories. + * @param \AvoRed\Framework\Database\Models\Product $product + * @param \AvoRed\Framework\Catalog\Requests\ProductRequest $request + * @return bool + */ + public function saveProductCategories(Product $product, ProductRequest $request): void + { + if ($request->get('category_id') !== null && count($request->get('category_id')) > 0) { + $product->categories()->sync($request->get('category_id')); + } + } + + /** + * Model object for the repository + * @return \AvoRed\Framework\Database\Models\Product $model + */ + public function model() + { + return $this->model; + } +} diff --git a/src/Database/Repository/PropertyRepository.php b/src/Database/Repository/PropertyRepository.php new file mode 100644 index 000000000..eb731b582 --- /dev/null +++ b/src/Database/Repository/PropertyRepository.php @@ -0,0 +1,69 @@ +model = new Property(); + } + + /** + * Get the model for the repository + * @return Property + */ + public function model(): Property + { + return $this->model; + } + + + public function savePropertyDropdown($request, $property) + { + if (($request->get('field_type') === 'RADIO' || $request->get('field_type') === 'SELECT')) { + $property->dropdownOptions()->delete(); + } + if (($request->get('field_type') === 'RADIO' || + $request->get('field_type') === 'SELECT') && + count($request->get('dropdown_option')) > 0 + ) { + foreach ($request->get('dropdown_option') as $key => $option) { + if (empty($option)) { + continue; + } + + if (is_string($key)) { + $property->dropdownOptions()->create(['display_text' => $option]); + } else { + $optionModel = $property->dropdownOptions()->find($key); + $optionModel->update(['display_text' => $option]); + } + } + } + } +} diff --git a/src/Database/Repository/RoleRepository.php b/src/Database/Repository/RoleRepository.php index 5c7fee978..e6362e23e 100644 --- a/src/Database/Repository/RoleRepository.php +++ b/src/Database/Repository/RoleRepository.php @@ -3,63 +3,90 @@ namespace AvoRed\Framework\Database\Repository; use AvoRed\Framework\Database\Contracts\PermissionModelInterface; -use AvoRed\Framework\Database\Contracts\RoleModelInterface; use AvoRed\Framework\Database\Models\Role; use Illuminate\Support\Collection as SupportCollection; +use AvoRed\Framework\Database\Contracts\RoleModelInterface; class RoleRepository extends BaseRepository implements RoleModelInterface { /** * Filterable Fields - * @var array + * @var array $filterType */ protected $filterFields = [ 'name', ]; + /** + * @var Role $model + */ protected $model; + /** + * Construct for the Role Repository + */ public function __construct() { $this->model = new Role(); } + /** + * Get the model for the repository + * @return Role + */ public function model() { return $this->model; } + /** + * Create Role Resource into a database. + * @param array $data + * @return \AvoRed\Framework\Database\Models\Role $role + */ public function findAdminRole(): Role { return Role::whereName(Role::ADMIN)->first(); } + /** + * get role options to use as dropdown options. + * @return \Illuminate\Support\Collection $roles + */ public function options(): SupportCollection { return Role::all()->pluck('name', 'id'); } - // public function saveRolePermissions($request, $role) - // { - // $permissionIds = SupportCollection::make([]); - // if ($request->get('permissions') !== null && count($request->get('permissions')) > 0) { - // foreach ($request->get('permissions') as $key => $value) { - // if ($value != 1) { - // continue; - // } - // $permissions = explode(',', $key); - // foreach ($permissions as $permissionName) { - // $permissionRepository = app(PermissionModelInterface::class); - // $permissionModel = $permissionRepository->findByName($permissionName); - // if ($permissionModel === null) { - // $permissionModel = $permissionRepository->create(['name' => $permissionName]); - // } - // $permissionIds->push($permissionModel->id); - // } - // } - // $ids = $permissionIds->unique(); - // $role->permissions()->sync($ids); - // } - // } + /** + * Save Role Permission for the Users. + * @param \AvoRed\Framework\System\Requests\RoleRequest $request + * @param \AvoRed\Framework\Models\Database\Role $rolet + * + * @return void + */ + public function saveRolePermissions($request, $role) + { + $permissionIds = SupportCollection::make([]); + + if ($request->get('permissions') !== null && count($request->get('permissions')) > 0) { + foreach ($request->get('permissions') as $key => $value) { + if ($value != 1) { + continue; + } + $permissions = explode(',', $key); + foreach ($permissions as $permissionName) { + $permissionRepository = app(PermissionModelInterface::class); + $permissionModel = $permissionRepository->findByName($permissionName); + if ($permissionModel === null) { + $permissionModel = $permissionRepository->create(['name' => $permissionName]); + } + $permissionIds->push($permissionModel->id); + } + } + $ids = $permissionIds->unique(); + $role->permissions()->sync($ids); + } + } } diff --git a/src/Database/Repository/SubscriberRepository.php b/src/Database/Repository/SubscriberRepository.php new file mode 100644 index 000000000..b86ad3984 --- /dev/null +++ b/src/Database/Repository/SubscriberRepository.php @@ -0,0 +1,31 @@ +model = new Subscriber(); + } + + /** + * Get the model for the repository + * @return Subscriber + */ + public function model(): Subscriber + { + return $this->model; + } +} diff --git a/src/Database/Traits/FilterTrait.php b/src/Database/Traits/FilterTrait.php new file mode 100644 index 000000000..624027a85 --- /dev/null +++ b/src/Database/Traits/FilterTrait.php @@ -0,0 +1,26 @@ +query(); + $isFirst = true; + foreach ($this->filterFields as $filed) { + if ($isFirst) { + $query->where($filed, 'like', '%'. $filter .'%'); + $isFirst = false; + } else { + $query->orWhere($filed, 'like', '%'. $filter .'%'); + } + } + + return $query->paginate($this->perPage); + } +} diff --git a/src/Document/Document.php b/src/Document/Document.php new file mode 100644 index 000000000..aab709311 --- /dev/null +++ b/src/Document/Document.php @@ -0,0 +1,16 @@ +registerDocument(); + } + + /** + * Register the service provider. + * @return void + */ + public function register() + { + $this->registerServices(); + $this->app->alias('document', 'AvoRed\Framework\Document\Manager'); + } + + /** + * Register the Admin Menu instance. + * + * @return void + */ + protected function registerServices() + { + $this->app->singleton( + 'document', + function () { + return new Manager(); + } + ); + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + return ['document', 'AvoRed\Framework\Document\Builder']; + } + + /** + * Register the Menus. + * + * @return void + */ + protected function registerDocument() + { + } +} diff --git a/src/Document/Manager.php b/src/Document/Manager.php new file mode 100644 index 000000000..37316ef28 --- /dev/null +++ b/src/Document/Manager.php @@ -0,0 +1,56 @@ +toString(); + $data['mime_type'] = $file->getClientMimeType(); + $data['size'] = $file->getSize(); + $data['origional_name'] = $file->getClientOriginalName(); + $options = ['disk' => 'public']; + $data['path'] = $this->upload($file, self::PUBLIC_UPLOAD_PATH, $options); + + return $data; + } + + /** + * Upload file to storage folder at given path + * + * @param UploadedFile $file + * @param string $path + * @param array $options + * @return void + */ + protected function upload(UploadedFile $file, $path, $options = []) + { + return $file->storePublicly($path, $options); + } +} diff --git a/src/Graphql/Mutations/Auth/ForgotPasswordMutation.php b/src/Graphql/Mutations/Auth/ForgotPasswordMutation.php new file mode 100644 index 000000000..c3d8bfa66 --- /dev/null +++ b/src/Graphql/Mutations/Auth/ForgotPasswordMutation.php @@ -0,0 +1,74 @@ + 'forgotPassword', + 'description' => 'A mutation' + ]; + + /** + * Customer Repository + * @var AvoRed\Framework\Database\Repository\CustomerRepository + */ + protected $customerRepository; + + /** + * All Customer construct + * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository + * @return void + */ + public function __construct( + CustomerModelInterface $customerRepository + ) { + $this->customerRepository = $customerRepository; + } + + public function type(): Type + { + return GraphQL::type('Notification'); + } + + public function args(): array + { + return [ + 'email' => [ + 'name' => 'email', + 'type' => Type::nonNull(Type::string()), + ] + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + $response = $this->broker()->sendResetLink(['email' => $args['email']]); + + if ($response === Password::RESET_LINK_SENT) { + return ['success' => true, + 'message' => __('avored::system.success_sent_password_reset_email_message') + ]; + } + } + + + /** + * Get the broker to be used during password reset. + * + * @return \Illuminate\Contracts\Auth\PasswordBroker + */ + public function broker() + { + return Password::broker('customers'); + } +} diff --git a/src/Graphql/Mutations/Auth/LoginMutation.php b/src/Graphql/Mutations/Auth/LoginMutation.php new file mode 100644 index 000000000..cbc87f53a --- /dev/null +++ b/src/Graphql/Mutations/Auth/LoginMutation.php @@ -0,0 +1,117 @@ + 'login', + 'description' => 'A mutation' + ]; + + /** + * Customer Repository + * @var AvoRed\Framework\Database\Repository\CustomerRepository + */ + protected $customerRepository; + + /** + * All Customer construct + * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository + * @return void + */ + public function __construct( + CustomerModelInterface $customerRepository + ) { + $this->customerRepository = $customerRepository; + } + + /** + * Setup the Validation rules for login mutation + * + * @return array $rules + */ + protected function rules(array $rules = []): array + { + return [ + 'email' => ['required', 'max:255'], + 'password' => ['required', 'max:255'] + ]; + } + + public function type(): Type + { + return GraphQL::type('Customer'); + } + + public function args(): array + { + return [ + 'email' => [ + 'name' => 'email', + 'type' => Type::string(), + ], + 'password' => [ + 'name' => 'password', + 'type' => Type::string() + ], + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + $data = []; + + $customer = $this->customerRepository->findByEmail($args['email']); + $client = $customer->getPassportClient(); + + if (null !== $client && $client instanceof Client) { + $serverRequest = $this->createRequest($client, $customer->id, $args, $scope = []); + $reponse = app(AccessTokenController::class)->issueToken($serverRequest); + $data = json_decode($reponse->content(), true); + + $customer->token_type = $data['token_type']; + $customer->expires_in = $data['expires_in']; + $customer->access_token = $data['access_token']; + $customer->refresh_token = $data['refresh_token']; + + return $customer; + } + + return null; + } + + /** + * Create a request instance for the given client. + * + * @param \Laravel\Passport\Client $client + * @param mixed $userId + * @param array $scopes + * @return \Nyholm\Psr7\ServerRequest + */ + protected function createRequest($client, $userId, $data, array $scopes) + { + return (new ServerRequest('POST', 'not-important'))->withParsedBody([ + 'grant_type' => 'password', + 'client_id' => $client->id, + 'client_secret' => $client->secret, + 'username' => $data['email'], + 'password' => $data['password'], + 'user_id' => $userId, + 'scope' => implode(' ', $scopes), + ]); + } +} diff --git a/src/Graphql/Mutations/Auth/RegisterMutation.php b/src/Graphql/Mutations/Auth/RegisterMutation.php new file mode 100644 index 000000000..305a20d83 --- /dev/null +++ b/src/Graphql/Mutations/Auth/RegisterMutation.php @@ -0,0 +1,128 @@ + 'register', + 'description' => 'A mutation' + ]; + + /** + * Customer Repository + * @var AvoRed\Framework\Database\Repository\CustomerRepository + */ + protected $customerRepository; + + /** + * All Customer construct + * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository + * @return void + */ + public function __construct( + CustomerModelInterface $customerRepository + ) { + $this->customerRepository = $customerRepository; + } + + public function type(): Type + { + return GraphQL::type('Customer'); + } + + /** + * Setup the Validation rules for register mutation + * + * @return array $rules + */ + protected function rules(array $rules = []): array + { + return [ + 'first_name' => ['required', 'max:255'], + 'last_name' => ['required', 'max:255'], + 'email' => ['required', 'email', 'max:255'], + 'password' => ['required', 'confirmed', 'max:255'], + ]; + } + + public function args(): array + { + return [ + 'first_name' => [ + 'name' => 'first_name', + 'type' => Type::nonNull(Type::string()), + ], + 'last_name' => [ + 'name' => 'last_name', + 'type' => Type::nonNull(Type::string()), + ], + 'email' => [ + 'name' => 'email', + 'type' => Type::nonNull(Type::string()), + ], + 'password' => [ + 'name' => 'password', + 'type' => Type::nonNull(Type::string()) + ], + 'password_confirmation' => [ + 'name' => 'password_confirmation', + 'type' => Type::nonNull(Type::string()) + ], + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + $customer = $this->customerRepository->create($args); + + $client = $customer->getPassportClient(); + + if (null !== $client && $client instanceof Client) { + $serverRequest = $this->createRequest($client, $customer->id, $args, $scope = []); + $reponse = app(AccessTokenController::class)->issueToken($serverRequest); + $data = json_decode($reponse->content(), true); + + $customer->token_type = $data['token_type']; + $customer->expires_in = $data['expires_in']; + $customer->access_token = $data['access_token']; + $customer->refresh_token = $data['refresh_token']; + + return $customer; + } + + return null; + } + + /** + * Create a request instance for the given client. + * + * @param \Laravel\Passport\Client $client + * @param mixed $userId + * @param array $scopes + * @return \Nyholm\Psr7\ServerRequest + */ + protected function createRequest($client, $userId, $data, array $scopes) + { + return (new ServerRequest('POST', 'not-important'))->withParsedBody([ + 'grant_type' => 'password', + 'client_id' => $client->id, + 'client_secret' => $client->secret, + 'username' => $data['email'], + 'password' => $data['password'], + 'user_id' => $userId, + 'scope' => implode(' ', $scopes), + ]); + } +} diff --git a/src/Graphql/Mutations/Auth/ResetPasswordMutation.php b/src/Graphql/Mutations/Auth/ResetPasswordMutation.php new file mode 100644 index 000000000..29ac4cb6a --- /dev/null +++ b/src/Graphql/Mutations/Auth/ResetPasswordMutation.php @@ -0,0 +1,120 @@ + 'resetPassword', + 'description' => 'A mutation' + ]; + + /** + * Customer Repository + * @var AvoRed\Framework\Database\Repository\CustomerRepository + */ + protected $customerRepository; + + /** + * All Customer construct + * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository + * @return void + */ + public function __construct( + CustomerModelInterface $customerRepository + ) { + $this->customerRepository = $customerRepository; + } + + public function type(): Type + { + return GraphQL::type('Notification'); + } + + public function args(): array + { + return [ + 'token' => [ + 'name' => 'token', + 'type' => Type::nonNull(Type::string()), + ], + 'email' => [ + 'name' => 'email', + 'type' => Type::nonNull(Type::string()), + ], + 'password' => [ + 'name' => 'password', + 'type' => Type::nonNull(Type::string()), + ], + 'password_confirmation' => [ + 'name' => 'password_confirmation', + 'type' => Type::nonNull(Type::string()), + ], + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + $response = $this->broker()->reset( + $args, + function ($user, $password) { + $this->resetPassword($user, $password); + } + ); + + + + if ($response === Password::PASSWORD_RESET) { + return ['success' => true, + 'message' => __('avored::system.success_reset_password_message') + ]; + } + } + + + /** + * Get the broker to be used during password reset. + * + * @return \Illuminate\Contracts\Auth\PasswordBroker + */ + public function broker() + { + return Password::broker('customers'); + } + + /** + * Reset the given user's password. + * + * @param \AvoRed\Framework\Database\Models\AdminUser $user + * @param string $password + * @return void + */ + protected function resetPassword($user, $password) + { + $this->setUserPassword($user, $password); + $user->setRememberToken(Str::random(60)); + $user->save(); + } + + /** + * Set the user's password. + * + * @param \AvoRed\Framework\Database\Models\AdminUser $user + * @param string $password + * @return void + */ + protected function setUserPassword($user, $password) + { + $user->password = Hash::make($password); + } +} diff --git a/src/Graphql/Mutations/Cart/AddToCartMutation.php b/src/Graphql/Mutations/Cart/AddToCartMutation.php new file mode 100644 index 000000000..d14535a1d --- /dev/null +++ b/src/Graphql/Mutations/Cart/AddToCartMutation.php @@ -0,0 +1,64 @@ + 'addToCart', + 'description' => 'A mutation' + ]; + + /** + * All Address construct + * @return void + */ + public function __construct() + { +// $this->cartProductRepository = $cartProductRepository; + } + + public function type(): Type + { + return Type::listOf(GraphQL::type('CartProduct')); + } + + public function args(): array + { + return [ + 'visitor_id' => [ + 'name' => 'visitor_id', + 'type' => Type::string(), + ], + 'slug' => [ + 'name' => 'slug', + 'type' => Type::nonNull(Type::string()), + ], + 'qty' => [ + 'name' => 'qty', + 'type' => Type::float(), + ] + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + $qty = $args['qty'] ?? 1; + + $visitor = $args['visitor_id'] ?? Uuid::uuid4()->__toString(); + Cart::visitor($visitor); + Cart::add($args['slug'], $qty); + + return Cart::all(); + } +} diff --git a/src/Graphql/Mutations/Cart/DeleteCartMutation.php b/src/Graphql/Mutations/Cart/DeleteCartMutation.php new file mode 100644 index 000000000..0c19267d3 --- /dev/null +++ b/src/Graphql/Mutations/Cart/DeleteCartMutation.php @@ -0,0 +1,45 @@ + 'DeleteCart', + 'description' => 'A mutation' + ]; + + public function type(): Type + { + return Type::listOf(GraphQL::type('CartProduct')); + } + + public function args(): array + { + return [ + 'slug' => [ + 'name' => 'slug', + 'type' => Type::nonNull(Type::string()), + ], + 'visitor_id' => [ + 'name' => 'visitor_id', + 'type' => Type::nonNull(Type::string()), + ] + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + Cart::visitor($args['visitor_id']); + Cart::destroy($args['slug']); + + return Cart::all(); + } +} diff --git a/src/Graphql/Mutations/Cart/UpdateCartMutation.php b/src/Graphql/Mutations/Cart/UpdateCartMutation.php new file mode 100644 index 000000000..b4724c2f7 --- /dev/null +++ b/src/Graphql/Mutations/Cart/UpdateCartMutation.php @@ -0,0 +1,63 @@ + 'updateCart', + 'description' => 'A mutation' + ]; + + /** + * All Address construct + * @return void + */ + public function __construct() + { +// $this->cartProductRepository = $cartProductRepository; + } + + public function type(): Type + { + return Type::listOf(GraphQL::type('CartProduct')); + } + + public function args(): array + { + return [ + 'visitor_id' => [ + 'name' => 'visitor_id', + 'type' => Type::string(), + ], + 'slug' => [ + 'name' => 'slug', + 'type' => Type::nonNull(Type::string()), + ], + 'qty' => [ + 'name' => 'qty', + 'type' => Type::float(), + ] + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + $qty = $args['qty'] ?? 1; + + Cart::visitor($args['visitor_id']); + Cart::update($args['slug'], $qty); + + return Cart::all(); + } +} diff --git a/src/Graphql/Mutations/Customer/CreateAddressMutation.php b/src/Graphql/Mutations/Customer/CreateAddressMutation.php new file mode 100644 index 000000000..03c889ece --- /dev/null +++ b/src/Graphql/Mutations/Customer/CreateAddressMutation.php @@ -0,0 +1,122 @@ + 'createAddressMutation', + 'description' => 'A mutation' + ]; + + /** + * Address Repository + * @var AvoRed\Framework\Database\Repository\AddressRepository + */ + protected $addressRepository; + + /** + * All Address construct + * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository + * @return void + */ + public function __construct(AddressModelInterface $addressRepository) + { + $this->addressRepository = $addressRepository; + } + + public function type(): Type + { + return GraphQL::type('Address'); + } + + /** + * Setup the Validation rules for create address mutation + * + * @return array $rules + */ + protected function rules(array $rules = []): array + { + return [ + 'type' => ['required', 'in:' . Address::BILLING . ',' . Address::SHIPPING], + 'first_name' => ['required', 'max:255'], + 'last_name' => ['required', 'max:255'], + 'company_name' => ['max:255'], + 'phone' => ['max:255'], + 'address1' => ['required', 'max:255'], + 'address2' => ['max:255'], + 'postcode' => ['required', 'max:255'], + 'city' => ['required', 'max:255'], + 'state' => ['required', 'max:255'], + 'country_id' => ['required', 'max:255'], + ]; + } + + public function args(): array + { + return [ + 'type' => [ + 'name' => 'type', + 'type' => Type::nonNull(Type::string()), + ], + 'first_name' => [ + 'name' => 'first_name', + 'type' => Type::nonNull(Type::string()) + ], + 'last_name' => [ + 'name' => 'last_name', + 'type' => Type::nonNull(Type::string()) + ], + 'company_name' => [ + 'name' => 'company_name', + 'type' => Type::string() + ], + 'phone' => [ + 'name' => 'phone', + 'type' => Type::string() + ], + 'address1' => [ + 'name' => 'address1', + 'type' => Type::nonNull(Type::string()) + ], + 'address2' => [ + 'name' => 'address2', + 'type' => Type::string() + ], + 'postcode' => [ + 'name' => 'postcode', + 'type' => Type::nonNull(Type::string()) + ], + 'city' => [ + 'name' => 'city', + 'type' => Type::nonNull(Type::string()) + ], + 'state' => [ + 'name' => 'state', + 'type' => Type::nonNull(Type::string()) + ], + 'country_id' => [ + 'name' => 'country_id', + 'type' => Type::nonNull(Type::string()) + ], + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + $args ['customer_id'] = Auth::guard('customer')->user()->id; + return $this->addressRepository->create($args); + } +} diff --git a/src/Graphql/Mutations/Customer/CreateSubscriberMutation.php b/src/Graphql/Mutations/Customer/CreateSubscriberMutation.php new file mode 100644 index 000000000..bb543e564 --- /dev/null +++ b/src/Graphql/Mutations/Customer/CreateSubscriberMutation.php @@ -0,0 +1,59 @@ + 'CreateSubscriberMutation', + 'description' => 'A mutation' + ]; + + /** + * Subscriber Repository + * @var AvoRed\Framework\Database\Repository\SubscriberRepository + */ + protected $subscriberRepository; + + /** + * All Subscriber construct + * @param \AvoRed\Framework\Database\Contracts\SubscriberModelInterface $subscriberRepository + * @return void + */ + public function __construct(SubscriberModelInterface $subscriberRepository) + { + $this->subscriberRepository = $subscriberRepository; + } + + public function type(): Type + { + return GraphQL::type('Subscriber'); + } + + public function args(): array + { + return [ + 'email' => [ + 'name' => 'email', + 'type' => Type::nonNull(Type::string()), + ] + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + dd('fixed this one'); + $args['status'] = 'ENABLED'; + + return $this->subscriberRepository->create($args); + } +} diff --git a/src/Graphql/Mutations/Customer/CustomerUpdateMutation.php b/src/Graphql/Mutations/Customer/CustomerUpdateMutation.php new file mode 100644 index 000000000..25a1128be --- /dev/null +++ b/src/Graphql/Mutations/Customer/CustomerUpdateMutation.php @@ -0,0 +1,66 @@ + 'customerUpdate', + 'description' => 'A mutation' + ]; + + /** + * Customer Repository + * @var AvoRed\Framework\Database\Repository\CustomerRepository + */ + protected $customerRepository; + + /** + * All Customer construct + * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository + * @return void + */ + public function __construct(CustomerModelInterface $customerRepository) + { + $this->customerRepository = $customerRepository; + } + + public function type(): Type + { + return GraphQL::type('Customer'); + } + + public function args(): array + { + return [ + 'first_name' => [ + 'name' => 'first_name', + 'type' => Type::nonNull(Type::string()), + ], + 'last_name' => [ + 'name' => 'last_name', + 'type' => Type::nonNull(Type::string()) + ], + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + dd('fixed this one'); + $customer->update($args); + + return $customer; + } +} diff --git a/src/Graphql/Mutations/Customer/DeleteAddressMutation.php b/src/Graphql/Mutations/Customer/DeleteAddressMutation.php new file mode 100644 index 000000000..f15b3c0d4 --- /dev/null +++ b/src/Graphql/Mutations/Customer/DeleteAddressMutation.php @@ -0,0 +1,62 @@ + 'deleteAddressMutation', + 'description' => 'A mutation' + ]; + + /** + * Address Repository + * @var AvoRed\Framework\Database\Repository\AddressRepository + */ + protected $addressRepository; + + /** + * All Address construct + * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository + * @return void + */ + public function __construct(AddressModelInterface $addressRepository) + { + $this->addressRepository = $addressRepository; + } + + public function type(): Type + { + return GraphQL::type('Notification'); + } + + public function args(): array + { + return [ + 'id' => [ + 'name' => 'id', + 'type' => Type::nonNull(Type::string()), + ], + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + if ($this->addressRepository->delete($args['id'])) { + return ['success' => true, 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.address')])]; + } + throw new Exception('There is an error while deleting an address model with given id:'. $args['id']); + } +} diff --git a/src/Graphql/Mutations/Customer/UpdateAddressMutation.php b/src/Graphql/Mutations/Customer/UpdateAddressMutation.php new file mode 100644 index 000000000..95a681711 --- /dev/null +++ b/src/Graphql/Mutations/Customer/UpdateAddressMutation.php @@ -0,0 +1,128 @@ + 'updateAddressMutation', + 'description' => 'A mutation' + ]; + + /** + * Setup the Validation rules for create address mutation + * + * @return array $rules + */ + protected function rules(array $rules = []): array + { + return [ + 'id' => ['required', 'max:255'], + 'type' => ['required', 'in:' . Address::BILLING . ',' . Address::SHIPPING], + 'first_name' => ['required', 'max:255'], + 'last_name' => ['required', 'max:255'], + 'company_name' => ['max:255'], + 'phone' => ['max:255'], + 'address1' => ['required', 'max:255'], + 'address2' => ['max:255'], + 'postcode' => ['required', 'max:255'], + 'city' => ['required', 'max:255'], + 'state' => ['required', 'max:255'], + 'country_id' => ['required', 'max:255'], + ]; + } + + /** + * Address Repository + * @var AvoRed\Framework\Database\Repository\AddressRepository + */ + protected $addressRepository; + + /** + * All Address construct + * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository + * @return void + */ + public function __construct(AddressModelInterface $addressRepository) + { + $this->addressRepository = $addressRepository; + } + + public function type(): Type + { + return GraphQL::type('Address'); + } + + public function args(): array + { + return [ + 'id' => [ + 'name' => 'id', + 'type' => Type::nonNull(Type::string()), + ], + 'type' => [ + 'name' => 'type', + 'type' => Type::nonNull(Type::string()), + ], + 'first_name' => [ + 'name' => 'first_name', + 'type' => Type::nonNull(Type::string()) + ], + 'last_name' => [ + 'name' => 'last_name', + 'type' => Type::nonNull(Type::string()) + ], + 'company_name' => [ + 'name' => 'company_name', + 'type' => Type::string() + ], + 'address1' => [ + 'name' => 'address1', + 'type' => Type::nonNull(Type::string()) + ], + 'address2' => [ + 'name' => 'address2', + 'type' => Type::string() + ], + 'postcode' => [ + 'name' => 'postcode', + 'type' => Type::nonNull(Type::string()) + ], + 'city' => [ + 'name' => 'city', + 'type' => Type::nonNull(Type::string()) + ], + 'state' => [ + 'name' => 'state', + 'type' => Type::nonNull(Type::string()) + ], + 'country_id' => [ + 'name' => 'country_id', + 'type' => Type::nonNull(Type::string()) + ], + 'phone' => [ + 'name' => 'phone', + 'type' => Type::string() + ], + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + $address = $this->addressRepository->find($args['id']); + $address->update($args); + + return $address; + } +} diff --git a/src/Graphql/Mutations/PlaceOrderMutation.php b/src/Graphql/Mutations/PlaceOrderMutation.php new file mode 100644 index 000000000..3307764dd --- /dev/null +++ b/src/Graphql/Mutations/PlaceOrderMutation.php @@ -0,0 +1,130 @@ + 'placeOrderMutation', + 'description' => 'A mutation' + ]; + + /** + * Order Repository + * @var AvoRed\Framework\Database\Repository\OrderRepository + */ + protected $orderRepository; + /** + * OrderProduct Repository + * @var AvoRed\Framework\Database\Repository\OrderProductRepository + */ + protected $orderProductRepository; + /** + * OrderStatus Repository + * @var AvoRed\Framework\Database\Repository\OrderStatusRepository + */ + protected $orderStatusRepository; + + /** + * All Order construct + * @param \AvoRed\Framework\Database\Contracts\OrderModelInterface $orderRepository + * @param \AvoRed\Framework\Database\Contracts\OrderProductModelInterface $orderProductRepository + * @return void + */ + public function __construct( + OrderModelInterface $orderRepository, + OrderProductModelInterface $orderProductRepository, + OrderStatusModelInterface $orderStatusRepository + ) { + $this->orderRepository = $orderRepository; + $this->orderProductRepository = $orderProductRepository; + $this->orderStatusRepository = $orderStatusRepository; + } + + public function type(): Type + { + return GraphQL::type('Order'); + } + + public function args(): array + { + return [ + 'shipping_option' => [ + 'name' => 'shipping_option', + 'type' => Type::nonNull(Type::string()), + ], + 'payment_option' => [ + 'name' => 'payment_option', + 'type' => Type::nonNull(Type::string()) + ], +// 'customer_id' => [ +// 'name' => 'customer_id', +// 'type' => Type::nonNull(Type::string()) +// ], + 'shipping_address_id' => [ + 'name' => 'shipping_address_id', + 'type' => Type::nonNull(Type::string()) + ], + 'billing_address_id' => [ + 'name' => 'billing_address_id', + 'type' => Type::nonNull(Type::string()) + ] + ]; + } + + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + $customer = Auth::guard('customer')->user(); + $orderStatus = $this->orderStatusRepository->findDefault(); + $args['order_status_id'] = $orderStatus->id; + $args['customer_id'] = $customer->id; + $order = $this->orderRepository->create($args); + $this->syncProducts($order, $customer, $args); +// dd($customer->cartProducts()->update(['status' => CartProduct::PLACED_ORDER])); + return $order; + } + + + /** + * Sync Products and Attributes with Order Tables. + * @param \AvoRed\Framework\Database\Models\Order $order + * @param \AvoRed\Framework\Database\Models\Customer $customer + * @param array $args + * @return void + */ + private function syncProducts(Order $order, $customer, $args) + { + $products = $customer->cartProducts() + ->where('status', CartProduct::WAITING_TO_BE_PLACED_ORDER) + ->get(); + foreach ($products as $cartProduct) { + $product = $cartProduct->product; + + $cartProduct->update(['status' => CartProduct::PLACED_ORDER]); + $orderProductData = [ + 'product_id' => $product->id, + 'order_id' => $order->id, + 'qty' => $cartProduct->qty, + 'price' => $product->price, + 'tax_amount' => $product->tax_amount ?? 0, + ]; + $this->orderProductRepository->create($orderProductData); + } + } +} diff --git a/src/Graphql/Queries/AddressQuery.php b/src/Graphql/Queries/AddressQuery.php new file mode 100644 index 000000000..40fb5bf66 --- /dev/null +++ b/src/Graphql/Queries/AddressQuery.php @@ -0,0 +1,75 @@ + 'addressQuery', + 'description' => 'A query' + ]; + + /** + * Address Repository + * @var AvoRed\Framework\Database\Repository\AddressRepository + */ + protected $addressRepository; + + /** + * All Address construct + * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository + * @return void + */ + public function __construct(AddressModelInterface $addressRepository) + { + $this->addressRepository = $addressRepository; + } + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return GraphQL::type('Address'); + } + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return [ + 'id' => [ + 'name' => 'id', + 'type' => Type::nonNull(Type::string()) + ], + ]; + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return Address + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Address + { + return $this->addressRepository->find($args['id']); + } +} diff --git a/src/Graphql/Queries/AllAddressQuery.php b/src/Graphql/Queries/AllAddressQuery.php new file mode 100644 index 000000000..bfab2573d --- /dev/null +++ b/src/Graphql/Queries/AllAddressQuery.php @@ -0,0 +1,73 @@ + 'allAddress', + 'description' => 'A query' + ]; + + /** + * Address Repository + * @var AvoRed\Framework\Database\Repository\AddressRepository + */ + protected $addressRepository; + + /** + * All Address construct + * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository + * @return void + */ + public function __construct(AddressModelInterface $addressRepository) + { + $this->addressRepository = $addressRepository; + } + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return Type::listOf(GraphQL::type('Address')); + } + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return []; + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return \Illuminate\Database\Eloquent\Collection + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Collection + { + $customer = Auth::guard('customer')->user(); + + return $customer->addresses; + } +} diff --git a/src/Graphql/Queries/AllCategoryQuery.php b/src/Graphql/Queries/AllCategoryQuery.php new file mode 100644 index 000000000..b769ee835 --- /dev/null +++ b/src/Graphql/Queries/AllCategoryQuery.php @@ -0,0 +1,70 @@ + 'allCategory', + 'description' => 'A query' + ]; + + /** + * Category Repository + * @var AvoRed\Framework\Database\Repository\CategoryRepository + */ + protected $categoryRepository; + + /** + * All Category construct + * @param \AvoRed\Framework\Database\Contracts\CategoryModelInterface $categoryRepository + * @return void + */ + public function __construct(CategoryModelInterface $categoryRepository) + { + $this->categoryRepository = $categoryRepository; + } + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return Type::listOf(GraphQL::type('Category')); + } + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return []; + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return \Illuminate\Database\Eloquent\Collection + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Collection + { + return $this->categoryRepository->query()->whereNull('parent_id')->get(); + } +} diff --git a/src/Graphql/Queries/AllOrdersQuery.php b/src/Graphql/Queries/AllOrdersQuery.php new file mode 100644 index 000000000..a1df85d63 --- /dev/null +++ b/src/Graphql/Queries/AllOrdersQuery.php @@ -0,0 +1,73 @@ + 'allOrders', + 'description' => 'A query' + ]; + + /** + * Order Repository + * @var AvoRed\Framework\Database\Repository\OrderRepository + */ + protected $orderRepository; + + /** + * All Order construct + * @param \AvoRed\Framework\Database\Contracts\OrderModelInterface $orderRepository + * @return void + */ + public function __construct(OrderModelInterface $orderRepository) + { + $this->orderRepository = $orderRepository; + } + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return Type::listOf(GraphQL::type('Order')); + } + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return []; + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return LengthAwarePaginator + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): LengthAwarePaginator + { + $customer = Auth::guard('customer')->user(); + return $this->orderRepository->findByCustomerId($customer->id); + } +} diff --git a/src/Graphql/Queries/CartItemsQuery.php b/src/Graphql/Queries/CartItemsQuery.php new file mode 100644 index 000000000..7f5cfa96f --- /dev/null +++ b/src/Graphql/Queries/CartItemsQuery.php @@ -0,0 +1,60 @@ + 'cartItems', + 'description' => 'A query' + ]; + + + public function type(): Type + { + return Type::listOf(GraphQL::type('CartProduct')); + } + + + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return [ + 'visitor_id' => [ + 'name' => 'visitor_id', + 'type' => Type::nonNull(Type::string()) + ], + ]; + } + + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return Address + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Collection + { + return Cart::visitor($args['visitor_id'])->all(); + } +} diff --git a/src/Graphql/Queries/CategoryQuery.php b/src/Graphql/Queries/CategoryQuery.php new file mode 100644 index 000000000..20468c249 --- /dev/null +++ b/src/Graphql/Queries/CategoryQuery.php @@ -0,0 +1,80 @@ + 'category', + 'description' => 'A query' + ]; + + /** + * Category Repository + * @var AvoRed\Framework\Database\Repository\CategoryRepository + */ + protected $categoryRepository; + + /** + * All Category construct + * @param \AvoRed\Framework\Database\Contracts\CategoryModelInterface $categoryRepository + * @return void + */ + public function __construct(CategoryModelInterface $categoryRepository) + { + $this->categoryRepository = $categoryRepository; + } + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return GraphQL::type('Category'); + } + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return [ + 'slug' => [ + 'name' => 'slug', + 'type' => Type::nonNull(Type::string()) + ], + 'page' => [ + 'name' => 'page', + 'type' => Type::int() + ], + ]; + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return \Illuminate\Database\Eloquent\Collection + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Category + { + return $this->categoryRepository->findBySlug($args['slug']); + } +} diff --git a/src/Graphql/Queries/CountryOptionsQuery.php b/src/Graphql/Queries/CountryOptionsQuery.php new file mode 100644 index 000000000..3b916490a --- /dev/null +++ b/src/Graphql/Queries/CountryOptionsQuery.php @@ -0,0 +1,53 @@ + 'countryOptions', + 'description' => 'A query' + ]; + + /** + * Customer Repository + * @var AvoRed\Framework\Database\Repository\CustomerRepository + */ + protected $customerRepository; + + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return Type::listOf(GraphQL::type('Option')); + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return Collection + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Collection + { + return DB::table('countries')->get(['id', 'name']); + } +} diff --git a/src/Graphql/Queries/CustomerQuery.php b/src/Graphql/Queries/CustomerQuery.php new file mode 100644 index 000000000..804663920 --- /dev/null +++ b/src/Graphql/Queries/CustomerQuery.php @@ -0,0 +1,80 @@ + 'customerQuery', + 'description' => 'A query' + ]; + + /** + * Customer Repository + * @var AvoRed\Framework\Database\Repository\CustomerRepository + */ + protected $customerRepository; + + /** + * All Customer construct + * @param \AvoRed\Framework\Database\Contracts\CustomerModelInterface $customerRepository + * @return void + */ + public function __construct(CustomerModelInterface $customerRepository) + { + $this->customerRepository = $customerRepository; + } + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return GraphQL::type('Customer'); + } + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return [ + 'id' => [ + 'name' => 'id', + 'type' => Type::string() + ], + ]; + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return Customer + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Customer + { + if (isset($args['id'])) { + return $this->customerRepository->find($args['id']); + } + + return $this->customerRepository->find(Auth::guard('customer')->user()->id); + } +} diff --git a/src/Graphql/Queries/LatestProductQuery.php b/src/Graphql/Queries/LatestProductQuery.php new file mode 100644 index 000000000..bcd258bdf --- /dev/null +++ b/src/Graphql/Queries/LatestProductQuery.php @@ -0,0 +1,70 @@ + 'latestProductQuery', + 'description' => 'A query' + ]; + + /** + * Product Repository + * @var AvoRed\Framework\Database\Repository\ProductRepository + */ + protected $productRepository; + + /** + * All Product construct + * @param \AvoRed\Framework\Database\Contracts\ProductModelInterface $productRepository + * @return void + */ + public function __construct(ProductModelInterface $productRepository) + { + $this->productRepository = $productRepository; + } + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return Type::listOf(GraphQL::type('Product')); + } + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return []; + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return \Illuminate\Database\Eloquent\Collection + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Collection + { + return $this->productRepository->query()->orderBy('updated_at', 'desc')->get(); + } +} diff --git a/src/Graphql/Queries/OrderQuery.php b/src/Graphql/Queries/OrderQuery.php new file mode 100644 index 000000000..af2a484a6 --- /dev/null +++ b/src/Graphql/Queries/OrderQuery.php @@ -0,0 +1,78 @@ + 'allOrders', + 'description' => 'A query' + ]; + + /** + * Order Repository + * @var AvoRed\Framework\Database\Repository\OrderRepository + */ + protected $orderRepository; + + /** + * All Order construct + * @param \AvoRed\Framework\Database\Contracts\OrderModelInterface $orderRepository + * @return void + */ + public function __construct(OrderModelInterface $orderRepository) + { + $this->orderRepository = $orderRepository; + } + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return GraphQL::type('Order'); + } + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return [ + 'id' => [ + 'name' => 'id', + 'type' => Type::nonNull(Type::string()) + ] + ]; + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param mixed $getSelectFields + * @return Orderr + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Order + { + return $this->orderRepository->find($args['id']); + } +} diff --git a/src/Graphql/Queries/PaymentQuery.php b/src/Graphql/Queries/PaymentQuery.php new file mode 100644 index 000000000..511167691 --- /dev/null +++ b/src/Graphql/Queries/PaymentQuery.php @@ -0,0 +1,71 @@ + 'paymentQuery', + 'description' => 'A query' + ]; + + /** + * Address Repository + * @var AvoRed\Framework\Database\Repository\AddressRepository + */ + // protected $addressRepository; + + /** + * All Address construct + * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository + * @return void + */ + public function __construct( + // AddressModelInterface $addressRepository + ) { + // $this->addressRepository = $addressRepository; + } + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return Type::listOf(GraphQL::type('Payment')); + } + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return []; + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return Collection + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + return Payment::all(); + } +} diff --git a/src/Graphql/Queries/ProductQuery.php b/src/Graphql/Queries/ProductQuery.php new file mode 100644 index 000000000..570627e95 --- /dev/null +++ b/src/Graphql/Queries/ProductQuery.php @@ -0,0 +1,72 @@ + 'product', + 'description' => 'A query' + ]; + + /** + * Category Repository + * @var AvoRed\Framework\Database\Repository\ProductRepository + */ + protected $productRepository; + + /** + * All Product construct + * @param \AvoRed\Framework\Database\Contracts\ProductModelInterface $productRepository + * @return void + */ + public function __construct(ProductModelInterface $productRepository) + { + $this->productRepository = $productRepository; + } + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return GraphQL::type('Product'); + } + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return [ + 'slug' => [ + 'name' => 'slug', + 'type' => Type::nonNull(Type::string()) + ], + ]; + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return \Illuminate\Database\Eloquent\Collection + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): Product + { + return $this->productRepository->findBySlug($args['slug']); + } +} diff --git a/src/Graphql/Queries/ShippingQuery.php b/src/Graphql/Queries/ShippingQuery.php new file mode 100644 index 000000000..3ae3a3d25 --- /dev/null +++ b/src/Graphql/Queries/ShippingQuery.php @@ -0,0 +1,71 @@ + 'shippingQuery', + 'description' => 'A query' + ]; + + /** + * Address Repository + * @var AvoRed\Framework\Database\Repository\AddressRepository + */ + // protected $addressRepository; + + /** + * All Address construct + * @param \AvoRed\Framework\Database\Contracts\AddressModelInterface $addressRepository + * @return void + */ + public function __construct( + // AddressModelInterface $addressRepository + ) { + // $this->addressRepository = $addressRepository; + } + + /** + * Return type for these query + * @return \GraphQL\Type\Definition\Type + */ + public function type(): Type + { + return Type::listOf(GraphQL::type('Shipping')); + } + + /** + * Passed arguments for this query + * @return array + */ + public function args(): array + { + return []; + } + + /** + * Resolve Query to get pass an information + * @param mixed $root + * @param array $args + * @param mixed $context + * @param \GraphQL\Type\Definition\ResolveInfo $resolveInfo + * @param midex $getSelectFields + * @return Collection + */ + public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) + { + return Shipping::all(); + } +} diff --git a/src/Graphql/Traits/AuthorizedTrait.php b/src/Graphql/Traits/AuthorizedTrait.php new file mode 100644 index 000000000..68fb2931e --- /dev/null +++ b/src/Graphql/Traits/AuthorizedTrait.php @@ -0,0 +1,24 @@ +check(); + } +} diff --git a/src/Graphql/Types/AddressType.php b/src/Graphql/Types/AddressType.php new file mode 100644 index 000000000..cf4645558 --- /dev/null +++ b/src/Graphql/Types/AddressType.php @@ -0,0 +1,109 @@ + 'Address', + 'description' => 'A type' + ]; + + /** + * Fields for Address Type + * @return array $fields + */ + public function fields(): array + { + return [ + 'id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The id of the address' + ], + 'customer_id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The user id of the address' + ], + 'type' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The type of the address' + ], + 'first_name' => [ + 'type' => Type::string(), + 'description' => 'The first name of the address' + ], + 'last_name' => [ + 'type' => Type::string(), + 'description' => 'The last name of the address' + ], + 'company_name' => [ + 'type' => Type::string(), + 'description' => 'The company name of the address' + ], + 'address1' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The address1 of the address' + ], + 'address2' => [ + 'type' => Type::string(), + 'description' => 'The address2 of the address' + ], + 'postcode' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The postcode of the address' + ], + 'city' => [ + 'type' => Type::string(), + 'description' => 'The city of the address' + ], + 'state' => [ + 'type' => Type::string(), + 'description' => 'The state of the address' + ], + 'country_id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The country id of the address' + ], + 'country_name' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The country id of the address' + ], + 'phone' => [ + 'type' => Type::string(), + 'description' => 'The phone of the address' + ], + 'created_at' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The created_at of the address' + ], + 'updated_at' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The updated_at of the address' + ], + + ]; + } + + /** + * @param \AvoRed\Framework\Database\Models\Address $address + * @param array $args + * @return string $taxAmount + */ + protected function resolveCountryNameField($address, $args) + { + return $address->country->name; + } +} diff --git a/src/Graphql/Types/CartProductType.php b/src/Graphql/Types/CartProductType.php new file mode 100644 index 000000000..25352bc57 --- /dev/null +++ b/src/Graphql/Types/CartProductType.php @@ -0,0 +1,57 @@ + 'CartProduct', + 'description' => 'A type' + ]; + + /** + * Fields for Product Type + * @return array $fields + */ + public function fields(): array + { + return [ + 'id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Product Id' + ], + 'visitor_id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'CartProduct Visitor Id' + ], + 'product_id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'CartProduct product id' + ], + 'product' => [ + 'type' => Type::nonNull(GraphQL::type('Product')), + 'description' => 'CartProduct product model' + ], + 'qty' => [ + 'type' => Type::float(), + 'description' => 'CartProduct qty' + ], + 'created_at' => [ + 'type' => Type::string(), + 'description' => 'Product created at' + ], + 'updated_at' => [ + 'type' => Type::string(), + 'description' => 'Product updated at' + ], + ]; + } +} diff --git a/src/Graphql/Types/CategoryType.php b/src/Graphql/Types/CategoryType.php new file mode 100644 index 000000000..14085697e --- /dev/null +++ b/src/Graphql/Types/CategoryType.php @@ -0,0 +1,125 @@ + 'Category', + 'description' => 'A type' + ]; + + /** + * Fields for Category Type + * @return array $fields + */ + public function fields(): array + { + return [ + 'id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Category Id' + ], + 'name' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Category Name' + ], + 'slug' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Category Slug' + ], + 'description' => [ + 'type' => Type::string(), + 'description' => 'Category Description' + ], + 'meta_title' => [ + 'type' => Type::string(), + 'description' => 'Category Meta title' + ], + 'meta_description' => [ + 'type' => Type::string(), + 'description' => 'Category Meta Description' + ], + 'created_at' => [ + 'type' => Type::string(), + 'description' => 'Category created at' + ], + 'updated_at' => [ + 'type' => Type::string(), + 'description' => 'Category updated at' + ], + // 'filter' => [ + // 'type' => Type::listOf(GraphQL::type('filter')), + // 'description' => 'Category Filter' + // ], + 'products' => [ + 'type' => GraphQL::paginate('Product'), + 'description' => 'Category Product' + ], + 'children' => [ + 'type' => Type::listOf(GraphQL::type('Category')), + 'description' => 'Child Category' + ], + ]; + } + + /** + * @param \AvoRed\Framework\Database\Models\Category $category + * @param array $args + * @return \Illuminate\Support\Collection $titleCollection + */ + protected function resolveFilterField($category, $args) + { + $categoryFilterRepository = app(CategoryFilterModelInterface::class); + return $categoryFilterRepository->findByCategoryId($category->id); + } + + /** + * @param \AvoRed\Framework\Database\Models\Category $category + * @param array $args + * @return \Illuminate\Support\Collection $titleCollection + */ + protected function resolveChildrenField($category, $args) + { + return $category->children; + } + + /** + * @param \AvoRed\Framework\Database\Models\Category $category + * @param array $args + * @param mixed $content + * @param ResolveInfo $resolveInfo + * @return \Illuminate\Support\Collection $categoryProducts + */ + protected function resolveProductsField($category, $args, $context, ResolveInfo $resolveInfo) + { + $args = $resolveInfo->variableValues; + $page = isset($args['page']) ? $args['page'] : 1; + return $category->products()->paginate($this->getNoOfPaginateItem(), ['*'], 'page', $page); + } + + /** + * Get the Number of Item per page + * @return int + */ + protected function getNoOfPaginateItem(): int + { + return $this->perPage; + } +} diff --git a/src/Graphql/Types/CustomerType.php b/src/Graphql/Types/CustomerType.php new file mode 100644 index 000000000..c59c1e470 --- /dev/null +++ b/src/Graphql/Types/CustomerType.php @@ -0,0 +1,83 @@ + 'Customer', + 'description' => 'A type' + ]; + + /** + * Fields for Customer Type + * @return array $fields + */ + public function fields(): array + { + return [ + 'first_name' => [ + 'type' => Type::string(), + 'description' => 'The customer for the first name' + ], + 'last_name' => [ + 'type' => Type::string(), + 'description' => 'The customer for the last name' + ], + 'email' => [ + 'type' => Type::string(), + 'description' => 'The customer for the email' + ], + 'id' => [ + 'type' => Type::string(), + 'description' => 'The customer for the id' + ], + 'created_at' => [ + 'type' => Type::string(), + 'description' => 'Customer created at' + ], + 'updated_at' => [ + 'type' => Type::string(), + 'description' => 'Customer updated at' + ], + 'token_type' => [ + 'type' => Type::string(), + 'description' => 'Customer updated at' + ], + 'expires_in' => [ + 'type' => Type::int(), + 'description' => 'Customer updated at' + ], + 'access_token' => [ + 'type' => Type::string(), + 'description' => 'Customer updated at' + ], + 'refresh_token' => [ + 'type' => Type::string(), + 'description' => 'Customer updated at' + ], + 'addresses' => [ + 'type' => Type::listOf(GraphQL::type('Address')), + 'description' => 'Customer updated at' + ], + ]; + } + + /** + * @param \AvoRed\Framework\Database\Models\Customer $customer + * @param array $args + * @return string $taxAmount + */ + protected function resolveAddressesField($customer, $args) + { + return $customer->addresses; + } +} diff --git a/src/Graphql/Types/NotificationType.php b/src/Graphql/Types/NotificationType.php new file mode 100644 index 000000000..6d31250fa --- /dev/null +++ b/src/Graphql/Types/NotificationType.php @@ -0,0 +1,36 @@ + 'Notification', + 'description' => 'A type' + ]; + + /** + * Fields for Delete Type + * @return array $fields + */ + public function fields(): array + { + return [ + 'success' => [ + 'type' => Type::nonNull(Type::boolean()), + 'description' => 'Success' + ], + 'message' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Message' + ] + ]; + } +} diff --git a/src/Graphql/Types/OptionType.php b/src/Graphql/Types/OptionType.php new file mode 100644 index 000000000..b37f0068e --- /dev/null +++ b/src/Graphql/Types/OptionType.php @@ -0,0 +1,57 @@ + 'Option', + 'description' => 'A type' + ]; + + /** + * Fields for Subscriber Type + * @return array $fields + */ + public function fields(): array + { + return [ + 'value' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The value of the option' + ], + 'label' => [ + 'type' => Type::string(), + 'description' => 'The label of the option' + ], + ]; + } + + + /** + * @param $country + * @param array $args + * @return string $taxAmount + */ + protected function resolveValueField($country, $args) + { + return $country->id; + } + + /** + * @param $country + * @param array $args + * @return string $taxAmount + */ + protected function resolveLabelField($country, $args) + { + return $country->name; + } +} diff --git a/src/Graphql/Types/OrderType.php b/src/Graphql/Types/OrderType.php new file mode 100644 index 000000000..cbaa7b4d2 --- /dev/null +++ b/src/Graphql/Types/OrderType.php @@ -0,0 +1,123 @@ + 'Order', + 'description' => 'A type' + ]; + + /** + * Fields for Order Type + * @return array $fields + */ + public function fields(): array + { + return [ + 'id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Order Id' + ], + 'shipping_option' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Order Shipping Option' + ], + 'payment_option' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Order Payment Option' + ], + 'order_status_id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Order Status Id' + ], + 'order_status_name' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Order Status Name' + ], + 'shipping_address_id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Order Shipping Address Id' + ], + 'shipping_address' => [ + 'type' => Type::nonNull(GraphQL::type('Address')), + 'description' => 'Order Shipping Address' + ], + 'customer' => [ + 'type' => Type::nonNull(GraphQL::type('Customer')), + 'description' => 'Order Customer' + ], + 'billing_address_id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Order Billing Address Id' + ], + 'billing_address' => [ + 'type' => GraphQL::type('Address'), + 'description' => 'Order Billing Address' + ], + 'track_code' => [ + 'type' => Type::string(), + 'description' => 'Order Tracking Code' + ], + 'created_at' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Order created at' + ], + 'updated_at' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Order updated at ' + ], + ]; + } + + /** + * @param \AvoRed\Framework\Database\Models\Order $order + * @param array $args + * @return string $taxAmount + */ + protected function resolveTaxAmountField(Order $order, $args) + { + return $order->taxAmount(); + } + + /** + * @param \AvoRed\Framework\Database\Models\Order $order + * @param array $args + * @return string $taxAmount + */ + protected function resolveBillingAddressField(Order $order, $args) + { + return $order->billingAddress; + } + + /** + * @param \AvoRed\Framework\Database\Models\Order $order + * @param array $args + * @return string $taxAmount + */ + protected function resolveShippingAddressField(Order $order, $args) + { + return $order->shippingAddress; + } + + /** + * @param \AvoRed\Framework\Database\Models\Order $order + * @param array $args + * @return string $taxAmount + */ + protected function resolveOrderStatusNameField(Order $order, $args) + { + return $order->orderStatus->name; + } +} diff --git a/src/Graphql/Types/PaymentType.php b/src/Graphql/Types/PaymentType.php new file mode 100644 index 000000000..5d2f80cd9 --- /dev/null +++ b/src/Graphql/Types/PaymentType.php @@ -0,0 +1,70 @@ + 'Payment', + 'description' => 'A type' + ]; + + /** + * Fields for Payment Type + * @return array $fields + */ + public function fields(): array + { + return [ + 'name' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Payment Name' + ], + 'identifier' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Payment Identifier' + ], + 'view' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Payment View' + ], + ]; + } + + /** + * @param mixed $payment + * @param array $args + * @return string + */ + protected function resolveNameField($payment, $args) + { + return $payment->name(); + } + + /** + * @param mixed $payment + * @param array $args + * @return string + */ + protected function resolveIdentifierField($payment, $args) + { + return $payment->identifier(); + } + + /** + * @param mixed $payment + * @param array $args + * @return string + */ + protected function resolveViewField($payment, $args) + { + return view($payment->view(), $payment->with()); + } +} diff --git a/src/Graphql/Types/ProductType.php b/src/Graphql/Types/ProductType.php new file mode 100644 index 000000000..0dc6a390c --- /dev/null +++ b/src/Graphql/Types/ProductType.php @@ -0,0 +1,143 @@ + 'Product', + 'description' => 'A type' + ]; + + /** + * Fields for Product Type + * @return array $fields + */ + public function fields(): array + { + return [ + 'id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Product Id' + ], + 'name' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Product Name' + ], + 'main_image_url' => [ + 'type' => Type::string(), + 'description' => 'Product Main Image Url' + ], + 'slug' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Product Slug' + ], + 'type' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Product Type' + ], + 'sku' => [ + 'type' => Type::string(), + 'description' => 'Product SKU' + ], + 'barcode' => [ + 'type' => Type::string(), + 'description' => 'Product Barcode' + ], + 'price' => [ + 'type' => Type::float(), + 'description' => 'Product Price' + ], + 'status' => [ + 'type' => Type::int(), + 'description' => 'Product Status' + ], + 'in_stock' => [ + 'type' => Type::int(), + 'description' => 'Product in stock' + ], + 'track_stock' => [ + 'type' => Type::int(), + 'description' => 'Product track stock' + ], + 'is_taxable' => [ + 'type' => Type::int(), + 'description' => 'Product is taxable' + ], + 'cost_price' => [ + 'type' => Type::float(), + 'description' => 'Product cost price' + ], + 'qty' => [ + 'type' => Type::float(), + 'description' => 'Product Qty' + ], + 'weight' => [ + 'type' => Type::float(), + 'description' => 'Product Weight' + ], + 'height' => [ + 'type' => Type::float(), + 'description' => 'Product Height' + ], + 'width' => [ + 'type' => Type::float(), + 'description' => 'Product Width' + ], + 'length' => [ + 'type' => Type::float(), + 'description' => 'Product Length' + ], + 'description' => [ + 'type' => Type::string(), + 'description' => 'Product Description' + ], + 'meta_title' => [ + 'type' => Type::string(), + 'description' => 'Product Meta title' + ], + 'meta_description' => [ + 'type' => Type::string(), + 'description' => 'Product Meta Description' + ], + 'created_at' => [ + 'type' => Type::string(), + 'description' => 'Product created at' + ], + 'updated_at' => [ + 'type' => Type::string(), + 'description' => 'Product updated at' + ], + ]; + } + + /** + * @param mixed $product + * @param array $args + * @return string + */ + protected function resolveMainImageUrlField($product, $args) + { + $document = $product->document()->first(); + + if (is_null($document)) { + $color = str_pad(dechex(rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT); + return 'https://place-hold.it/250/' . $color . '&text=' . str_replace(' ', '-', $product->slug); + } + return asset('storage/' . $document->path); + } +} diff --git a/src/Graphql/Types/ShippingType.php b/src/Graphql/Types/ShippingType.php new file mode 100644 index 000000000..3710a5e76 --- /dev/null +++ b/src/Graphql/Types/ShippingType.php @@ -0,0 +1,70 @@ + 'Shipping', + 'description' => 'A type' + ]; + + /** + * Fields for Shipping Type + * @return array $fields + */ + public function fields(): array + { + return [ + 'name' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Shipping Name' + ], + 'identifier' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Shipping Identifier' + ], + 'view' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'Shipping View' + ], + ]; + } + + /** + * @param mixed $shipping + * @param array $args + * @return string + */ + protected function resolveNameField($shipping, $args) + { + return $shipping->name(); + } + + /** + * @param mixed $shipping + * @param array $args + * @return string + */ + protected function resolveIdentifierField($shipping, $args) + { + return $shipping->identifier(); + } + + /** + * @param mixed $shipping + * @param array $args + * @return string + */ + protected function resolveViewField($shipping, $args) + { + return view($shipping->view(), $shipping->with()); + } +} diff --git a/src/Graphql/Types/SubscriberType.php b/src/Graphql/Types/SubscriberType.php new file mode 100644 index 000000000..8618d8fb6 --- /dev/null +++ b/src/Graphql/Types/SubscriberType.php @@ -0,0 +1,53 @@ + 'Subscriber', + 'description' => 'A type' + ]; + + /** + * Fields for Subscriber Type + * @return array $fields + */ + public function fields(): array + { + return [ + 'id' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The id of the subscriber' + ], + 'customer_id' => [ + 'type' => Type::string(), + 'description' => 'The customer id of the subscriber' + ], + 'email' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The email of the subscriber' + ], + 'status' => [ + 'type' => Type::string(), + 'description' => 'The status of the subscriber' + ], + 'created_at' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The created_at of the subscriber' + ], + 'updated_at' => [ + 'type' => Type::nonNull(Type::string()), + 'description' => 'The updated_at of the subscriber' + ], + + ]; + } +} diff --git a/src/Menu/MenuProvider.php b/src/Menu/MenuProvider.php index d397cf6b5..cd573977f 100644 --- a/src/Menu/MenuProvider.php +++ b/src/Menu/MenuProvider.php @@ -60,83 +60,83 @@ public function provides() */ public function registerAdminMenu() { - // Menu::make('catalog', function (MenuItem $menu) { - // $menu->label('avored::system.catalog') - // ->type(MenuItem::ADMIN) - // ->icon('shopping-bag') - // ->route('#'); - // }); - - // $catalogMenu = Menu::get('catalog'); - - // /** @var Builder $catalogMenu */ - // $catalogMenu->subMenu('product', function (MenuItem $menu) { - // $menu->key('product') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.product') - // ->route('admin.product.index'); - // }); - // $catalogMenu->subMenu('category', function (MenuItem $menu) { - // $menu->key('category') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.category') - // ->route('admin.category.index'); - // }); - // $catalogMenu->subMenu('property', function (MenuItem $menu) { - // $menu->key('property') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.property') - // ->route('admin.property.index'); - // }); - - // $catalogMenu->subMenu('attribute', function (MenuItem $menu) { - // $menu->key('attribute') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.attribute') - // ->route('admin.attribute.index'); - // }); - - // Menu::make('cms', function (MenuItem $menu) { - // $menu->label('avored::system.cms') - // ->type(MenuItem::ADMIN) - // ->icon('book-open') - // ->route('#'); - // }); + Menu::make('catalog', function (MenuItem $menu) { + $menu->label('avored::system.catalog') + ->type(MenuItem::ADMIN) + ->icon('shopping-bag') + ->route('#'); + }); + + $catalogMenu = Menu::get('catalog'); + + /** @var Builder $catalogMenu */ + $catalogMenu->subMenu('product', function (MenuItem $menu) { + $menu->key('product') + ->type(MenuItem::ADMIN) + ->label('avored::system.product') + ->route('admin.product.index'); + }); + $catalogMenu->subMenu('category', function (MenuItem $menu) { + $menu->key('category') + ->type(MenuItem::ADMIN) + ->label('avored::system.category') + ->route('admin.category.index'); + }); + $catalogMenu->subMenu('property', function (MenuItem $menu) { + $menu->key('property') + ->type(MenuItem::ADMIN) + ->label('avored::system.property') + ->route('admin.property.index'); + }); + + $catalogMenu->subMenu('attribute', function (MenuItem $menu) { + $menu->key('attribute') + ->type(MenuItem::ADMIN) + ->label('avored::system.attribute') + ->route('admin.attribute.index'); + }); + + Menu::make('cms', function (MenuItem $menu) { + $menu->label('avored::system.cms') + ->type(MenuItem::ADMIN) + ->icon('book-open') + ->route('#'); + }); /** @var Builder $cmsMenu */ - // $cmsMenu = Menu::get('cms'); + $cmsMenu = Menu::get('cms'); // $cmsMenu->subMenu('menu-group', function (MenuItem $menu) { // $menu->key('menu-group') // ->type(MenuItem::ADMIN) // ->label('avored::system.menu') // ->route('admin.menu-group.index'); // }); - // $cmsMenu->subMenu('page', function (MenuItem $menu) { - // $menu->key('page') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.page') - // ->route('admin.page.index'); - // }); - // Menu::make('order', function (MenuItem $menu) { - // $menu->label('avored::system.order') - // ->icon('dollar-sign') - // ->type(MenuItem::ADMIN) - // ->route('#'); - // }); - // /** @var Builder $orderMenu */ - // $orderMenu = Menu::get('order'); - - // $orderMenu->subMenu('order', function (MenuItem $menu) { - // $menu->key('order') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.order') - // ->route('admin.order.index'); - // }); - // $orderMenu->subMenu('order-status', function (MenuItem $menu) { - // $menu->key('order-status') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.order-status') - // ->route('admin.order-status.index'); - // }); + $cmsMenu->subMenu('page', function (MenuItem $menu) { + $menu->key('page') + ->type(MenuItem::ADMIN) + ->label('avored::system.page') + ->route('admin.page.index'); + }); + Menu::make('order', function (MenuItem $menu) { + $menu->label('avored::system.order') + ->icon('dollar-sign') + ->type(MenuItem::ADMIN) + ->route('#'); + }); + /** @var Builder $orderMenu */ + $orderMenu = Menu::get('order'); + + $orderMenu->subMenu('order', function (MenuItem $menu) { + $menu->key('order') + ->type(MenuItem::ADMIN) + ->label('avored::system.order') + ->route('admin.order.index'); + }); + $orderMenu->subMenu('order-status', function (MenuItem $menu) { + $menu->key('order-status') + ->type(MenuItem::ADMIN) + ->label('avored::system.order-status') + ->route('admin.order-status.index'); + }); // Menu::make('report', function (MenuItem $menu) { // $menu->label('avored::system.admin_menus.report') @@ -168,14 +168,14 @@ public function registerAdminMenu() // ->route('admin.promotion-code.index'); // }); - // Menu::make('user', function (MenuItem $menu) { - // $menu->label('avored::system.user') - // ->type(MenuItem::ADMIN) - // ->icon('users') - // ->route('#'); - // }); + Menu::make('user', function (MenuItem $menu) { + $menu->label('avored::system.user') + ->type(MenuItem::ADMIN) + ->icon('users') + ->route('#'); + }); /** @var $userMenu \AvoRed\Framework\Menu\MenuBuilder */ - // $userMenu = Menu::get('user'); + $userMenu = Menu::get('user'); // $userMenu->subMenu('customer_group', function (MenuItem $menu) { // $menu->key('customer_group') @@ -184,35 +184,35 @@ public function registerAdminMenu() // ->route('admin.customer-group.index'); // }); - // $userMenu->subMenu('staff', function (MenuItem $menu) { - // $menu->key('staff') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.staff') - // ->route('admin.staff.index'); - // }); - // $userMenu->subMenu('subscriber', function (MenuItem $menu) { - // $menu->key('subscriber') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.subscriber') - // ->route('admin.subscriber.index'); - // }); - - // Menu::make('system', function (MenuItem $menu) { - // $menu->label('avored::system.system') - // ->type(MenuItem::ADMIN) - // ->icon('settings') - // ->route('#'); - // }); + $userMenu->subMenu('staff', function (MenuItem $menu) { + $menu->key('staff') + ->type(MenuItem::ADMIN) + ->label('avored::system.staff') + ->route('admin.staff.index'); + }); + $userMenu->subMenu('subscriber', function (MenuItem $menu) { + $menu->key('subscriber') + ->type(MenuItem::ADMIN) + ->label('avored::system.subscriber') + ->route('admin.subscriber.index'); + }); + + Menu::make('system', function (MenuItem $menu) { + $menu->label('avored::system.system') + ->type(MenuItem::ADMIN) + ->icon('settings') + ->route('#'); + }); /** @var $systemMenu \AvoRed\Framework\Menu\MenuBuilder */ - // $systemMenu = Menu::get('system'); - // /** @var Builder $systemMenu */ - // $systemMenu->subMenu('configuration', function (MenuItem $menu) { - // $menu->key('configuration') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.configuration') - // ->route('admin.configuration.index'); - // }); + $systemMenu = Menu::get('system'); + /** @var Builder $systemMenu */ + $systemMenu->subMenu('configuration', function (MenuItem $menu) { + $menu->key('configuration') + ->type(MenuItem::ADMIN) + ->label('avored::system.configuration') + ->route('admin.configuration.index'); + }); // $systemMenu->subMenu('currency', function (MenuItem $menu) { // $menu->key('currency') @@ -221,11 +221,11 @@ public function registerAdminMenu() // ->route('admin.currency.index'); // }); - // $systemMenu->subMenu('role', function (MenuItem $menu) { - // $menu->key('role') - // ->type(MenuItem::ADMIN) - // ->label('avored::system.role') - // ->route('admin.role.index'); - // }); + $systemMenu->subMenu('role', function (MenuItem $menu) { + $menu->key('role') + ->type(MenuItem::ADMIN) + ->label('avored::system.role') + ->route('admin.role.index'); + }); } } diff --git a/src/Module/Console/ControllerMakeCommand.php b/src/Module/Console/ControllerMakeCommand.php new file mode 100644 index 000000000..c1b35930e --- /dev/null +++ b/src/Module/Console/ControllerMakeCommand.php @@ -0,0 +1,189 @@ +files = $files; + } + + /** + * Execute the console command. + * + * @return void + */ + public function handle() + { + $identifier = strtolower($this->getIdentifierInput()); + + [$vendor, $name] = explode('-', $identifier); + + $controllerName = $this->getNameInput(); + + $stubFiles = ['controller']; + + foreach ($stubFiles as $stubFile) { + $methodName = 'get'.ucfirst($stubFile).'Path'; + + $path = $this->$methodName($vendor, $name, $controllerName); + $this->createRequiredDirectories($path); + + $buildMethodName = 'build'.ucfirst($stubFile).'File'; + $this->files->put($path, $this->$buildMethodName()); + } + + $this->info($this->type.' created successfully.'); + } + + /** + * Write the Markdown template for the mailable. + * + * @return void + */ + protected function createRequiredDirectories($path) + { + if (! $this->files->isDirectory(dirname($path))) { + $this->files->makeDirectory(dirname($path), 0755, true); + } + } + + /** + * Get Controller Path. + * @param string $vendor + * @param string $name + * @param string $controllerName + * @return string $controllerPath + */ + protected function getControllerPath($vendor, $name, $controllerName) + { + return base_path('modules/'.$vendor.'/'.$name.'/src/Http/Controllers/'.$controllerName.'.php'); + } + + /** + * Build the class with the given name. + * + * @return string + */ + protected function buildControllerFile() + { + $stubFiles = $this->getStub('controller'); + + $stub = $this->files->get($stubFiles); + $this->replaceNamespace($stub); + + return $stub; + } + + /** + * Get the stub file for the generator. + * + * @return string + */ + protected function getStub($stubName) + { + return __DIR__."/stubs/{$stubName}.stub"; + } + + /** + * Replace the namespace for the given stub. + * + * @param string $stub + * @param string $name + * @return $this + */ + protected function replaceNamespace(&$stub) + { + $rootNamespace = App::getNamespace(); + + $module = Module::get($this->getIdentifierInput()); + + $baseNamespace = $module['namespace']; + + $namespace = $baseNamespace."Http\Controllers"; + + $stub = str_replace( + ['DummyClass', 'DummyRootNamespace', 'DummyNamespace'], + [$this->getNameInput(), $rootNamespace, $namespace], + $stub + ); + + return $this; + } + + /** + * Get the desired name of the module from the input. + * + * @return string + */ + protected function getIdentifierInput() + { + return trim($this->argument('identifier')); + } + + /** + * Get the desired name of the module from the input. + * + * @return string + */ + protected function getNameInput() + { + return trim($this->argument('name')); + } + + /** + * Get the console command arguments. + * + * @return array + */ + protected function getArguments() + { + return [ + ['identifier', InputArgument::REQUIRED, 'The identifier for the module'], + ['name', InputArgument::REQUIRED, 'The name of the Controller'], + ]; + } +} diff --git a/src/Module/Console/ModuleInstallCommand.php b/src/Module/Console/ModuleInstallCommand.php new file mode 100644 index 000000000..70a5d1f9a --- /dev/null +++ b/src/Module/Console/ModuleInstallCommand.php @@ -0,0 +1,92 @@ +migrator = $migrator; + } + + /** + * Execute the console command. + * + * @return void + */ + public function handle() + { + $identifier = strtolower($this->getIdentifierInput()); + + /** @var $module \AvoRed\Framework\Module\ModuleItem */ + $module = Module::get($identifier); + $provider = $module->namespace().'Module'; + $this->call('vendor:publish', ['--provider' => $provider]); + $path = $module->basePath().DIRECTORY_SEPARATOR.'database/migrations'; + $this->migrator->run($path); + + $this->info('Module:'.$module->name().' has been installed successfully.'); + } + + /** + * Write the Markdown template for the mailable. + * + * @return void + */ + protected function createRequiredDirectories($path) + { + if (! $this->files->isDirectory(dirname($path))) { + $this->files->makeDirectory(dirname($path), 0755, true); + } + } + + /** + * Get the desired name of the module from the input. + * + * @return string + */ + protected function getIdentifierInput() + { + return trim($this->argument('identifier')); + } +} diff --git a/src/Module/Console/ModuleMakeCommand.php b/src/Module/Console/ModuleMakeCommand.php new file mode 100644 index 000000000..5e7fd40c0 --- /dev/null +++ b/src/Module/Console/ModuleMakeCommand.php @@ -0,0 +1,191 @@ +files = $files; + } + + /** + * Execute the console command. + * + * @return void + */ + public function handle() + { + $vendor = strtolower($this->getVendorInput()); + $name = strtolower($this->getNameInput()); + + $stubFiles = ['register', 'module']; + + foreach ($stubFiles as $stubFile) { + $methodName = 'get'.ucfirst($stubFile).'Path'; + + $path = $this->$methodName($vendor, $name); + $this->createRequiredDirectories($path); + + $buildMethodName = 'build'.ucfirst($stubFile).'File'; + $this->files->put($path, $this->$buildMethodName()); + } + + $this->info($this->type.' created successfully.'); + } + + /** + * Write the Markdown template for the mailable. + * + * @return void + */ + protected function createRequiredDirectories($path) + { + if (! $this->files->isDirectory(dirname($path))) { + $this->files->makeDirectory(dirname($path), 0755, true); + } + } + + protected function getRegisterPath($vendor, $name) + { + return base_path('modules/'.$vendor.'/'.$name.'/register.yml'); + } + + protected function getModulePath($vendor, $name) + { + return base_path('modules/'.$vendor.'/'.$name.'/src/Module.php'); + } + + /** + * Build the class with the given name. + * + * @return string + */ + protected function buildRegisterFile() + { + $stubFiles = $this->getStub('register'); + + $stub = $this->files->get($stubFiles); + $this->replaceNamespace($stub); + + return $stub; + } + + /** + * Build the class with the given name. + * + * @param string $name + * @return string + */ + protected function buildModuleFile() + { + $stubFiles = $this->getStub('module'); + + $stub = $this->files->get($stubFiles); + + $this->replaceNamespace($stub); + + return $stub; + } + + /** + * Get the stub file for the generator. + * + * @return string + */ + protected function getStub($stubName) + { + return __DIR__."/stubs/{$stubName}.stub"; + } + + /** + * Replace the namespace for the given stub. + * + * @param string $stub + * @param string $name + * @return $this + */ + protected function replaceNamespace(&$stub) + { + $stub = str_replace( + ['DummyVendor', 'DummyName', 'DummyLowerVendor', 'DummyLowerName'], + [$this->getVendorInput(), $this->getNameInput(), strtolower($this->getVendorInput()), strtolower($this->getNameInput())], + $stub + ); + + return $this; + } + + /** + * Get the desired name of the module from the input. + * + * @return string + */ + protected function getNameInput() + { + return trim($this->argument('name')); + } + + /** + * Get the desired vendor name from the input. + * + * @return string + */ + protected function getVendorInput() + { + return trim($this->argument('vendor')); + } + + /** + * Get the console command arguments. + * + * @return array + */ + protected function getArguments() + { + return [ + ['vendor', InputArgument::REQUIRED, 'The name of the vendor or company name'], + ['name', InputArgument::REQUIRED, 'The name of the module'], + ]; + } +} diff --git a/src/Module/Console/Provider.php b/src/Module/Console/Provider.php new file mode 100644 index 000000000..751233389 --- /dev/null +++ b/src/Module/Console/Provider.php @@ -0,0 +1,94 @@ +registerCommands(); + } + + protected function registerCommands() + { + foreach ($this->commandName as $commandName) { + $methodName = 'register'.implode(array_map('ucfirst', explode('.', $commandName))); + $this->$methodName(); + + $this->commands[] = 'command.'.$commandName; + } + + $this->commands($this->commands); + } + + /** + * Register the Avored Module Make . + * + * @return void + */ + protected function registerAvoredModuleMake() + { + $this->app->singleton('command.avored.module.make', function ($app) { + return new ModuleMakeCommand($app['files']); + }); + } + + /** + * Register the Avored Module Install . + * + * @return void + */ + protected function registerAvoredModuleInstall() + { + $this->app->singleton('command.avored.module.install', function ($app) { + return new ModuleInstallCommand($app['migrator']); + }); + } + + /** + * Register Avored Module Controller Make Command. + * + * @return void + */ + protected function registerAvoredControllerMake() + { + $this->app->singleton('command.avored.controller.make', function ($app) { + return new ControllerMakeCommand($app['files']); + }); + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + return $this->commands; + } +} diff --git a/src/Module/Console/stubs/controller.stub b/src/Module/Console/stubs/controller.stub new file mode 100644 index 000000000..0d8263940 --- /dev/null +++ b/src/Module/Console/stubs/controller.stub @@ -0,0 +1,11 @@ +registerResources(); + } + + /** + * Register any application services. + * + * @return void + */ + public function register() + { + + } + + /** + * Registering DummyVendor DummyName Resource + * e.g. Route, View, Database & Translation Path + * + * @return void + */ + protected function registerResources() + { + //$this->loadRoutesFrom(__DIR__ . '/../routes/web.php'); + //$this->loadTranslationsFrom(__DIR__ . '/../resources/lang', 'DummyLowerVendor-DummyLowerName'); + //$this->loadViewsFrom(__DIR__ . '/../resources/views', 'DummyLowerVendor-DummyLowerName'); + } +} \ No newline at end of file diff --git a/src/Module/Console/stubs/register.stub b/src/Module/Console/stubs/register.stub new file mode 100644 index 000000000..248c982e5 --- /dev/null +++ b/src/Module/Console/stubs/register.stub @@ -0,0 +1,5 @@ +name: DummyVendor DummyName +identifier: DummyLowerVendor-DummyLowerName +status: active +description: DummyVendor DummyName Module +namespace: DummyVendor\DummyName\ \ No newline at end of file diff --git a/src/Module/Manager.php b/src/Module/Manager.php new file mode 100644 index 000000000..c6516ef96 --- /dev/null +++ b/src/Module/Manager.php @@ -0,0 +1,239 @@ +files = $files; + $this->moduleList = Collection::make([]); + } + + /** + * Get all the moduleList Collection. + * @return \Illuminate\Support\Collection $moduleList + */ + public function all() + { + if ($this->moduleLoaded === false) { + $this->loadModules(); + } + + return $this->moduleList; + } + + /** + * Scan Module Path and load into a moduleList Collection. + * @return self $this + */ + protected function loadModules() + { + $modulePath = base_path('modules'); + + if (File::exists($modulePath)) { + /** @var \RecursiveIteratorIterator $iterator */ + $iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($modulePath, RecursiveDirectoryIterator::FOLLOW_SYMLINKS) + ); + + $iterator->setMaxDepth(2); + $iterator->rewind(); + + while ($iterator->valid()) { + if (($iterator->getDepth() > 1) && + $iterator->isFile() && + ($iterator->getFilename() == 'register.yml')) { + $filePath = $iterator->getPathname(); + $moduleRegisterContent = File::get($filePath); + $data = Yaml::parse($moduleRegisterContent); + + $module = new ModuleItem(); + $module->namespace($data['namespace']); + $module->identifier($data['identifier']); + $module->name($data['name']); + $module->status($data['status']); + $module->description($data['description']); + $module->basePath($iterator->getPath()); + $module->publishedTags($data['published_tags'] ?? []); + + // read and store dependency declaration + $dependencies = empty($data['dependencies']) ? [] : explode(',', str_replace(' ', '', $data['dependencies'])); + $module->dependencies($dependencies); + + $this->moduleList->put($module->identifier(), $module); + } + $iterator->next(); + } + // Sort modules based on its declared dependency + $this->moduleList = $this->sortByDependency($this->moduleList); + + $this->moduleList->each(function ($module) { + $composerLoader = require base_path('vendor/autoload.php'); + if (strtolower($module->status()) == 'active') { + $path = $module->basePath() . DIRECTORY_SEPARATOR . 'src'; + $composerLoader->addPsr4($module->namespace(), $path); + $moduleProvider = $module->namespace() . 'Module'; + App::register($moduleProvider); + } + }); + + $this->moduleLoaded = true; + } + + return $this; + } + + /** + * Sort module based on their dependency declarations + * @return \Illuminate\Support\Collection + */ + public function sortByDependency(Collection $moduleList) + { + $modules = $moduleList->sort(function ($moduleA, $moduleB) { + if (count($moduleA->dependencies()) === 0 && count($moduleA->dependencies()) === 0) { + return 0; + } + + if (in_array($moduleA->identifier(), $moduleB->dependencies())) { + return -1; + } else { + return 1; + } + }); + return $modules; + } + + /** + * Put Module Info to a collection + * @param string $identifier + * @param array $moduleInfo + * @return self $this + */ + public function put($identifier, $moduleInfo) + { + $this->moduleList->put($identifier, $moduleInfo); + + return $this; + } + + /** + * Get Module by identifier. + * @param string $identifier + * @return \AvoRed\Framework\Modules\Module $module + */ + public function get($identifier) + { + if ($this->moduleLoaded === false) { + $this->loadModules(); + } + + return $this->moduleList->get($identifier); + } + + /** + * Get Module by Path. + * @param string $path + * @return \AvoRed\Framework\Modules\Module $module + */ + public function getByPath($path) + { + foreach ($this->moduleList as $module => $moduleInfo) { + $path1 = $this->pathSlashFix($path); + $path2 = $this->pathSlashFix($moduleInfo['path']); + + if ($path1 == $path2) { + $actualModule = $this->moduleList[$module]; + break; + } + } + + return $actualModule; + } + + /** + * Publish an item to given path from passed path. + * @param string $from + * @param string $to + * @return mixed + */ + public function publishItem($from, $to) + { + if ($this->files->isDirectory($from)) { + $this->publishDirectory($from, $to); + } + + throw new \Exception("Can't locate path: <{$from}>"); + } + + /** + * Publish the directory to the given directory. + * @param string $from + * @param string $to + * @return void + */ + protected function publishDirectory($from, $to) + { + $this->moveManagedFiles(new MountManager([ + 'from' => new Flysystem(new LocalAdapter($from)), + 'to' => new Flysystem(new LocalAdapter($to)), + ])); + } + + /** + * Move all the files in the given MountManager. + * @param \League\Flysystem\MountManager $manager + * @return void + */ + protected function moveManagedFiles($manager) + { + foreach ($manager->listContents('from://', true) as $file) { + if ($file['type'] === 'file' && (! $manager->has('to://'.$file['path']))) { + $manager->put('to://'.$file['path'], $manager->read('from://'.$file['path'])); + } + } + } + + /** + * Slash the given path. + * @param string $path + * @return string $slashPath + */ + protected function pathSlashFix($path) + { + return (DIRECTORY_SEPARATOR === '\\') ? str_replace('/', '\\', $path) : str_replace('\\', '/', $path); + } +} diff --git a/src/Module/Module.php b/src/Module/Module.php new file mode 100644 index 000000000..6b7159a29 --- /dev/null +++ b/src/Module/Module.php @@ -0,0 +1,21 @@ +identifier; + } + + $this->identifier = $identifier; + + return $this; + } + + /** + * Get/Set the Name for the Module. + * @param string $name + * @return string|self + */ + public function name($name = null) + { + if (null === $name) { + return $this->name; + } + + $this->name = $name; + + return $this; + } + + /** + * Get/Set the Description for the Module. + * @param string $description + * @return string|self + */ + public function description($description = null) + { + if (null === $description) { + return $this->description; + } + + $this->description = $description; + + return $this; + } + + /** + * Get/Set the Status for the Module. + * @param string $identifier + * @return string|self + */ + public function status($status = null) + { + if (null === $status) { + return $this->status; + } + + $this->status = $status; + + return $this; + } + + /** + * Get/Set the NameSpace for the Module. + * @param string $namespace + * @return string|self + */ + public function namespace($namespace = null) + { + if (null === $namespace) { + return $this->namespace; + } + + $this->namespace = $namespace; + + return $this; + } + + /** + * Get/Set the BasePath for the Module. + * @param string $basePath + * @return string|self + */ + public function basePath($basePath = null) + { + if (null === $basePath) { + return $this->basePath; + } + + $this->basePath = $basePath; + + return $this; + } + + /** + * Get/Set the Published Tags for the Module. + * @param array $publishedTags + * @return string|self + */ + public function publishedTags($publishedTags = []) + { + if (count($publishedTags) <= 0) { + return $this->publishedTags; + } + + $this->publishedTags = $publishedTags; + + return $this; + } + + /** + * Get/Set the Dependencies for the Module + * @param array $dependencies + * @return string|self + */ + public function dependencies($dependencies = []) + { + if (count($dependencies) <= 0) { + return $this->dependencies; + } + + $this->dependencies = $dependencies; + return $this; + } + + /** + * To check If method Exist then it will execute other wise do nothing + * + * @param string $name + * @return mixed + */ + public function __get($name) + { + if (method_exists($this, $name)) { + return $this->$name(); + } + } +} diff --git a/src/Module/ModuleProvider.php b/src/Module/ModuleProvider.php new file mode 100644 index 000000000..c18d7bb58 --- /dev/null +++ b/src/Module/ModuleProvider.php @@ -0,0 +1,70 @@ +registerModuleConsoleProvider(); + $this->registerModule(); + $this->app->alias('module', Manager::class); + } + + /** + * Register the AdmainConfiguration instance. + * + * @return void + */ + protected function registerModule() + { + $this->app->singleton( + 'module', + function ($app) { + return new Manager($app['files']); + } + ); + } + + /* + * Register Module console Command which Register most Module generation Command + * + * @return void + */ + public function registerModuleConsoleProvider() + { + $this->app->register(Provider::class); + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + return ['module', Manager::class]; + } +} diff --git a/src/Order/Controllers/OrderController.php b/src/Order/Controllers/OrderController.php new file mode 100644 index 000000000..ed41bdfd0 --- /dev/null +++ b/src/Order/Controllers/OrderController.php @@ -0,0 +1,36 @@ +orderRepository = $repository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + $orderes = $this->orderRepository->paginate(); + + return view('avored::order.order.index') + ->with('orders', $orderes); + } +} diff --git a/src/Order/Controllers/OrderStatusController.php b/src/Order/Controllers/OrderStatusController.php new file mode 100644 index 000000000..3e06a1a67 --- /dev/null +++ b/src/Order/Controllers/OrderStatusController.php @@ -0,0 +1,117 @@ +orderStatusRepository = $repository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + $orderStatuses = $this->orderStatusRepository->paginate(); + + return view('avored::order.order-status.index') + ->with('orderStatuses', $orderStatuses); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $tabs = Tab::get('order.order-status'); + + return view('avored::order.order-status.create') + ->with('tabs', $tabs); + } + + /** + * Store a newly created resource in storage. + * + * @param OrderStatusRequest $request + * @return \Illuminate\Http\Response + */ + public function store(OrderStatusRequest $request) + { + if ($request->has('is_default')) { + $this->orderStatusRepository->updateDefaultOrderStatusToNull(); + } + $this->orderStatusRepository->create($request->all()); + + return redirect(route('admin.order-status.index')); + } + + /** + * Show the form for editing the specified resource. + * + * @param OrderStatus $orderStatus + * @return \Illuminate\Http\Response + */ + public function edit(OrderStatus $orderStatus) + { + $tabs = Tab::get('order.order-status'); + + return view('avored::order.order-status.edit') + ->with('orderStatus', $orderStatus) + ->with('tabs', $tabs); + } + + /** + * Update the specified resource in storage. + * + * @param OrderStatusRequest $request + * @param OrderStatus $orderStatus + * @return \Illuminate\Http\Response + */ + public function update(OrderStatusRequest $request, OrderStatus $orderStatus) + { + if ($request->has('is_default')) { + $this->orderStatusRepository->updateDefaultOrderStatusToNull(); + } + $orderStatus->update($request->all()); + + return redirect(route('admin.order-status.index')); + } + + /** + * Remove the specified resource from storage. + * + * @param OrderStatus $orderStatus + * @return \Illuminate\Http\Response + */ + public function destroy(OrderStatus $orderStatus) + { + $orderStatus->delete(); + + return new JsonResponse([ + 'success' => true, + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.order-status')]) + ]); + } +} diff --git a/src/Order/Events/OrderProductCreated.php b/src/Order/Events/OrderProductCreated.php new file mode 100644 index 000000000..a92f1b119 --- /dev/null +++ b/src/Order/Events/OrderProductCreated.php @@ -0,0 +1,26 @@ +orderProduct = $orderProduct; + } +} diff --git a/src/Order/Listeners/OrderProductCreatedListener.php b/src/Order/Listeners/OrderProductCreatedListener.php new file mode 100644 index 000000000..b3c4a6504 --- /dev/null +++ b/src/Order/Listeners/OrderProductCreatedListener.php @@ -0,0 +1,28 @@ +orderProduct; + $product = $orderProduct->product; + + if ($product->track_stock) { + $product->qty -= $orderProduct->qty; + } + $product->save(); + } +} diff --git a/src/Order/Requests/OrderStatusRequest.php b/src/Order/Requests/OrderStatusRequest.php new file mode 100644 index 000000000..58c1b7e12 --- /dev/null +++ b/src/Order/Requests/OrderStatusRequest.php @@ -0,0 +1,31 @@ +collection = Collection::make([]); + } + + /** + * Get all the Payment Options Collection. + * @return \Illuminate\Support\Collection + */ + public function all(): Collection + { + return $this->collection; + } + + /** + * Put Payment class to an collection Collection. + * @return void + */ + public function put($payment) + { + $this->collection->put($payment->identifier(), $payment); + } + + /** + * Put Payment class to an collection Collection. + * @return void + */ + public function get($identifier) + { + return $this->collection->get($identifier); + } +} diff --git a/src/Payment/PaymentProvider.php b/src/Payment/PaymentProvider.php new file mode 100644 index 000000000..f457d1be3 --- /dev/null +++ b/src/Payment/PaymentProvider.php @@ -0,0 +1,37 @@ +registerPayment(); + } + + /** + * Register the service provider. + * @return void + */ + public function register() + { + $this->app->singleton('payment', PaymentManager::class); + } + + /** + * Get the services provided by the provider. + * @return array + */ + public function provides() + { + return ['payment', PaymentManager::class]; + } +} diff --git a/src/Permission/Manager.php b/src/Permission/Manager.php new file mode 100644 index 000000000..f5f053a13 --- /dev/null +++ b/src/Permission/Manager.php @@ -0,0 +1,77 @@ +permissions = Collection::make([]); + } + + /** + * Get all Permission Collection. + * @return \Illuminate\Support\Collection + */ + public function all() + { + return $this->permissions; + } + + /** + * Add Permission into Collection. + * @param string $key + * @param callable $callable + * @return \AvoRed\Framework\Permission\Manager + */ + public function add($key, $callable = null) + { + if (null !== $callable) { + $group = new PermissionGroup($callable); + $group->key($key); + + $this->permissions->put($key, $group); + } else { + $group = new PermissionGroup(); + + $group->key($key); + $this->permissions->put($key, $group); + } + + return $group; + } + + /** + * Get Permission Collection if exists or Return Empty Collection. + * @param array $item + * @return \Illuminate\Support\Collection + */ + public function get($key) + { + if ($this->permissions->has($key)) { + return $this->permissions->get($key); + } + + return Collection::make([]); + } + + /** + * Get Permission Collection if exists or Return Empty Collection. + * @param array $item + * @return \Illuminate\Support\Collection + */ + public function set($key, $permissionCollection) + { + $this->permissions->put($key, $permissionCollection); + + return $this; + } +} diff --git a/src/Permission/Permission.php b/src/Permission/Permission.php new file mode 100644 index 000000000..5d76e40d3 --- /dev/null +++ b/src/Permission/Permission.php @@ -0,0 +1,18 @@ +permissionList = Collection::make([]); + if (null !== $callable) { + $callable($this); + } + } + + /** + * Specify a label for permission group. + * + * @param string $label + * @return mixed $this|$label + */ + public function label($label = null) + { + if (null !== $label) { + $this->label = $label; + + return $this; + } + + if (Lang::has($this->label)) { + return __($this->label); + } + + return $this->label; + } + + /** + * Add an Unique key to a group of permission. + * @param string $key + * @return mixed $key|$this + */ + public function key($key = null) + { + if (null !== $key) { + $this->key = $key; + + return $this; + } + + return $this->key; + } + + /** + * Add Permission to a group. + * @param string $key + * @param callable $callable + * @return \AvoRed\Framework\Permission\Permission $permission + */ + public function addPermission($key, $callable = null) + { + if (null !== $callable) { + $permission = new PermissionItem($callable); + $permission->key($key); + + $this->permissionList->put($key, $permission); + } else { + $permission = new PermissionItem(); + + $permission->key($key); + $this->permissionList->put($key, $permission); + } + + return $permission; + } +} diff --git a/src/Permission/PermissionInterface.php b/src/Permission/PermissionInterface.php new file mode 100644 index 000000000..f4f4f6475 --- /dev/null +++ b/src/Permission/PermissionInterface.php @@ -0,0 +1,27 @@ +label = $label; + + return $this; + } + + if (Lang::has($this->label)) { + return __($this->label); + } + + return $this->label; + } + + /** + * Set/Get key for permission. + * @param string $key + * @return mixed $key|$this + */ + public function key($key = null) + { + if (null !== $key) { + $this->key = $key; + + return $this; + } + + return $this->key; + } + + /** + * Set/Get routes for permission. + * @param string $routes + * @return mixed $routes|$this + */ + public function routes($routes = null) + { + if (null !== $routes) { + $this->routes = $routes; + + return $this; + } + + return $this->routes; + } +} diff --git a/src/Permission/PermissionProvider.php b/src/Permission/PermissionProvider.php new file mode 100644 index 000000000..cab6a6063 --- /dev/null +++ b/src/Permission/PermissionProvider.php @@ -0,0 +1,689 @@ +registerPermissions(); + } + + /** + * Register the service provider. + * @return void + */ + public function register() + { + $this->registerManager(); + $this->app->singleton('permission', 'AvoRed\Framework\Permission\Manager'); + } + + /** + * Register the permission Manager Instance. + * @return void + */ + protected function registerManager() + { + $this->app->singleton( + 'permission', + function () { + new Manager(); + } + ); + } + + /** + * Get the services provided by the provider. + * @return array + */ + public function provides() + { + return ['permission', 'AvoRed\Framework\Permission\Manager']; + } + + /** + * Register the permissions. + * @return void + */ + protected function registerPermissions() + { + $group = Permission::add( + 'dashboard', + function (PermissionGroup $group) { + $group->label('avored::system.dashboard'); + } + ); + $group->addPermission( + 'admin-dashboard', + function (PermissionItem $permission) { + $permission->label('avored::system.dashboard') + ->routes('admin.dashboard'); + } + ); + + // $configGroup = Permission::add( + // 'configuration', + // function (PermissionGroup $group) { + // $group->label('avored::system.permissions.configuration.title'); + // } + // ); + + // $configGroup->addPermission( + // 'admin-configuration-index', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.configuration.view') + // ->routes('admin.configuration.index'); + // } + // ); + // $configGroup->addPermission( + // 'admin-configuration-save', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.configuration.edit') + // ->routes('admin.configuration.store'); + // } + // ); + + $productGroup = Permission::add( + 'product', + function (PermissionGroup $group) { + $group->label('avored::system.product'); + } + ); + + $productGroup->addPermission( + 'admin-product-index', + function (PermissionItem $permission) { + $permission->label('avored::system.list') + ->routes('admin.product.index'); + } + ); + $productGroup->addPermission( + 'admin-product-create', + function (PermissionItem $permission) { + $permission->label('avored::system.create') + ->routes('admin.product.create,admin.product.store'); + } + ); + $productGroup->addPermission( + 'admin-product-edit', + function (PermissionItem $permission) { + $permission->label('avored::system.edit') + ->routes('admin.product.edit,admin.product.update'); + } + ); + $productGroup->addPermission( + 'admin-product-destroy', + function (PermissionItem $permission) { + $permission->label('avored::system.destroy') + ->routes('admin.product.edit,admin.product.destroy'); + } + ); + + $orderGroup = Permission::add( + 'order', + function (PermissionGroup $group) { + $group->label('avored::system.order'); + } + ); + $orderGroup->addPermission( + 'admin-order-list', + function (PermissionItem $permission) { + $permission->label('avored::system.list') + ->routes('admin.order.index'); + } + ); + // $orderGroup->addPermission( + // 'admin-order-change-status', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.order.change-status') + // ->routes('admin.order.change-status'); + // } + // ); + // $orderGroup->addPermission( + // 'admin-order-sent-invoice-by-mail', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.order.sent-invoice-by-mail') + // ->routes('admin.order.email.invoice'); + // } + // ); + // $orderGroup->addPermission( + // 'admin-order-shipping-label', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.order.shipping-label') + // ->routes('admin.order.shipping.label'); + // } + // ); + // $orderGroup->addPermission( + // 'admin-download-invoice', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.order.download-invoice') + // ->routes('admin.order.download.invoice'); + // } + // ); + // $orderGroup->addPermission( + // 'admin-save=tracking-code', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.order.save-tracking-code') + // ->routes('admin.order.save.track.code'); + // } + // ); + // $orderGroup->addPermission( + // 'admin-order-view', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.order.view') + // ->routes('admin.order.create,admin.order.view'); + // } + // ); + + $group = Permission::add( + 'category', + function (PermissionGroup $group) { + $group->label('avored::system.category'); + } + ); + $group->addPermission( + 'admin-category-list', + function (PermissionItem $permission) { + $permission->label('avored::system.list') + ->routes('admin.category.index'); + } + ); + $group->addPermission( + 'admin-category-create', + function (PermissionItem $permission) { + $permission->label('avored::system.create') + ->routes('admin.category.create,admin.category.store'); + } + ); + $group->addPermission( + 'admin-category-update', + function (PermissionItem $permission) { + $permission->label('avored::system.edit') + ->routes('admin.category.edit,admin.category.update'); + } + ); + $group->addPermission( + 'admin-category-destroy', + function (PermissionItem $permission) { + $permission->label('avored::system.destroy') + ->routes('admin.category.destroy'); + } + ); + + // $group = Permission::add( + // 'language', + // function (PermissionGroup $group) { + // $group->label('avored::system.permissions.language.title'); + // } + // ); + // $group->addPermission( + // 'admin-language-list', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.language.list') + // ->routes('admin.language.index'); + // } + // ); + // $group->addPermission( + // 'admin-language-create', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.language.create') + // ->routes('admin.language.create,admin.language.store'); + // } + // ); + // $group->addPermission( + // 'admin-language-update', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.language.edit') + // ->routes('admin.language.edit,admin.language.update'); + // } + // ); + // $group->addPermission( + // 'admin-language-destroy', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.language.destroy') + // ->routes('admin.language.destroy'); + // } + // ); + $group = Permission::add( + 'admin-user', + function (PermissionGroup $group) { + $group->label('avored::system.staff'); + } + ); + $group->addPermission( + 'admin-admin-user-list', + function (PermissionItem $permission) { + $permission->label('avored::system.list') + ->routes('admin.admin-user.index'); + } + ); + $group->addPermission( + 'admin-admin-user-create', + function (PermissionItem $permission) { + $permission->label('avored::system.create') + ->routes('admin.admin-user.create,admin.admin-user.store'); + } + ); + $group->addPermission( + 'admin-admin-user-update', + function (PermissionItem $permission) { + $permission->label('avored::system.edit') + ->routes('admin.admin-user.edit,admin.admin-user.update'); + } + ); + $group->addPermission( + 'admin-admin-user-destroy', + function (PermissionItem $permission) { + $permission->label('avored::system.destroy') + ->routes('admin.admin-user.destroy'); + } + ); + + $group = Permission::add( + 'subscriber', + function (PermissionGroup $group) { + $group->label('avored::system.subscriber'); + } + ); + $group->addPermission( + 'admin-subscriber-list', + function (PermissionItem $permission) { + $permission->label('avored::system.list') + ->routes('admin.subscriber.index'); + } + ); + $group->addPermission( + 'admin-subscriber-create', + function (PermissionItem $permission) { + $permission->label('avored::system.create') + ->routes('admin.subscriber.create,admin.subscriber.store'); + } + ); + $group->addPermission( + 'admin-subscriber-update', + function (PermissionItem $permission) { + $permission->label('avored::system.edit') + ->routes('admin.subscriber.edit,admin.subscriber.update'); + } + ); + $group->addPermission( + 'admin-subscriber-destroy', + function (PermissionItem $permission) { + $permission->label('avored::system.destroy') + ->routes('admin.subscriber.destroy'); + } + ); + // $group = Permission::add( + // 'currency', + // function (PermissionGroup $group) { + // $group->label('avored::system.permissions.currency.title'); + // } + // ); + // $group->addPermission( + // 'admin-currency-list', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.currency.list') + // ->routes('admin.currency.index'); + // } + // ); + // $group->addPermission( + // 'admin-currency-create', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.currency.create') + // ->routes('admin.currency.create,admin.currency.store'); + // } + // ); + // $group->addPermission( + // 'admin-currency-update', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.currency.edit') + // ->routes('admin.currency.edit,admin.currency.update'); + // } + // ); + // $group->addPermission( + // 'admin-currency-destroy', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.currency.destroy') + // ->routes('admin.currency.destroy'); + // } + // ); + $group = Permission::add( + 'order-status', + function (PermissionGroup $group) { + $group->label('avored::system.order-status'); + } + ); + $group->addPermission( + 'admin-order-status-list', + function (PermissionItem $permission) { + $permission->label('avored::system.list') + ->routes('admin.order-status.index'); + } + ); + $group->addPermission( + 'admin-order-status-create', + function (PermissionItem $permission) { + $permission->label('avored::system.create') + ->routes('admin.order-status.create,admin.order-status.store'); + } + ); + $group->addPermission( + 'admin-order-status-update', + function (PermissionItem $permission) { + $permission->label('avored::system.edit') + ->routes('admin.order-status.edit,admin.order-status.update'); + } + ); + $group->addPermission( + 'admin-order-status-destroy', + function (PermissionItem $permission) { + $permission->label('avored::system.destroy') + ->routes('admin.order-status.destroy'); + } + ); + + $group = Permission::add( + 'page', + function (PermissionGroup $group) { + $group->label('avored::system.page'); + } + ); + $group->addPermission( + 'admin-page-list', + function (PermissionItem $permission) { + $permission->label('avored::system.list') + ->routes('admin.page.index'); + } + ); + $group->addPermission( + 'admin-page-create', + function (PermissionItem $permission) { + $permission->label('avored::system.create') + ->routes('admin.page.create,admin.page.store'); + } + ); + $group->addPermission( + 'admin-page-update', + function (PermissionItem $permission) { + $permission->label('avored::system.edit') + ->routes('admin.page.edit,admin.page.update'); + } + ); + $group->addPermission( + 'admin-page-destroy', + function (PermissionItem $permission) { + $permission->label('avored::system.destroy') + ->routes('admin.page.destroy'); + } + ); + + $group = Permission::add( + 'role', + function (PermissionGroup $group) { + $group->label('avored::system.role'); + } + ); + + $group->addPermission( + 'admin-role-list', + function (PermissionItem $permission) { + $permission->label('avored::system.list') + ->routes('admin.role.index'); + } + ); + $group->addPermission( + 'admin-role-create', + function (PermissionItem $permission) { + $permission->label('avored::system.create') + ->routes('admin.role.create,admin.role.store'); + } + ); + $group->addPermission( + 'admin-role-update', + function (PermissionItem $permission) { + $permission->label('avored::system.edit') + ->routes('admin.role.edit,admin.role.update'); + } + ); + $group->addPermission( + 'admin-role-destroy', + function (PermissionItem $permission) { + $permission->label('avored::system.destroy') + ->routes('admin.role.destroy'); + } + ); + + // $group = Permission::add( + // 'state', + // function (PermissionGroup $group) { + // $group->label('avored::system.permissions.state.title'); + // } + // ); + + // $group->addPermission( + // 'admin-state-list', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.state.list') + // ->routes('admin.state.index'); + // } + // ); + // $group->addPermission( + // 'admin-state-create', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.state.create') + // ->routes('admin.state.create,admin.state.store'); + // } + // ); + // $group->addPermission( + // 'admin-state-update', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.state.edit') + // ->routes('admin.state.edit,admin.state.update'); + // } + // ); + // $group->addPermission( + // 'admin-state-destroy', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.state.destroy') + // ->routes('admin.state.destroy'); + // } + // ); + + $group = Permission::add( + 'property', + function (PermissionGroup $group) { + $group->label('avored::system.property'); + } + ); + + $group->addPermission( + 'admin-property-list', + function (PermissionItem $permission) { + $permission->label('avored::system.list') + ->routes('admin.property.index'); + } + ); + $group->addPermission( + 'admin-property-create', + function (PermissionItem $permission) { + $permission->label('avored::system.create') + ->routes('admin.property.create,admin.property.store'); + } + ); + $group->addPermission( + 'admin-property-update', + function (PermissionItem $permission) { + $permission->label('avored::system.edit') + ->routes('admin.property.edit,admin.property.update'); + } + ); + $group->addPermission( + 'admin-property-destroy', + function (PermissionItem $permission) { + $permission->label('avored::system.destroy') + ->routes('admin.property.destroy'); + } + ); + + $group = Permission::add( + 'attribute', + function (PermissionGroup $group) { + $group->label('avored::system.attribute'); + } + ); + + $group->addPermission( + 'admin-attribute-list', + function (PermissionItem $permission) { + $permission->label('avored::system.list') + ->routes('admin.attribute.index'); + } + ); + $group->addPermission( + 'admin-attribute-create', + function (PermissionItem $permission) { + $permission->label('avored::system.create') + ->routes('admin.attribute.create,admin.attribute.store'); + } + ); + $group->addPermission( + 'admin-attribute-update', + function (PermissionItem $permission) { + $permission->label('avored::system.edit') + ->routes('admin.attribute.edit,admin.attribute.update'); + } + ); + $group->addPermission( + 'admin-attribute-destroy', + function (PermissionItem $permission) { + $permission->label('avored::system.destroy') + ->routes('admin.attribute.destroy'); + } + ); + // $group = Permission::add( + // 'user-group', + // function (PermissionGroup $group) { + // $group->label('avored::system.permissions.user-group.title'); + // } + // ); + + // $group->addPermission( + // 'admin-user-group-list', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.user-group.list') + // ->routes('admin.user-group.index'); + // } + // ); + // $group->addPermission( + // 'admin-user-group-create', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.user-group.create') + // ->routes('admin.user-group.create,admin.user-group.store'); + // } + // ); + // $group->addPermission( + // 'admin-user-group-update', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.user-group.edit') + // ->routes('admin.user-group.edit,admin.user-group.update'); + // } + // ); + // $group->addPermission( + // 'admin-user-group-destroy', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.user-group.destroy') + // ->routes('admin.user-group.destroy'); + // } + // ); + // $group = Permission::add( + // 'tax-group', + // function (PermissionGroup $group) { + // $group->label('avored::system.permissions.tax-group.title'); + // } + // ); + + // $group->addPermission( + // 'admin-tax-group-list', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.tax-group.list') + // ->routes('admin.tax-group.index'); + // } + // ); + // $group->addPermission( + // 'admin-tax-group-create', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.tax-group.create') + // ->routes('admin.tax-group.create,admin.tax-group.store'); + // } + // ); + // $group->addPermission( + // 'admin-tax-group-update', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.tax-group.edit') + // ->routes('admin.tax-group.edit,admin.tax-group.update'); + // } + // ); + // $group->addPermission( + // 'admin-tax-group-destroy', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.tax-group.destroy') + // ->routes('admin.user-group.destroy'); + // } + // ); + // $group = Permission::add( + // 'permission-code', + // function (PermissionGroup $group) { + // $group->label('avored::system.permissions.promotion-code.title'); + // } + // ); + + // $group->addPermission( + // 'admin-promotion-code-table', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.promotion-code.table') + // ->routes('admin.promotion.code.table'); + // } + // ); + // $group->addPermission( + // 'admin-promotion-code-edit', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.promotion-code.edit') + // ->routes('admin.promotion.code.edit,admin.promotion.code.save'); + // } + // ); + // $group->addPermission( + // 'admin-promotion-code-destroy', + // function (PermissionItem $permission) { + // $permission->label('avored::system.permissions.promotion-code.destroy') + // ->routes('admin.promotion.code.destroy'); + // } + // ); + + + Blade::if( + 'hasPermission', + function ($routeName) { + $condition = false; + /** @var \AvoRed\Framework\Database\Models\AdminUser $user */ + $user = Auth::guard('admin')->user(); + if (! $user) { + $condition = $user->hasPermission($routeName) ?: false; + } + $converted_res = ($condition) ? 'true' : 'false'; + + return ""; + } + ); + } +} diff --git a/src/Shipping/Manager.php b/src/Shipping/Manager.php new file mode 100644 index 000000000..9ae656546 --- /dev/null +++ b/src/Shipping/Manager.php @@ -0,0 +1,40 @@ +collection = Collection::make([]); + } + + /** + * Get all the Shipping Options Collection. + * @return \Illuminate\Support\Collection + */ + public function all(): Collection + { + return $this->collection; + } + + /** + * Put Shipping class to an collection Collection. + * @return void + */ + public function put($shipping) + { + $this->collection->push($shipping); + } +} diff --git a/src/Shipping/Shipping.php b/src/Shipping/Shipping.php new file mode 100644 index 000000000..8efb1623b --- /dev/null +++ b/src/Shipping/Shipping.php @@ -0,0 +1,16 @@ +registerShipping(); + } + + /** + * Register the service provider. + * @return void + */ + public function register() + { + $this->app->singleton('shipping', 'AvoRed\Framework\Shipping\Manager'); + } + + /** + * Get the services provided by the provider. + * @return array + */ + public function provides() + { + return ['shipping', 'AvoRed\Framework\Shipping\Manager']; + } +} diff --git a/src/Support/Middleware/AdminAuth.php b/src/Support/Middleware/AdminAuth.php index 26cf5e17a..76a04469e 100644 --- a/src/Support/Middleware/AdminAuth.php +++ b/src/Support/Middleware/AdminAuth.php @@ -6,9 +6,15 @@ class AdminAuth extends Middleware { + /** + * Get the path the user should be redirected to when they are not authenticated. + * + * @param \Illuminate\Http\Request $request + * @return string + */ protected function redirectTo($request) { - if (! $request->expectsJson()) { + if (!$request->expectsJson()) { return route('admin.login'); } } diff --git a/src/Support/Middleware/Permission.php b/src/Support/Middleware/Permission.php index c6120e074..a3844ae95 100644 --- a/src/Support/Middleware/Permission.php +++ b/src/Support/Middleware/Permission.php @@ -8,6 +8,13 @@ class Permission { + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @return mixed + */ public function handle($request, Closure $next) { /** @var \AvoRed\Framework\Database\Models\AdminUser $user */ diff --git a/src/Support/Middleware/RedirectIfAdminAuth.php b/src/Support/Middleware/RedirectIfAdminAuth.php index fe4c6d417..6fc139d3d 100644 --- a/src/Support/Middleware/RedirectIfAdminAuth.php +++ b/src/Support/Middleware/RedirectIfAdminAuth.php @@ -7,6 +7,14 @@ class RedirectIfAdminAuth { + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @param string|null $guard + * @return mixed + */ public function handle($request, Closure $next, $guard = 'admin') { if (Auth::guard($guard)->check()) { diff --git a/src/Support/Providers/ComponentsProvider.php b/src/Support/Providers/ComponentsProvider.php index 877540cdb..48def3172 100644 --- a/src/Support/Providers/ComponentsProvider.php +++ b/src/Support/Providers/ComponentsProvider.php @@ -2,6 +2,12 @@ namespace AvoRed\Framework\Support\Providers; +use AvoRed\Framework\System\Components\Alert; +use AvoRed\Framework\System\Components\Form\Checkbox; +use AvoRed\Framework\System\Components\Form\Form; +use AvoRed\Framework\System\Components\Form\Input; +use AvoRed\Framework\System\Components\Layout; +use AvoRed\Framework\System\Components\Form\Link; use Illuminate\Support\Facades\Blade; use Illuminate\Support\ServiceProvider; @@ -21,5 +27,18 @@ public function boot() public function registerBlades() { Blade::componentNamespace('AvoRed\\Framework\\System\\Components', 'avored'); + // Blade::component('avored-input', Input::class); + // Blade::component('avored-checkbox', Checkbox::class); + // Blade::component('avored-form', Form::class); + // Blade::component('avored-alert', Alert::class); + // Blade::component('avored-link', Link::class); + // Blade::component('avored-layout-app', Layout::class); + // Blade::component('avored-table', Table::class); + // Blade::component('avored-table-header', TableHeader::class); + // Blade::component('avored-table-row', TableRow::class); + // Blade::component('avored-table-cell', TableCell::class); + + + // Livewire::component('avored-data-table', CategoryTableComponent::class); } } diff --git a/src/Support/Providers/EventsProvider.php b/src/Support/Providers/EventsProvider.php new file mode 100644 index 000000000..750066d1d --- /dev/null +++ b/src/Support/Providers/EventsProvider.php @@ -0,0 +1,32 @@ + [ + OrderProductCreatedListener::class, + ], + ]; + + /** + * Register any events for your application. + * + * @return void + */ + public function boot() + { + parent::boot(); + // $this->registerUserModelObserver(); + } +} diff --git a/src/Support/Providers/GraphqlProvider.php b/src/Support/Providers/GraphqlProvider.php new file mode 100644 index 000000000..6f8f59aa7 --- /dev/null +++ b/src/Support/Providers/GraphqlProvider.php @@ -0,0 +1,50 @@ +registerConfigData(); + $this->registerRebingLaravelGraphQlProvider(); + } + + /** + * Bind The Eloquent Model with their contract. + * + * @return void + */ + protected function registerRebingLaravelGraphQlProvider() + { + App::register(GraphQLServiceProvider::class); + } + + + /** + * Register config data for AvoRed E commerce Framework + * @return void + */ + public function registerConfigData() + { + $avoredConfigData = include __DIR__ . '/../../../config/avored.php'; + $this->app['config']->set('graphql', $avoredConfigData['graphql']); + } +} diff --git a/src/Support/Providers/ModelsProvider.php b/src/Support/Providers/ModelsProvider.php index 94d48fa21..635b4db21 100644 --- a/src/Support/Providers/ModelsProvider.php +++ b/src/Support/Providers/ModelsProvider.php @@ -2,10 +2,40 @@ namespace AvoRed\Framework\Support\Providers; +use AvoRed\Framework\Database\Contracts\AddressModelInterface; use AvoRed\Framework\Database\Contracts\AdminUserModelInterface; +use AvoRed\Framework\Database\Contracts\AttributeModelInterface; +use AvoRed\Framework\Database\Contracts\CartProductModelInterface; +use AvoRed\Framework\Database\Contracts\CategoryModelInterface; +use AvoRed\Framework\Database\Contracts\ConfigurationModelInterface; +use AvoRed\Framework\Database\Contracts\CustomerModelInterface; +use AvoRed\Framework\Database\Contracts\DocumentModelInterface; +use AvoRed\Framework\Database\Contracts\OrderModelInterface; +use AvoRed\Framework\Database\Contracts\OrderProductModelInterface; +use AvoRed\Framework\Database\Contracts\OrderStatusModelInterface; +use AvoRed\Framework\Database\Contracts\PageModelInterface; +use AvoRed\Framework\Database\Contracts\PermissionModelInterface; +use AvoRed\Framework\Database\Contracts\ProductModelInterface; +use AvoRed\Framework\Database\Contracts\PropertyModelInterface; use AvoRed\Framework\Database\Contracts\RoleModelInterface; +use AvoRed\Framework\Database\Contracts\SubscriberModelInterface; +use AvoRed\Framework\Database\Repository\AddressRepository; use AvoRed\Framework\Database\Repository\AdminUserRepository; +use AvoRed\Framework\Database\Repository\AttributeRepository; +use AvoRed\Framework\Database\Repository\CartProductRepository; +use AvoRed\Framework\Database\Repository\CategoryRepository; +use AvoRed\Framework\Database\Repository\ConfigurationRepository; +use AvoRed\Framework\Database\Repository\CustomerRepository; +use AvoRed\Framework\Database\Repository\DocumentRepository; +use AvoRed\Framework\Database\Repository\OrderProductRepository; +use AvoRed\Framework\Database\Repository\OrderRepository; +use AvoRed\Framework\Database\Repository\OrderStatusRepository; +use AvoRed\Framework\Database\Repository\PageRepository; +use AvoRed\Framework\Database\Repository\PermissionRepository; +use AvoRed\Framework\Database\Repository\ProductRepository; +use AvoRed\Framework\Database\Repository\PropertyRepository; use AvoRed\Framework\Database\Repository\RoleRepository; +use AvoRed\Framework\Database\Repository\SubscriberRepository; use Illuminate\Support\ServiceProvider; class ModelsProvider extends ServiceProvider @@ -21,15 +51,40 @@ class ModelsProvider extends ServiceProvider * @var array */ protected $models = [ + AddressModelInterface::class => AddressRepository::class, AdminUserModelInterface::class => AdminUserRepository::class, + AttributeModelInterface::class => AttributeRepository::class, + CategoryModelInterface::class => CategoryRepository::class, + ConfigurationModelInterface::class => ConfigurationRepository::class, + CartProductModelInterface::class => CartProductRepository::class, + CustomerModelInterface::class => CustomerRepository::class, + DocumentModelInterface::class => DocumentRepository::class, + OrderModelInterface::class => OrderRepository::class, + OrderProductModelInterface::class => OrderProductRepository::class, + OrderStatusModelInterface::class => OrderStatusRepository::class, + PageModelInterface::class => PageRepository::class, + ProductModelInterface::class => ProductRepository::class, + PropertyModelInterface::class => PropertyRepository::class, + PermissionModelInterface::class => PermissionRepository::class, RoleModelInterface::class => RoleRepository::class, + SubscriberModelInterface::class => SubscriberRepository::class, ]; + /** + * Register the service provider. + * + * @return void + */ public function register() { $this->registerModelContracts(); } + /** + * Bind The Eloquent Model with their contract. + * + * @return void + */ protected function registerModelContracts() { foreach ($this->models as $interface => $repository) { diff --git a/src/System/Components/Alert.php b/src/System/Components/Alert.php new file mode 100644 index 000000000..ae80bb547 --- /dev/null +++ b/src/System/Components/Alert.php @@ -0,0 +1,47 @@ +message = $message; + $this->type = $type; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View + */ + public function render(): View + { + return view('avored::system.components.form.alert'); + } +} diff --git a/src/System/Components/Form/Checkbox.php b/src/System/Components/Form/Checkbox.php new file mode 100644 index 000000000..4b4feb175 --- /dev/null +++ b/src/System/Components/Form/Checkbox.php @@ -0,0 +1,66 @@ +name = $name; + $this->checkedValue = $checkedValue; + $this->label = $label; + $this->class = $class; + $this->value = $value; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ + public function render() + { + return view('avored::system.components.form.checkbox'); + } +} diff --git a/src/System/Components/Form/Easymde.php b/src/System/Components/Form/Easymde.php new file mode 100644 index 000000000..8eabe5567 --- /dev/null +++ b/src/System/Components/Form/Easymde.php @@ -0,0 +1,59 @@ +name = $name; + $this->label = $label; + $this->class = $class; + $this->value = $value; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ + public function render() + { + return view('avored::system.components.form.easymde'); + } +} diff --git a/src/System/Components/Form/Form.php b/src/System/Components/Form/Form.php index bf1b73fb8..d5e40cf1c 100644 --- a/src/System/Components/Form/Form.php +++ b/src/System/Components/Form/Form.php @@ -6,12 +6,33 @@ class Form extends Component { + /** + * The form action. + * @var string + */ public $action; + /** + * The form method. + * @var string + */ public $method; + /** + * The form file. + * @var string + */ public $file; + + /** + * Create the component instance. + * + * @param string $method + * @param string $action + * @param string $label + * @return void + */ public function __construct( string $method, string $action, @@ -22,6 +43,11 @@ public function __construct( $this->file = $file; } + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ public function render() { return view('avored::system.components.form.form'); diff --git a/src/System/Components/Form/Input.php b/src/System/Components/Form/Input.php index 1a011810d..5ac3a41a4 100644 --- a/src/System/Components/Form/Input.php +++ b/src/System/Components/Form/Input.php @@ -6,16 +6,41 @@ class Input extends Component { + /** + * The form input type. + * @var string + */ public $type; + /** + * The form input name. + * @var string + */ public $name; - + /** + * The form input label. + * @var string + */ public $label; - + /** + * The form input class. + * @var string + */ public $class; - + /** + * The form input value. + * @var string + */ public $value; + /** + * Create the component instance. + * + * @param string $name + * @param string $type + * @param string $label + * @return void + */ public function __construct( string $name, string $type = 'text', @@ -30,6 +55,11 @@ public function __construct( $this->value = $value; } + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ public function render() { return view('avored::system.components.form.input'); diff --git a/src/System/Components/Form/Select.php b/src/System/Components/Form/Select.php new file mode 100644 index 000000000..4f4d21ad9 --- /dev/null +++ b/src/System/Components/Form/Select.php @@ -0,0 +1,59 @@ +name = $name; + $this->label = $label; + $this->class = $class; + $this->value = $value; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ + public function render() + { + return view('avored::system.components.form.select'); + } +} diff --git a/src/System/Components/Form/Select2.php b/src/System/Components/Form/Select2.php new file mode 100644 index 000000000..ed0cd298a --- /dev/null +++ b/src/System/Components/Form/Select2.php @@ -0,0 +1,59 @@ +name = $name; + $this->label = $label; + $this->class = $class; + $this->value = $value; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ + public function render() + { + return view('avored::system.components.form.select2'); + } +} diff --git a/src/System/Components/Form/Toggle.php b/src/System/Components/Form/Toggle.php new file mode 100644 index 000000000..631126040 --- /dev/null +++ b/src/System/Components/Form/Toggle.php @@ -0,0 +1,73 @@ +name = $name; + $this->checkedValue = $checkedValue; + $this->unCheckedValue = $unCheckedValue; + $this->label = $label; + $this->class = $class; + $this->value = $value; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ + public function render() + { + return view('avored::system.components.form.toggle'); + } +} diff --git a/src/System/Components/Form/Upload.php b/src/System/Components/Form/Upload.php new file mode 100644 index 000000000..49dbeee40 --- /dev/null +++ b/src/System/Components/Form/Upload.php @@ -0,0 +1,74 @@ +name = $name; + $this->type = $type; + $this->label = $label; + $this->class = $class; + $this->value = $value; + $this->multiple = $multiple; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ + public function render() + { + return view('avored::system.components.form.upload'); + } +} diff --git a/src/System/Components/Link.php b/src/System/Components/Link.php new file mode 100644 index 000000000..fe9a9c50d --- /dev/null +++ b/src/System/Components/Link.php @@ -0,0 +1,52 @@ +url = $url; + $this->style = $style; + $this->class = $class; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ + public function render() + { + return view('avored::system.components.form.link'); + } +} diff --git a/src/System/Components/Table.php b/src/System/Components/Table.php new file mode 100644 index 000000000..2f7be338c --- /dev/null +++ b/src/System/Components/Table.php @@ -0,0 +1,28 @@ +class = $class; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ + public function render() + { + return view('avored::system.components.table.header'); + } +} diff --git a/src/System/Components/Table/Row.php b/src/System/Components/Table/Row.php new file mode 100644 index 000000000..d153906f5 --- /dev/null +++ b/src/System/Components/Table/Row.php @@ -0,0 +1,34 @@ +class = $class; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\View\View|\Closure|string + */ + public function render() + { + return view('avored::system.components.table.row'); + } +} diff --git a/src/System/Composers/LayoutComposer.php b/src/System/Composers/LayoutComposer.php new file mode 100644 index 000000000..6c7d7185f --- /dev/null +++ b/src/System/Composers/LayoutComposer.php @@ -0,0 +1,30 @@ +with('adminMenus', $adminMenus) + ->with('currentOpenKey', $currentOpenKey) + ->with('currentMenuItemKey', $currentMenuItemKey); + } +} diff --git a/src/System/Console/AdminMakeCommand.php b/src/System/Console/AdminMakeCommand.php index 07a447909..6626b5046 100644 --- a/src/System/Console/AdminMakeCommand.php +++ b/src/System/Console/AdminMakeCommand.php @@ -24,10 +24,26 @@ public function __construct( parent::__construct(); } + + /** + * The console command name. + * + * @var string + */ protected $name = 'avored:admin:make'; + /** + * The console command description. + * + * @var string + */ protected $description = 'AvoRed create an admin user account'; + /** + * Execute the console command. + * + * @return void + */ public function handle() { $data['first_name'] = $this->ask('What is your First Name?'); diff --git a/src/System/Console/InstallCommand.php b/src/System/Console/InstallCommand.php index 3bc5b0a69..b0ca0c6cc 100644 --- a/src/System/Console/InstallCommand.php +++ b/src/System/Console/InstallCommand.php @@ -18,10 +18,25 @@ public function __construct( parent::__construct(); } + /** + * The console command name. + * + * @var string + */ protected $name = 'avored:install'; + /** + * The console command description. + * + * @var string + */ protected $description = 'Install AvoRed e commerce an Laravel Shopping Cart'; + /** + * Execute the console command. + * + * @return void + */ public function handle() { $this->call('migrate:fresh'); @@ -30,7 +45,7 @@ public function handle() $this->createRoleAction->handle(['name' => Role::ADMIN]); if ($this->confirm('Would you like to install Dummy Data?')) { - // $this->call('avored:module:install', ['identifier' => 'avored-dummy-data']); + $this->call('avored:module:install', ['identifier' => 'avored-dummy-data']); } $this->call('avored:admin:make'); @@ -43,9 +58,9 @@ public function executePassportInstallCommand() $provider = 'customers'; // $this->call('passport:keys'); - // $this->call('passport:keys', ['--force' => true]); + $this->call('passport:keys', ['--force' => true]); - // $this->call('passport:client', ['--personal' => true, '--name' => config('app.name') . ' Personal Access Client']); - // $this->call('passport:client', ['--password' => true, '--name' => config('app.name') . ' Password Grant Client', '--provider' => $provider]); + $this->call('passport:client', ['--personal' => true, '--name' => config('app.name').' Personal Access Client']); + $this->call('passport:client', ['--password' => true, '--name' => config('app.name').' Password Grant Client', '--provider' => $provider]); } } diff --git a/src/System/Controllers/ConfigurationController.php b/src/System/Controllers/ConfigurationController.php new file mode 100644 index 000000000..d8f77bc74 --- /dev/null +++ b/src/System/Controllers/ConfigurationController.php @@ -0,0 +1,64 @@ +configurationRepository = $configurationRepository; + } + + /** + * Show Configuration of an AvoRed Admin. + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function index() + { + $tabs = Tab::get('system.configuration'); + + return view('avored::system.configuration.index') + ->with('tabs', $tabs) + ->with('repository', $this->configurationRepository) + ; + } + + /** + * Show Configuration of an AvoRed Admin. + * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse + */ + public function store(Request $request) + { + foreach ($request->except('_token') as $code => $value) { + /** @var \AvoRed\Framework\Database\Models\Configuration $model */ + $model = $this->configurationRepository->getModelByCode($code); + if ($model === null) { + $this->configurationRepository->create(['code' => $code, 'value' => $value]); + } else { + $model->update(['value' => $value]); + } + } + + return redirect()->route('admin.configuration.index') + ->with( + 'message', + __('avored::system.notification.save', ['attribute' => __('avored::system.configuration.title')]) + ); + } +} diff --git a/src/System/Controllers/RoleController.php b/src/System/Controllers/RoleController.php new file mode 100644 index 000000000..6cf5c1168 --- /dev/null +++ b/src/System/Controllers/RoleController.php @@ -0,0 +1,118 @@ +roleRepository = $repository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function index() + { + $roles = $this->roleRepository->paginate(); + + return view('avored::system.role.index') + ->with('roles', $roles); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function create() + { + $permissions = Permission::all(); + $tabs = Tab::get('system.role'); + + return view('avored::system.role.create') + ->with('tabs', $tabs) + ->with('permissions', $permissions); + } + + /** + * Store a newly created resource in storage. + * + * @param \AvoRed\Framework\System\Requests\RoleRequest $request + * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse + */ + public function store(RoleRequest $request) + { + $role = $this->roleRepository->create($request->all()); + $this->roleRepository->saveRolePermissions($request, $role); + + return redirect(route('admin.role.index')); + } + + /** + * Show the form for editing the specified resource. + * + * @param \AvoRed\Framework\Database\Models\Role $role + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function edit(Role $role) + { + $permissions = Permission::all(); + $tabs = Tab::get('system.role'); + + return view('avored::system.role.edit') + ->with('role', $role) + ->with('tabs', $tabs) + ->with('permissions', $permissions); + } + + /** + * Update the specified resource in storage. + * + * @param \AvoRed\Framework\System\Requests\RoleRequest $request + * @param \AvoRed\Framework\Database\Models\Role $role + * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse + */ + public function update(RoleRequest $request, Role $role) + { + $role->update($request->all()); + $this->roleRepository->saveRolePermissions($request, $role); + + return redirect(route('admin.role.index')); + } + + /** + * Remove the specified resource from storage. + * + * @param Role $role + * @return \Illuminate\Http\JsonResponse + */ + public function destroy(Role $role) + { + $role->delete(); + + return new JsonResponse([ + 'success' => true, + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.role')]) + ]); + } +} diff --git a/src/System/Requests/RoleRequest.php b/src/System/Requests/RoleRequest.php new file mode 100644 index 000000000..064383107 --- /dev/null +++ b/src/System/Requests/RoleRequest.php @@ -0,0 +1,30 @@ + 'required', + ]; + } +} diff --git a/src/Tab/Manager.php b/src/Tab/Manager.php new file mode 100644 index 000000000..78eafea48 --- /dev/null +++ b/src/Tab/Manager.php @@ -0,0 +1,62 @@ +collection = Collection::make([]); + } + + /** + * Get all the Tab Options Collection. + * @return \Illuminate\Support\Collection + */ + public function all(): Collection + { + return $this->collection; + } + + /** + * Get all the Tab Options Collection. + * @param string $key + * @return \Illuminate\Support\Collection + */ + public function get(string $key): Collection + { + return $this->collection->get($key); + } + + /** + * Put Tab class to an collection Collection. + * @param string $key + * @param callable $tab + * @return self + */ + public function put(string $key, callable $tab) + { + $tabObject = new TabItem($tab); + if (!$this->collection->has($key)) { + $collection = Collection::make([]); + $collection->push($tabObject); + } else { + $collection = $this->collection->get($key); + $collection->push($tabObject); + } + $this->collection->put($key, $collection); + + return $this; + } +} diff --git a/src/Tab/Tab.php b/src/Tab/Tab.php new file mode 100644 index 000000000..26c2c7bf7 --- /dev/null +++ b/src/Tab/Tab.php @@ -0,0 +1,18 @@ +label = $label; + + return $this; + } + + return trans($this->label); + } + + /** + * Get/Set Tab View. + * @return mixed + */ + public function view($view = null) + { + if (null !== $view) { + $this->view = $view; + + return $this; + } + + return $this->view; + } + + /** + * Get/Set Tab Identifier. + * @return mixed + */ + public function key($key = null) + { + if (null !== $key) { + $this->key = $key; + + return $this; + } + + return $this->key; + } +} diff --git a/src/Tab/TabProvider.php b/src/Tab/TabProvider.php new file mode 100644 index 000000000..e0bae51e9 --- /dev/null +++ b/src/Tab/TabProvider.php @@ -0,0 +1,225 @@ +registerTabs(); + } + + /** + * Register the service provider. + * @return void + */ + public function register() + { + $this->registerManager(); + $this->app->singleton('tab', 'AvoRed\Framework\Tab\Manager'); + } + + /** + * Register the tab Manager Instance. + * @return void + */ + protected function registerManager() + { + $this->app->singleton( + 'tab', + function () { + new Manager(); + } + ); + } + + /** + * Get the services provided by the provider. + * @return array + */ + public function provides() + { + return ['tab', 'AvoRed\Framework\Tab\Manager']; + } + + /** + * Register Tabs for the Different CRUD operations. + * @return void + */ + public function registerTabs() + { + Tab::put('promotion.promotion-code', function (TabItem $tab) { + $tab->key('promotion.promotion-code.info') + ->label('avored::system.tab.basic_info') + ->view('avored::promotion.promotion-code._fields'); + }); + + Tab::put('catalog.product', function (TabItem $tab) { + $tab->key('catalog.product.info') + ->label('avored::system.basic_info') + ->view('avored::catalog.product._fields'); + }); + + // Tab::put('catalog.product', function (TabItem $tab) { + // $tab->key('catalog.product.image') + // ->label('avored::system.tab.images') + // ->view('avored::catalog.product.cards.images'); + // }); + + // Tab::put('catalog.product', function (TabItem $tab) { + // $tab->key('catalog.product.property') + // ->label('avored::system.tab.property') + // ->view('avored::catalog.product.cards.property'); + // }); + + // Tab::put('catalog.product', function (TabItem $tab) { + // $tab->key('catalog.product.attribute') + // ->label('avored::system.tab.attribute') + // ->view('avored::catalog.product.cards.attribute'); + // }); + + /****** CATALOG CATEGORY TABS *******/ + Tab::put('catalog.category', function (TabItem $tab) { + $tab->key('catalog.category.info') + ->label('avored::system.basic_info') + ->view('avored::catalog.category._fields'); + }); + + /****** CATALOG PROPERTY TABS *******/ + Tab::put('catalog.property', function (TabItem $tab) { + $tab->key('catalog.property.info') + ->label('avored::system.basic_info') + ->view('avored::catalog.property._fields'); + }); + + /****** CATALOG ATTRIBUTE TABS *******/ + Tab::put('catalog.attribute', function (TabItem $tab) { + $tab->key('catalog.attribute.info') + ->label('avored::system.basic_info') + ->view('avored::catalog.attribute._fields'); + }); + + /******CMS PAGES TABS *******/ + Tab::put('cms.page', function (TabItem $tab) { + $tab->key('cms.page.info') + ->label('avored::system.basic_info') + ->view('avored::cms.page._fields'); + }); + + /******ORDER ORDER STATUS TABS *******/ + Tab::put('order.order-status', function (TabItem $tab) { + $tab->key('order.order-status.info') + ->label('avored::system.basic_info') + ->view('avored::order.order-status._fields'); + }); + + /****** CUSTOMER GROUPS TABS *******/ + Tab::put('user.customer-group', function (TabItem $tab) { + $tab->key('user.customer-group.info') + ->label('avored::system.tab.basic_info') + ->view('avored::user.customer-group._fields'); + }); + + Tab::put('user.customer', function (TabItem $tab) { + $tab->key('user.customer.info') + ->label('avored::system.tab.basic_info') + ->view('avored::user.customer._fields'); + }); + + Tab::put('user.customer', function (TabItem $tab) { + $tab->key('user.customer.address') + ->label('avored::system.addresses') + ->view('avored::user.customer._addresses'); + }); + + Tab::put('user.address', function (TabItem $tab) { + $tab->key('user.customer.info') + ->label('avored::system.tab.basic_info') + ->view('avored::user.customer.show'); + }); + Tab::put('user.address', function (TabItem $tab) { + $tab->key('user.customer.address') + ->label('avored::system.addresses') + ->view('avored::user.address._fields'); + }); + + /******USER ADMIN USER TABS *******/ + Tab::put('user.staff', function (TabItem $tab) { + $tab->key('user.staff.info') + ->label('avored::system.basic_info') + ->view('avored::user.staff._fields'); + }); + Tab::put('user.subscriber', function (TabItem $tab) { + $tab->key('user.subscriber.info') + ->label('avored::system.basic_info') + ->view('avored::user.subscriber._fields'); + }); + + /******SYSTEM CURRENCY TABS *******/ + Tab::put('system.currency', function (TabItem $tab) { + $tab->key('system.currency.info') + ->label('avored::system.tab.basic_info') + ->view('avored::system.currency._fields'); + }); + + /******SYSTEM STATE TABS *******/ + Tab::put('system.state', function (TabItem $tab) { + $tab->key('system.state.info') + ->label('avored::system.tab.basic_info') + ->view('avored::system.state._fields'); + }); + + /******SYSTEM ROLE TABS *******/ + Tab::put('system.role', function (TabItem $tab) { + $tab->key('system.role.info') + ->label('avored::system.basic_info') + ->view('avored::system.role._fields'); + }); + + /******SYSTEM ROLE TABS *******/ + Tab::put('system.language', function (TabItem $tab) { + $tab->key('system.language.info') + ->label('avored::system.tab.basic_info') + ->view('avored::system.language._fields'); + }); + + /******SYSTEM CONFIGURATION TABS *******/ + Tab::put('system.configuration', function (TabItem $tab) { + $tab->key('system.configuration.basic') + ->label('avored::system.basic_configuration') + ->view('avored::system.configuration.cards.basic'); + }); + + // Tab::put('system.configuration', function (TabItem $tab) { + // $tab->key('system.configuration.user') + // ->label('avored::system.tab.user_configuration') + // ->view('avored::system.configuration.cards.user'); + // }); + // Tab::put('system.configuration', function (TabItem $tab) { + // $tab->key('system.configuration.tax') + // ->label('avored::system.tax_configuration') + // ->view('avored::system.configuration.cards.tax'); + // }); + + // Tab::put('system.configuration', function (TabItem $tab) { + // $tab->key('system.configuration.shipping') + // ->label('avored::system.tab.shipping_configuration') + // ->view('avored::system.configuration.cards.shipping'); + // }); + // Tab::put('system.configuration', function (TabItem $tab) { + // $tab->key('system.configuration.payment') + // ->label('avored::system.tab.payment_configuration') + // ->view('avored::system.configuration.cards.payment'); + // }); + } +} diff --git a/src/User/Controllers/ForgotPasswordController.php b/src/User/Controllers/ForgotPasswordController.php new file mode 100644 index 000000000..5bbd665e4 --- /dev/null +++ b/src/User/Controllers/ForgotPasswordController.php @@ -0,0 +1,106 @@ +middleware('admin.guest'); + } + + /** + * Show Password Reset Form. + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function linkRequestForm() + { + return view('avored::user.auth.reset'); + } + + /** + * Set up the admin user guard + * + * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard $guard + */ + protected function guard() + { + return Auth::guard('admin'); + } + + /** + * Get the broker to be used during password reset. + * + * @return \Illuminate\Contracts\Auth\PasswordBroker + */ + public function broker() + { + return Password::broker('adminusers'); + } + + /** + * Send a reset link to the given user. + * + * @param \AvoRed\Framework\User\Requests\ForgotPasswordRequest $request + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse + */ + public function sendResetLinkEmail(ForgotPasswordRequest $request) + { + + // We will send the password reset link to this user. Once we have attempted + // to send the link, we will examine the response then see the message we + // need to show to the user. Finally, we'll send out a proper response. + $response = $this->broker()->sendResetLink($request->only('email')); + + return $response == Password::RESET_LINK_SENT + ? $this->sendResetLinkResponse($request, $response) + : $this->sendResetLinkFailedResponse($request, $response); + } + + /** + * Get the response for a successful password reset link. + * + * @param \AvoRed\Framework\User\Requests\ForgotPasswordRequest $request + * @param string $response + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse + */ + protected function sendResetLinkResponse(ForgotPasswordRequest $request, $response) + { + return back()->with('status', trans($response)); + } + + /** + * Get the response for a failed password reset link. + * + * @param \AvoRed\Framework\User\Requests\ForgotPasswordRequest $request + * @param string $response + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse + */ + protected function sendResetLinkFailedResponse(ForgotPasswordRequest $request, $response) + { + return back() + ->withInput($request->only('email')) + ->withErrors(['email' => trans($response)]); + } +} diff --git a/src/User/Controllers/LoginController.php b/src/User/Controllers/LoginController.php index 637dca3b9..1a01ba07d 100644 --- a/src/User/Controllers/LoginController.php +++ b/src/User/Controllers/LoginController.php @@ -12,11 +12,32 @@ class LoginController extends Controller { + /* + |-------------------------------------------------------------------------- + | Login Controller + |-------------------------------------------------------------------------- + | + | This controller handles authenticating users for the application and + | redirecting them to your home screen. The controller uses a trait + | to conveniently provide its functionality to your applications. + | + /** + * Create a new controller instance. + * @return void + */ public function __construct() { $this->middleware('admin.guest')->except('logout'); } + /** + * Handle a login request to the application. + * + * @param AdminLoginRequest $request + * @return RedirectResponse + * + * @throws \Illuminate\Validation\ValidationException + */ public function login(AdminLoginRequest $request) { if ($this->attemptLogin($request)) { @@ -39,11 +60,11 @@ protected function sendLoginResponse(AdminLoginRequest $request): RedirectRespon return redirect()->intended($this->redirectPath()); } + public function redirectPath() { return route('admin.dashboard'); } - /** * Attempt to log the user into the application. * @@ -58,6 +79,7 @@ protected function attemptLogin(AdminLoginRequest $request) ); } + /** * Show the AvoRed Login Form to the User. * @return \Illuminate\View\View @@ -67,11 +89,21 @@ public function loginForm(): View return view('avored::user.auth.login-form'); } + /** + * Using an Admin Guard for the Admin Auth. + * @return \Illuminate\Auth\SessionGuard + */ protected function guard() { return Auth::guard('admin'); } + /** + * Get the failed login response instance. + * @param AdminLoginRequest $request + * @return \Symfony\Component\HttpFoundation\Response + * @throws ValidationException + */ protected function sendFailedLoginResponse(AdminLoginRequest $request) { throw ValidationException::withMessages( @@ -79,6 +111,11 @@ protected function sendFailedLoginResponse(AdminLoginRequest $request) ); } + /** + * Redirect Path after login and logout. + * @param Request $request + * @return \Illuminate\Http\RedirectResponse + */ public function logout(Request $request) { $this->guard()->logout(); diff --git a/src/User/Controllers/ResetPasswordController.php b/src/User/Controllers/ResetPasswordController.php new file mode 100644 index 000000000..3128db017 --- /dev/null +++ b/src/User/Controllers/ResetPasswordController.php @@ -0,0 +1,180 @@ +middleware('admin.guest'); + } + + /** + * Display the password reset view for the given token. + * + * If no token is present, display the link request form. + * + * @param \Illuminate\Http\Request $request + * @param string|null $token + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + public function showResetForm(Request $request, $token = null) + { + return view('avored::user.auth.password.new')->with( + ['token' => $token, 'email' => $request->email] + ); + } + + /** + * Laravel auth guard that is used to support the admin user + * + * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard + */ + protected function guard() + { + return Auth::guard('admin'); + } + + /** + * Get the broker to be used during password reset. + * + * @return \Illuminate\Contracts\Auth\PasswordBroker + */ + public function broker() + { + return Password::broker('adminusers'); + } + + + /** + * Redirect Path after login and logout. + * @return string + */ + public function redirectPath() + { + return route('admin.dashboard'); + } + + /** + * Reset the given user's password. + * + * @param ResetAdminUserRequest $request + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse + */ + public function reset(ResetAdminUserRequest $request) + { + + // Here we will attempt to reset the user's password. If it is successful we + // will update the password on an actual user model and persist it to the + // database. Otherwise we will parse the error and return the response. + $response = $this->broker()->reset( + $this->credentials($request), + function ($user, $password) { + $this->resetPassword($user, $password); + } + ); + + // If the password was successfully reset, we will redirect the user back to + // the application's home authenticated view. If there is an error we can + // redirect them back to where they came from with their error message. + return $response == Password::PASSWORD_RESET + ? $this->sendResetResponse($request, $response) + : $this->sendResetFailedResponse($request, $response); + } + + /** + * Reset the given user's password. + * + * @param \AvoRed\Framework\Database\Models\AdminUser $user + * @param string $password + * @return void + */ + protected function resetPassword($user, $password) + { + $this->setUserPassword($user, $password); + $user->save(); + event(new PasswordReset($user)); + + $this->guard()->login($user); + } + + /** + * Set the user's password. + * + * @param \AvoRed\Framework\Database\Models\AdminUser $user + * @param string $password + * @return void + */ + protected function setUserPassword($user, $password) + { + $user->password = Hash::make($password); + } + + /** + * Get the password reset credentials from the request. + * + * @param \Illuminate\Http\Request $request + * @return array + */ + protected function credentials(Request $request) + { + return $request->only( + 'email', + 'password', + 'password_confirmation', + 'token' + ); + } + + + /** + * Get the response for a successful password reset. + * + * @param \Illuminate\Http\Request $request + * @param string $response + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse + */ + protected function sendResetResponse(Request $request, $response) + { + return redirect($this->redirectPath()) + ->with('status', trans($response)); + } + + /** + * Get the response for a failed password reset. + * + * @param \Illuminate\Http\Request $request + * @param string $response + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse + */ + protected function sendResetFailedResponse(Request $request, $response) + { + return redirect()->back() + ->withInput($request->only('email')) + ->withErrors(['email' => trans($response)]); + } +} diff --git a/src/User/Controllers/StaffController.php b/src/User/Controllers/StaffController.php new file mode 100644 index 000000000..81d0ed632 --- /dev/null +++ b/src/User/Controllers/StaffController.php @@ -0,0 +1,131 @@ +adminUserRepository = $repository; + $this->roleRepository = $roleRepository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function index() + { + $adminUsers = $this->adminUserRepository->paginate(); + + return view('avored::user.staff.index') + ->with('staffs', $adminUsers); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function create() + { + $roles = $this->roleRepository->options(); + $tabs = Tab::get('user.staff'); + + return view('avored::user.staff.create') + ->with('tabs', $tabs) + ->with('options', $roles); + } + + /** + * Store a newly created resource in storage. + * + * @param AdminUserRequest $request + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + */ + public function store(AdminUserRequest $request) + { + $this->adminUserRepository->create($request->all()); + + return redirect(route('admin.staff.index')); + } + + /** + * Show the form for editing the specified resource. + * + * @param AdminUser $staff + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function edit(AdminUser $staff) + { + $roles = $this->roleRepository->options(); + $tabs = Tab::get('user.staff'); + + return view('avored::user.staff.edit') + ->with('staff', $staff) + ->with('options', $roles) + ->with('tabs', $tabs); + } + + /** + * Update the specified resource in storage. + * + * @param AdminUserRequest $request + * @param AdminUser $staff + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + */ + public function update(AdminUserRequest $request, AdminUser $staff) + { + if ($request->file('image_path')) { + $document = Document::uploadPublicly($request->file('image_path')); + $staff->imagePath()->updateOrCreate(optional($staff->imagePath)->toArray() ?? [], $document); + } + + $staff->update($request->all()); + + return redirect(route('admin.staff.index')); + } + + /** + * Remove the specified resource from storage. + * + * @param AdminUser $staff + * @return \Illuminate\Http\JsonResponse + */ + public function destroy(AdminUser $staff) + { + $staff->delete(); + + return new JsonResponse([ + 'success' => true, + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.staff')]) + ]); + } +} diff --git a/src/User/Controllers/SubscriberController.php b/src/User/Controllers/SubscriberController.php new file mode 100644 index 000000000..f937a8b54 --- /dev/null +++ b/src/User/Controllers/SubscriberController.php @@ -0,0 +1,113 @@ +subscriberRepository = $repository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function index() + { + $subscribers = $this->subscriberRepository->paginate(); + + return view('avored::user.subscriber.index') + ->with('subscribers', $subscribers); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function create() + { + $tabs = Tab::get('user.subscriber'); + + return view('avored::user.subscriber.create') + ->with('tabs', $tabs); + } + + /** + * Store a newly created resource in storage. + * + * @param SubscriberRequest $request + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + */ + public function store(SubscriberRequest $request) + { + $this->subscriberRepository->create($request->all()); + + return redirect(route('admin.subscriber.index')); + } + + /** + * Show the form for editing the specified resource. + * + * @param Subscriber $subscriber + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function edit(Subscriber $subscriber) + { + $tabs = Tab::get('user.subscriber'); + + return view('avored::user.subscriber.edit') + ->with('subscriber', $subscriber) + ->with('tabs', $tabs); + } + + /** + * Update the specified resource in storage. + * + * @param SubscriberRequest $request + * @param Subscriber $subscriber + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + */ + public function update(SubscriberRequest $request, Subscriber $subscriber) + { + $subscriber->update($request->all()); + + return redirect(route('admin.subscriber.index')); + } + + /** + * Remove the specified resource from storage. + * + * @param Subscriber $subscriber + * @return \Illuminate\Http\JsonResponse + */ + public function destroy(Subscriber $subscriber) + { + $subscriber->delete(); + + return new JsonResponse([ + 'success' => true, + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.subscriber')]) + ]); + } +} diff --git a/src/User/Notifications/CustomerResetPassword.php b/src/User/Notifications/CustomerResetPassword.php new file mode 100644 index 000000000..0d763e5dd --- /dev/null +++ b/src/User/Notifications/CustomerResetPassword.php @@ -0,0 +1,67 @@ +token = $token; + } + + /** + * Get the notification's channels. + * + * @param mixed $notifiable + * @return array|string + */ + public function via($notifiable) + { + return ['mail']; + } + + /** + * Build the mail representation of the notification. + * + * @param mixed $notifiable + * @return \Illuminate\Notifications\Messages\MailMessage + */ + public function toMail($notifiable) + { + $repositroy = $this->getConfigurationRepository(); + $resetLink = $repositroy->getValueByCode('customer_reset_password_link'); + $url = $resetLink . "?token=" . $this->token; + return (new MailMessage()) + ->line('You are receiving this email because we received a password reset request for your account.') + ->action('Reset Password', $url) + ->line('If you did not request a password reset, no further action is required.'); + } + + + /** + * Get the instance of an Configuration repository + * @return ConfigurationRepository + */ + public function getConfigurationRepository(): ConfigurationRepository + { + return app(ConfigurationModelInterface::class); + } +} diff --git a/src/User/Notifications/ResetPassword.php b/src/User/Notifications/ResetPassword.php new file mode 100644 index 000000000..791258bb0 --- /dev/null +++ b/src/User/Notifications/ResetPassword.php @@ -0,0 +1,52 @@ +token = $token; + } + + /** + * Get the notification's channels. + * + * @param mixed $notifiable + * @return array|string + */ + public function via($notifiable) + { + return ['mail']; + } + + /** + * Build the mail representation of the notification. + * + * @param mixed $notifiable + * @return \Illuminate\Notifications\Messages\MailMessage + */ + public function toMail($notifiable) + { + return (new MailMessage()) + ->line('You are receiving this email because we received a password reset request for your account.') + ->action('Reset Password', route('admin.password.reset', $this->token)) + ->line('If you did not request a password reset, no further action is required.'); + } +} diff --git a/src/User/Requests/AdminLoginRequest.php b/src/User/Requests/AdminLoginRequest.php index 185936c55..fc882b2c2 100644 --- a/src/User/Requests/AdminLoginRequest.php +++ b/src/User/Requests/AdminLoginRequest.php @@ -6,16 +6,26 @@ class AdminLoginRequest extends FormRequest { + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ public function authorize() { return true; } + /** + * Get the validation rules that apply to the request. + * + * @return array + */ public function rules() { return [ 'email' => 'required|email', - 'password' => 'required', + 'password' => 'required' ]; } } diff --git a/src/User/Requests/AdminUserRequest.php b/src/User/Requests/AdminUserRequest.php new file mode 100644 index 000000000..9843502fd --- /dev/null +++ b/src/User/Requests/AdminUserRequest.php @@ -0,0 +1,32 @@ + 'required', + 'last_name' => 'required', + 'role_id' => 'required' + ]; + } +} diff --git a/src/User/Requests/ForgotPasswordRequest.php b/src/User/Requests/ForgotPasswordRequest.php new file mode 100644 index 000000000..b98e6ab86 --- /dev/null +++ b/src/User/Requests/ForgotPasswordRequest.php @@ -0,0 +1,30 @@ + 'required', + 'email' => 'required|email', + 'password' => 'required|confirmed|min:8', + ]; + } +} diff --git a/src/User/Requests/SubscriberRequest.php b/src/User/Requests/SubscriberRequest.php new file mode 100644 index 000000000..bcb69df59 --- /dev/null +++ b/src/User/Requests/SubscriberRequest.php @@ -0,0 +1,30 @@ + 'required', + ]; + } +} diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php deleted file mode 100644 index ed4943c66..000000000 --- a/tests/ExampleTest.php +++ /dev/null @@ -1,11 +0,0 @@ -assertTrue(true); - } -} diff --git a/tests/Feature/AdminUserControllerTest.php b/tests/Feature/AdminUserControllerTest.php new file mode 100644 index 000000000..a7ca6f753 --- /dev/null +++ b/tests/Feature/AdminUserControllerTest.php @@ -0,0 +1,90 @@ +createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.staff.index')) + ->assertStatus(200) + ->assertSee(__('avored::system.staff')); + } + + /** @test */ + public function test_admin_user_create_route_test() + { + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.staff.create')) + ->assertStatus(200); + } + + /** @test */ + public function test_admin_user_store_route_test() + { + $role = Role::factory()->create(); + $data = [ + 'first_name' => 'test staff name', + 'last_name' => 'test-staff-name', + 'is_super_admin' => 0, + 'email' => $this->faker->email, + 'role_id' => $role->id, + 'password' => 'randompassword', + 'password_confirmation' => 'randompassword', + 'language' => 'en', + ]; + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->post(route('admin.staff.store', $data)) + ->assertRedirect(route('admin.staff.index')); + + $this->assertDatabaseHas('admin_users', ['first_name' => 'test staff name']); + } + + /** @test */ + public function test_admin_user_edit_route_test() + { + $adminUser = AdminUser::factory()->create(); + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.staff.edit', $adminUser->id)) + ->assertStatus(200); + } + + /** @test */ + public function test_admin_user_update_route_test() + { + $adminUser = AdminUser::factory()->create(); + $adminUser->first_name = 'updated staff name'; + $adminUser->language = 'en'; + $data = $adminUser->toArray(); + + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->put(route('admin.staff.update', $adminUser->id), $data) + ->assertRedirect(route('admin.staff.index')); + + $this->assertDatabaseHas('admin_users', ['first_name' => 'updated staff name']); + } + + /** @test */ + public function test_admin_user_destroy_route_test() + { + $adminUser = AdminUser::factory()->create(); + + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->delete(route('admin.staff.destroy', $adminUser->id)) + ->assertStatus(200); + + $this->assertDatabaseMissing('admin_users', ['id' => $adminUser->id]); + } +} diff --git a/tests/Feature/AuthControllerTest.php b/tests/Feature/AuthControllerTest.php new file mode 100644 index 000000000..7c9c2c3ac --- /dev/null +++ b/tests/Feature/AuthControllerTest.php @@ -0,0 +1,62 @@ +get(route('admin.login')) + ->assertStatus(200) + ->assertViewIs('avored::user.auth.login-form'); + } + + /** @test */ + public function test_admin_logout_route_test() + { + $this + ->createAdminUser() + ->actingAs($this->user, 'admin') + ->post(route('admin.logout')) + ->assertRedirect(route('admin.login')); + } + + /** @test */ + public function test_admin_login_redirect_guest_middleware() + { + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.login')) + ->assertRedirect(route('admin.dashboard')); + } + + /** @test */ + public function test_admin_login_post_route() + { + $password = 'phpunittest'; + $this->createAdminUser(['is_super_admin' => 1, 'password' => $password]) + ->actingAs($this->user, 'admin') + ->post(route('admin.login.post', ['email' => $this->user->email, 'password' => $password])) + ->assertRedirect(route('admin.dashboard')); + } + + /** @test */ + public function test_admin_login_post_route_failed() + { + $password = 'phpunittest'; + $this + ->createAdminUser(['is_super_admin' => 1, 'password' => $password]) + ->post(route('admin.login.post', ['email' => $this->user->email, 'password' => 'wrongpassword'])) + ->assertSessionHasErrors('email'); + } + + /** @test */ + public function test_guest_user_is_redirected_to_login() + { + $this->get(route('admin.dashboard')) + ->assertRedirect(route('admin.login')); + } +} diff --git a/tests/Feature/CategoryControllerTest.php b/tests/Feature/CategoryControllerTest.php new file mode 100644 index 000000000..ea54a7630 --- /dev/null +++ b/tests/Feature/CategoryControllerTest.php @@ -0,0 +1,80 @@ +getAvoRed('admin.category.index'); + + $response->assertStatus(200) + ->assertViewIs('avored::catalog.category.index'); + } + /** @test */ + public function test_category_page_create_form() + { + $response = $this->getAvoRed('admin.category.create'); + + $response->assertStatus(200) + ->assertViewIs('avored::catalog.category.create'); + } + + /** @test */ + public function test_category_page_store_form() + { + $data = Category::factory()->make(); + $this + ->postAvoRed('admin.category.store', $data->toArray()) + ->assertStatus(302) + ->assertRedirect(route('admin.category.index')); + + $this->assertDatabaseHas('categories', ['name' => $data->name, 'slug' => $data->slug]); + } + + /** @test */ + public function test_category_page_edit_form() + { + $category = Category::factory()->create(); + $response = $this->createAdminUser(['is_super_admin' => 1]) + ->actingAs($this->user, 'admin') + ->get(route('admin.category.edit', $category)); + $response->assertStatus(200) + ->assertViewIs('avored::catalog.category.edit'); + } + + /** @test */ + public function test_category_page_update_form() + { + $category = Category::factory()->create(); + $category->name = 'unit test update'; + + $this->createAdminUser(['is_super_admin' => 1]) + ->actingAs($this->user, 'admin') + ->put(route('admin.category.update', $category), $category->toArray()) + ->assertStatus(302) + ->assertRedirect(route('admin.category.index')); + + $this->assertDatabaseHas('categories', ['name' => 'unit test update', 'slug' => $category->slug]); + + } + + /** @test */ + public function test_category_page_destroy_form() + { + $category = Category::factory()->create(); + + $this->createAdminUser(['is_super_admin' => 1]) + ->actingAs($this->user, 'admin') + ->delete(route('admin.category.update', $category)) + ->assertStatus(200); + + $this->assertDatabaseMissing('categories', ['name' => 'unit test update', 'slug' => $category->slug]); + + } +} diff --git a/tests/Feature/ConfigurationControllerTest.php b/tests/Feature/ConfigurationControllerTest.php new file mode 100644 index 000000000..b7978335e --- /dev/null +++ b/tests/Feature/ConfigurationControllerTest.php @@ -0,0 +1,29 @@ +createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.configuration.index')) + ->assertStatus(200) + ; + } + + public function test_category_store_route_test() + { + $data = ['site_title' => 'test site title']; + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->post(route('admin.configuration.store', $data)) + ->assertRedirect(route('admin.configuration.index')); + + $this->assertDatabaseHas('configurations', ['code' => 'site_title']); + } +} \ No newline at end of file diff --git a/tests/Feature/DashboardControllerTest.php b/tests/Feature/DashboardControllerTest.php new file mode 100644 index 000000000..21a587b69 --- /dev/null +++ b/tests/Feature/DashboardControllerTest.php @@ -0,0 +1,17 @@ +createAdminUser() + ->actingAs($this->user, 'admin') + ->getAvoRed('admin.dashboard'); + + $response->assertStatus(200); + } +} diff --git a/tests/Feature/LoginControllerTest.php b/tests/Feature/LoginControllerTest.php new file mode 100644 index 000000000..459a935b1 --- /dev/null +++ b/tests/Feature/LoginControllerTest.php @@ -0,0 +1,83 @@ +get(route('admin.login')); + + $response->assertStatus(200); + } + + /** @test */ + public function test_find_admin_user_by_email() + { + $this->createAdminUser(['is_super_admin' => 1]); + + $repository = app(AdminUserModelInterface::class); + + $data = $repository->findByEmail($this->user->email); + $this->assertEquals($this->user->email, $data->email); + } + + /** @test */ + public function test_login_page_post_form() + { + $password = 'phpunittest'; + $this->createAdminUser(['is_super_admin' => 1, 'password' => $password]) + ->actingAs($this->user, 'admin') + ->post(route('admin.login.post', ['email' => $this->user->email, 'password' => $password])) + ->assertRedirect(route('admin.dashboard')); + + } + + /** @test */ + public function test_admin_logout_route_test() + { + $this + ->createAdminUser() + ->actingAs($this->user, 'admin') + ->post(route('admin.logout')) + ->assertRedirect(route('admin.login')); + } + + /** @test */ + public function test_admin_login_redirect_guest_middleware() + { + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.login')) + ->assertRedirect(route('admin.dashboard')); + } + + /** @test */ + public function test_admin_login_post_route() + { + $password = 'phpunittest'; + $this->createAdminUser(['is_super_admin' => 1, 'password' => $password]) + ->actingAs($this->user, 'admin') + ->post(route('admin.login.post', ['email' => $this->user->email, 'password' => $password])) + ->assertRedirect(route('admin.dashboard')); + } + + /** @test */ + public function test_admin_login_post_route_failed() + { + $password = 'phpunittest'; + $this + ->createAdminUser(['is_super_admin' => 1, 'password' => $password]) + ->post(route('admin.login.post', ['email' => $this->user->email, 'password' => 'wrongpassword'])) + ->assertSessionHasErrors('email'); + } + + /** @test */ + public function test_guest_user_is_redirected_to_login() + { + $this->get(route('admin.dashboard')) + ->assertRedirect(route('admin.login')); + } +} diff --git a/tests/Feature/OrderControllerTest.php b/tests/Feature/OrderControllerTest.php new file mode 100644 index 000000000..cc391aaf4 --- /dev/null +++ b/tests/Feature/OrderControllerTest.php @@ -0,0 +1,30 @@ +createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.order.index')) + ->assertStatus(200) + ->assertSee(__('avored::system.order')); + } + + /** @test */ + public function test_order_index_route_with_factory_data() + { + $order = Order::factory()->create(); + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.order.index')) + ->assertStatus(200) + ->assertSee($order->shipping_option); + } +} diff --git a/tests/Feature/OrderStatusControllerTest.php b/tests/Feature/OrderStatusControllerTest.php new file mode 100644 index 000000000..8fa59abdc --- /dev/null +++ b/tests/Feature/OrderStatusControllerTest.php @@ -0,0 +1,73 @@ +createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.order-status.index')) + ->assertStatus(200); + } + + /** @test */ + public function test_order_status_create_route() + { + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.order-status.create')) + ->assertStatus(200); + } + + /** @test */ + public function test_order_status_store_route() + { + $data = ['name' => 'test order-status name', 'is_default' => 1]; + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->post(route('admin.order-status.store', $data)); + + $this->assertDatabaseHas('order_statuses', ['name' => 'test order-status name']); + } + + public function testOrderStatusEditRouteTest() + { + $orderStatus = OrderStatus::factory()->create(); + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.order-status.edit', $orderStatus->id)) + ->assertStatus(200); + } + + public function testOrderStatusUpdateRouteTest() + { + $orderStatus = OrderStatus::factory()->create(); + $orderStatus->name = 'updated order-status name'; + $data = $orderStatus->toArray(); + + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->put(route('admin.order-status.update', $orderStatus->id), $data) + ->assertRedirect(route('admin.order-status.index')); + + $this->assertDatabaseHas('order_statuses', ['name' => 'updated order-status name']); + } + + public function testOrderStatusDestroyRouteTest() + { + $orderStatus = OrderStatus::factory()->create(); + + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->delete(route('admin.order-status.destroy', $orderStatus->id)) + ->assertStatus(200); + + $this->assertDatabaseMissing('order_statuses', ['id' => $orderStatus->id]); + } +} diff --git a/tests/Feature/PageControllerTest.php b/tests/Feature/PageControllerTest.php new file mode 100644 index 000000000..2c7aa9519 --- /dev/null +++ b/tests/Feature/PageControllerTest.php @@ -0,0 +1,78 @@ +createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.page.index')) + ->assertStatus(200); + } + + /** @test */ + public function test_page_create_route() + { + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.page.create')) + ->assertStatus(200); + } + + /** @test */ + public function test_page_store_route() + { + $data = ['name' => 'test page name', 'slug' => 'test-page-name', 'content' => 'test content', '']; + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->post(route('admin.page.store', $data)) + ->assertRedirect(route('admin.page.index')); + + $this->assertDatabaseHas('pages', ['name' => 'test page name']); + } + + /** @test */ + public function test_pageedit_route_test() + { + $page = Page::factory()->create(); + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.page.edit', $page->id)) + ->assertStatus(200); + } + + /** @test */ + public function test_pageupdate_route() + { + $page = Page::factory()->create(); + $page->name = 'updated page name'; + $data = $page->toArray(); + + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->put(route('admin.page.update', $page->id), $data) + ->assertRedirect(route('admin.page.index')); + + $this->assertDatabaseHas('pages', ['name' => 'updated page name']); + } + + /** @test */ + public function test_page_destroy_route() + { + $page = Page::factory()->create(); + + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->delete(route('admin.page.destroy', $page->id)) + ->assertStatus(200); + + $this->assertDatabaseMissing('pages', ['id' => $page->id]); + } +} diff --git a/tests/Feature/ProductControllerTest.php b/tests/Feature/ProductControllerTest.php new file mode 100644 index 000000000..6f038c8e2 --- /dev/null +++ b/tests/Feature/ProductControllerTest.php @@ -0,0 +1,78 @@ +createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.product.index')) + ->assertStatus(200); + } + + /** @test */ + public function test_product_createRoute() + { + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.product.create')) + ->assertStatus(200); + } + + /** @test */ + public function test_product_store_route() + { + $data = [ + 'name' => 'test product', + 'slug' => 'test-product', + 'type' => 'BASIC' + ]; + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->post(route('admin.product.store', $data)) + ->assertRedirect(route('admin.product.index')); + $this->assertDatabaseHas('products', ['name' => 'test product']); + } + /** @test */ + public function test_product_edit_route() + { + $product = Product::factory()->create(); + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.product.edit', $product)) + ->assertStatus(200) + ->assertViewIs('avored::catalog.product.edit'); + } + + /** @test */ + public function test_product_update_route() + { + $product = Product::factory()->create(); + $product->name = 'update product name'; + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->put(route('admin.product.update', $product), $product->toArray()) + ->assertRedirect(route('admin.product.index')); + $this->assertDatabaseHas('products', ['name' => 'update product name']); + } + + /** @test */ + public function test_product_destroy_route() + { + $product = Product::factory()->create(); + + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->delete(route('admin.product.destroy', $product->id)) + ->assertStatus(200); + + $this->assertDatabaseMissing('products', ['id' => $product->id]); + } +} diff --git a/tests/Feature/RoleControllerTest.php b/tests/Feature/RoleControllerTest.php new file mode 100644 index 000000000..95b85b278 --- /dev/null +++ b/tests/Feature/RoleControllerTest.php @@ -0,0 +1,116 @@ +createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.role.index')) + ->assertStatus(200); + } + + /** @test */ + public function test_role_create_route() + { + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.role.create')) + ->assertStatus(200); + } + + /** @test */ + public function test_role_store_route() + { + $data = ['name' => 'test role name']; + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->post(route('admin.role.store', $data)) + ->assertRedirect(route('admin.role.index')); + + $this->assertDatabaseHas('roles', ['name' => 'test role name']); + } + + /** @test */ + public function test_role_edit_route() + { + $role = Role::factory()->create(); + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->get(route('admin.role.edit', $role->id)) + ->assertStatus(200); + } + + /** @test */ + public function test_role_update_route() + { + $role = Role::factory()->create(); + $role->name = 'updated role name'; + $data = $role->toArray(); + + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->put(route('admin.role.update', $role->id), $data) + ->assertRedirect(route('admin.role.index')); + + $this->assertDatabaseHas('roles', ['name' => 'updated role name']); + } + + /** @test */ + public function test_role_destroy_route() + { + $role = Role::factory()->create(); + + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->delete(route('admin.role.destroy', $role->id)) + ->assertStatus(200); + + $this->assertDatabaseMissing('roles', ['id' => $role->id]); + } + + public function testRoleStoreWithPermissionsRouteTest() + { + $permissionList = Permission::all()->first()->permissionList; + $permissions = collect(); + foreach ($permissionList as $permission) { + $permissions->push($permission->routes()); + } + + $data = ['name' => 'test role name', 'permissions' => $permissions->toArray()]; + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->post(route('admin.role.store', $data)) + ->assertRedirect(route('admin.role.index')); + + $this->assertDatabaseHas('roles', ['name' => 'test role name']); + } + + public function testRoleUpdateWithPermissionsRouteTest() + { + $permissionList = Permission::all()->first()->permissionList; + $permissions = collect(); + foreach ($permissionList as $permission) { + $permissions->push($permission->routes()); + } + + $role = Role::factory()->create(); + $role->name = 'updated role name'; + $data = $role->toArray(); + $data['permissions'] = $permissions->toArray(); + + $this->createAdminUser() + ->actingAs($this->user, 'admin') + ->put(route('admin.role.update', $role->id), $data) + ->assertRedirect(route('admin.role.index')); + + $this->assertDatabaseHas('roles', ['name' => 'updated role name']); + } +} diff --git a/tests/Functional/BreadcrumbTest.php b/tests/Functional/BreadcrumbTest.php new file mode 100644 index 000000000..3f7ce2fd2 --- /dev/null +++ b/tests/Functional/BreadcrumbTest.php @@ -0,0 +1,61 @@ +make('test.route', function ($breadcrumb) { + $breadcrumb->route('test.route'); + }); + $testRoute = $builder->get('test.route'); + $this->assertEquals($testRoute->route(), 'test.route'); + } + + /** @test */ + public function test_breadcrumb_builder_render() + { + $builder = new Builder(); + $builder->make('test.route', function ($breadcrumb) { + $breadcrumb->route('test.route'); + }); + + $this->assertInstanceOf(View::class, $builder->render('test.route')); + } + + /** @test */ + public function test_breadcrumb_label() + { + $builder = new Builder(); + $builder->make('test.route', function ($breadcrumb) { + $breadcrumb->label('test label'); + }); + $testRoute = $builder->get('test.route'); + $this->assertEquals($testRoute->label(), 'test label'); + } + + /** @test */ + public function test_breadcrumb_parent() + { + $builder = new Builder(); + $builder->make('test.route', function ($breadcrumb) { + $breadcrumb->label('test parent label'); + }); + + $builder->make('test.child.route', function ($breadcrumb) { + $breadcrumb->label('test label') + ->parent('test.route'); + }); + $testRoute = $builder->get('test.child.route'); + + $this->assertEquals($testRoute->parents->count(), 1); + } +} diff --git a/tests/Functional/PermissionTest.php b/tests/Functional/PermissionTest.php new file mode 100644 index 000000000..8ec16faca --- /dev/null +++ b/tests/Functional/PermissionTest.php @@ -0,0 +1,32 @@ +createAdminUser(['is_super_admin' => 0]) + ->actingAs($this->user, 'admin') + ->get(route('admin.dashboard')) + ->assertStatus(Response::HTTP_FORBIDDEN); + + $this->createPermissionForUser($this->user, 'admin.dashboard'); + $this->actingAs($this->user, 'admin') + ->get(route('admin.dashboard')) + ->assertStatus(Response::HTTP_OK); + } + + protected function createPermissionForUser(AdminUser $user, string $name) + { + $permission = new Permission(['name' => $name]); + $user->role->permissions()->save($permission); + $user->load('role.permissions'); + } +} diff --git a/tests/Functional/ProductModelTest.php b/tests/Functional/ProductModelTest.php new file mode 100644 index 000000000..c57f4e500 --- /dev/null +++ b/tests/Functional/ProductModelTest.php @@ -0,0 +1,33 @@ +create(['slug' => $slug]); + + $repository = app(ProductModelInterface::class); + $returnModel = $repository->findBySlug($slug); + + $this->assertEquals($returnModel->toArray(), $expectedProduct->toArray()); + } + + /** @test */ + public function test_product_find_by_barcode_method() + { + $barcode = 123456789; + $expectedProduct = Product::factory()->create(['barcode' => $barcode]); + + $repository = app(ProductModelInterface::class); + $returnModel = $repository->findByBarcode($barcode); + + $this->assertEquals($returnModel->toArray(), $expectedProduct->toArray()); + } +} diff --git a/tests/Integration/ConsoleTest.php b/tests/Integration/ConsoleTest.php deleted file mode 100644 index 91cbf6428..000000000 --- a/tests/Integration/ConsoleTest.php +++ /dev/null @@ -1,33 +0,0 @@ -artisan('avored:install') - ->expectsQuestion('Would you like to install Dummy Data?', 'Yes') - ->expectsQuestion('What is your First Name?', 'admin') - ->expectsQuestion('What is your last Name?', 'admin') - ->expectsQuestion('What is your Email Address?', 'admin@admin.com') - ->expectsQuestion('What is your Password?', 'password') - ->expectsQuestion('Confirm your password again?', 'password') - ->assertExitCode(0); - } - - public function test_console_avored_admin_make_command() - { - Role::factory()->create(['name' => Role::ADMIN]); - $this->artisan('avored:admin:make') - ->expectsQuestion('What is your First Name?', 'admin') - ->expectsQuestion('What is your last Name?', 'admin') - ->expectsQuestion('What is your Email Address?', 'admin@admin.com') - ->expectsQuestion('What is your Password?', 'password') - ->expectsQuestion('Confirm your password again?', 'password') - ->assertExitCode(0); - } -} diff --git a/tests/AvoRedBaseTestCase.php b/tests/TestCase.php similarity index 52% rename from tests/AvoRedBaseTestCase.php rename to tests/TestCase.php index 81b7a5409..c920c0cb7 100644 --- a/tests/AvoRedBaseTestCase.php +++ b/tests/TestCase.php @@ -1,14 +1,23 @@ \AvoRed\Framework\Breadcrumb\Breadcrumb::class, - // 'Menu' => \AvoRed\Framework\Menu\Menu::class, - // 'Payment' => \AvoRed\Framework\Payment\Payment::class, - // 'Permission' => \AvoRed\Framework\Permission\Permission::class, - // 'Shipping' => \AvoRed\Framework\Shipping\Shipping::class, + 'Breadcrumb' => \AvoRed\Framework\Breadcrumb\Breadcrumb::class, + 'Menu' => \AvoRed\Framework\Menu\Menu::class, + 'Payment' => \AvoRed\Framework\Payment\Payment::class, + 'Permission' => \AvoRed\Framework\Permission\Permission::class, + 'Shipping' => \AvoRed\Framework\Shipping\Shipping::class, ]; } + /** + * Undocumented function + * + * @param string $routeName + * @return \Illuminate\Testing\TestResponse + */ + public function getAvoRed($routeName): TestResponse + { + return $this->createAdminUser(['is_super_admin' => 1]) + ->actingAs($this->user, 'admin') + ->get(route($routeName)); + } + /** + * Undocumented function + * + * @param string $routeName + * @param mixed $data + * @return \Illuminate\Testing\TestResponse + */ + public function postAvoRed($routeName, $data): TestResponse + { + return $this->createAdminUser(['is_super_admin' => 1]) + ->actingAs($this->user, 'admin') + ->post(route($routeName), $data); + } + /** * Undocumented function * @@ -89,4 +124,18 @@ public function getEnvironmentSetUp($app): void { $app['config']->set('app.key', 'base64:UTyp33UhGolgzCK5CJmT+hNHcA+dJyp3+oINtX+VoPI='); } + + /** + * Create an Admin user model. + * @param array $data + * @return self + */ + protected function createAdminUser($data = ['is_super_admin' => 1]): self + { + if (null === $this->user) { + $this->user = AdminUser::factory()->create($data); + } + + return $this; + } } diff --git a/tests/UnitTests/AdminUserRepositoryTest.php b/tests/UnitTests/AdminUserRepositoryTest.php deleted file mode 100644 index 16bf8d1d0..000000000 --- a/tests/UnitTests/AdminUserRepositoryTest.php +++ /dev/null @@ -1,17 +0,0 @@ -create(['email' => 'unittest@example.com']); - $adminUser = app(AdminUserModelInterface::class)->findByEmail('unittest@example.com'); - $this->assertEquals('unittest@example.com', $adminUser->email); - } -} diff --git a/tests/UnitTests/BaseRepositoryTest.php b/tests/UnitTests/BaseRepositoryTest.php deleted file mode 100644 index d0e955f5a..000000000 --- a/tests/UnitTests/BaseRepositoryTest.php +++ /dev/null @@ -1,56 +0,0 @@ -create(); - $adminUser = app(AdminUserModelInterface::class)->find($factoryAdminUser->id); - $this->assertEquals($factoryAdminUser->email, $adminUser->email); - $this->assertDatabaseHas('admin_users', ['id' => $factoryAdminUser->id]); - } - - public function test_base_repository_create_method() - { - $factoryAdminUser = AdminUser::factory()->make(); - $adminUser = app(AdminUserModelInterface::class)->create(array_merge(['password' => 'password'], $factoryAdminUser->toArray())); - $this->assertEquals($factoryAdminUser->email, $adminUser->email); - $this->assertDatabaseHas('admin_users', ['id' => $adminUser->id]); - } - - public function test_base_repository_delete_method() - { - $factoryAdminUser = AdminUser::factory()->create(); - app(AdminUserModelInterface::class)->delete($factoryAdminUser->id); - $this->assertDatabaseMissing('admin_users', ['id' => $factoryAdminUser->id]); - } - - public function test_base_repository_all_method() - { - AdminUser::factory(3)->create(); - $allUsers = app(AdminUserModelInterface::class)->all(); - $this->assertEquals(3, $allUsers->count()); - } - - public function test_base_repository_paginate_method() - { - AdminUser::factory(30)->create(); - $allUsers = app(AdminUserModelInterface::class)->paginate(); - $this->assertNotInstanceOf(Paginator::class, $allUsers); - } - - public function test_base_repository_query_method() - { - AdminUser::factory()->create(); - $allUsers = app(AdminUserModelInterface::class)->query(); - $this->assertNotInstanceOf(Builder::class, $allUsers); - } -} diff --git a/tests/UnitTests/RoleRepositoryTest.php b/tests/UnitTests/RoleRepositoryTest.php deleted file mode 100644 index 7b108830a..000000000 --- a/tests/UnitTests/RoleRepositoryTest.php +++ /dev/null @@ -1,23 +0,0 @@ -create(['name' => Role::ADMIN]); - $this->assertEquals(Role::ADMIN, $role->name); - } - - public function test_role_option_method() - { - Role::factory(2)->create(); - $options = app(RoleModelInterface::class)->options(); - $this->assertEquals(2, $options->count()); - } -} From 1492414c500205fd8192d98c972c8f5f619d0540 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Fri, 20 May 2022 22:42:46 +0000 Subject: [PATCH 38/48] Fix styling --- .php-cs-fixer.cache | 2 +- src/AvoRedServiceProvider.php | 8 +-- src/Cart/CartManager.php | 21 +++++--- src/Cart/CartProduct.php | 1 + .../Controllers/AttributeController.php | 6 ++- .../Controllers/CategoryController.php | 6 ++- src/Catalog/Controllers/ProductController.php | 8 +-- .../Controllers/PropertyController.php | 6 ++- src/Catalog/Requests/AttributeRequest.php | 2 +- src/Catalog/Requests/PropertyRequest.php | 2 +- src/Cms/Controllers/PageController.php | 6 +-- src/Cms/Requests/PageRequest.php | 2 +- .../Contracts/AddressModelInterface.php | 1 - .../Contracts/AttributeModelInterface.php | 2 +- src/Database/Contracts/BaseInterface.php | 2 +- .../Contracts/CategoryModelInterface.php | 5 +- .../Contracts/OrderModelInterface.php | 1 - .../Contracts/PermissionModelInterface.php | 3 -- .../Contracts/ProductModelInterface.php | 1 - src/Database/Models/AdminUser.php | 6 +-- src/Database/Models/CartProduct.php | 3 +- src/Database/Models/Category.php | 2 +- src/Database/Models/Customer.php | 6 ++- src/Database/Models/OauthClient.php | 2 +- src/Database/Models/Page.php | 1 + src/Database/Models/Product.php | 2 +- src/Database/Models/Property.php | 2 - src/Database/Models/Role.php | 1 - src/Database/Models/Subscriber.php | 2 +- src/Database/Repository/AddressRepository.php | 7 ++- .../Repository/AdminUserRepository.php | 6 +-- .../AttributeDropdownOptionRepository.php | 6 +-- .../Repository/AttributeRepository.php | 8 +-- .../Repository/CartProductRepository.php | 4 +- .../Repository/CategoryRepository.php | 23 ++++---- .../Repository/ConfigurationRepository.php | 5 +- .../Repository/CustomerRepository.php | 10 ++-- .../Repository/DocumentRepository.php | 4 +- .../Repository/OrderProductRepository.php | 4 +- src/Database/Repository/OrderRepository.php | 9 ++-- .../Repository/OrderStatusRepository.php | 7 ++- src/Database/Repository/PageRepository.php | 8 +-- .../Repository/PermissionRepository.php | 6 +-- src/Database/Repository/ProductRepository.php | 8 +-- .../Repository/PropertyRepository.php | 9 ++-- src/Database/Repository/RoleRepository.php | 7 ++- .../Repository/SubscriberRepository.php | 4 +- src/Document/Manager.php | 1 - .../Mutations/Auth/ForgotPasswordMutation.php | 8 ++- src/Graphql/Mutations/Auth/LoginMutation.php | 11 ++-- .../Mutations/Auth/RegisterMutation.php | 9 ++-- .../Mutations/Auth/ResetPasswordMutation.php | 9 ++-- .../Mutations/Cart/AddToCartMutation.php | 4 +- .../Mutations/Cart/DeleteCartMutation.php | 4 +- .../Mutations/Cart/UpdateCartMutation.php | 5 +- .../Customer/CreateAddressMutation.php | 23 ++++---- .../Customer/CreateSubscriberMutation.php | 6 +-- .../Customer/CustomerUpdateMutation.php | 5 +- .../Customer/DeleteAddressMutation.php | 3 +- .../Customer/UpdateAddressMutation.php | 22 ++++---- src/Graphql/Mutations/PlaceOrderMutation.php | 14 +++-- src/Graphql/Queries/AddressQuery.php | 6 +-- src/Graphql/Queries/AllAddressQuery.php | 4 +- src/Graphql/Queries/AllCategoryQuery.php | 4 +- src/Graphql/Queries/AllOrdersQuery.php | 6 +-- src/Graphql/Queries/CartItemsQuery.php | 10 ++-- src/Graphql/Queries/CategoryQuery.php | 9 ++-- src/Graphql/Queries/CountryOptionsQuery.php | 8 +-- src/Graphql/Queries/CustomerQuery.php | 6 +-- src/Graphql/Queries/LatestProductQuery.php | 4 +- src/Graphql/Queries/OrderQuery.php | 11 ++-- src/Graphql/Queries/PaymentQuery.php | 4 +- src/Graphql/Queries/ProductQuery.php | 6 +-- src/Graphql/Queries/ShippingQuery.php | 4 +- src/Graphql/Traits/AuthorizedTrait.php | 2 +- src/Graphql/Types/AddressType.php | 36 ++++++------- src/Graphql/Types/CartProductType.php | 18 +++---- src/Graphql/Types/CategoryType.php | 28 +++++----- src/Graphql/Types/CustomerType.php | 26 ++++----- src/Graphql/Types/NotificationType.php | 10 ++-- src/Graphql/Types/OptionType.php | 9 ++-- src/Graphql/Types/OrderType.php | 31 ++++++----- src/Graphql/Types/PaymentType.php | 10 ++-- src/Graphql/Types/ProductType.php | 53 ++++++++++--------- src/Graphql/Types/ShippingType.php | 10 ++-- src/Graphql/Types/SubscriberType.php | 16 +++--- src/Module/Console/ControllerMakeCommand.php | 4 +- src/Module/Console/ModuleInstallCommand.php | 2 +- src/Module/Manager.php | 10 ++-- src/Module/ModuleItem.php | 1 + src/Module/ModuleProvider.php | 2 - src/Order/Controllers/OrderController.php | 3 +- .../Controllers/OrderStatusController.php | 7 +-- src/Order/Events/OrderProductCreated.php | 3 +- .../Listeners/OrderProductCreatedListener.php | 2 - src/Permission/PermissionItem.php | 1 - src/Shipping/ShippingProvider.php | 1 - src/Support/Middleware/AdminAuth.php | 2 +- src/Support/Providers/ComponentsProvider.php | 2 +- src/Support/Providers/GraphqlProvider.php | 2 - src/System/Components/Form/Form.php | 1 - src/System/Components/Table/Header.php | 2 +- src/System/Composers/LayoutComposer.php | 2 +- src/System/Controllers/RoleController.php | 7 +-- src/Tab/Manager.php | 2 +- src/Tab/TabProvider.php | 2 - src/User/Controllers/LoginController.php | 3 +- .../Controllers/ResetPasswordController.php | 6 +-- src/User/Controllers/StaffController.php | 8 +-- src/User/Controllers/SubscriberController.php | 7 ++- .../Notifications/CustomerResetPassword.php | 4 +- src/User/Notifications/ResetPassword.php | 2 +- src/User/Requests/AdminLoginRequest.php | 2 +- src/User/Requests/AdminUserRequest.php | 2 +- tests/Feature/CategoryControllerTest.php | 4 +- tests/Feature/ConfigurationControllerTest.php | 2 +- tests/Feature/DashboardControllerTest.php | 1 + tests/Feature/LoginControllerTest.php | 2 +- tests/Feature/PageControllerTest.php | 1 - tests/Feature/ProductControllerTest.php | 4 +- tests/Functional/BreadcrumbTest.php | 2 +- tests/Functional/PermissionTest.php | 2 +- tests/TestCase.php | 5 +- 123 files changed, 394 insertions(+), 423 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index c10584166..8aaf0c448 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Order\/Events\/OrderProductCreated.php":1528893551,"src\/Order\/Controllers\/OrderStatusController.php":1400239856,"src\/Order\/Controllers\/OrderController.php":1537988571,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1812169795,"src\/Database\/Repository\/PageRepository.php":1296245559,"src\/Database\/Repository\/SubscriberRepository.php":2441220535,"src\/Database\/Repository\/CustomerRepository.php":935827715,"src\/Database\/Repository\/OrderProductRepository.php":2036702350,"src\/Database\/Repository\/CategoryRepository.php":2052188414,"src\/Database\/Repository\/ProductRepository.php":1539605481,"src\/Database\/Repository\/DocumentRepository.php":497435682,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/PropertyRepository.php":1963240101,"src\/Database\/Repository\/AttributeRepository.php":2007838458,"src\/Database\/Repository\/OrderRepository.php":4124839598,"src\/Database\/Repository\/RoleRepository.php":1176044799,"src\/Database\/Repository\/CartProductRepository.php":589455053,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":4216189234,"src\/Database\/Repository\/AdminUserRepository.php":2801591033,"src\/Database\/Repository\/ConfigurationRepository.php":971518208,"src\/Database\/Repository\/PermissionRepository.php":3025360127,"src\/Database\/Repository\/OrderStatusRepository.php":3241299236,"src\/Database\/Repository\/AddressRepository.php":207149573,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Contracts\/AddressModelInterface.php":3581688014,"src\/Database\/Contracts\/ProductModelInterface.php":3846104672,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/CategoryModelInterface.php":3667202206,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/PermissionModelInterface.php":1360075160,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/OrderModelInterface.php":3723550286,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/AttributeModelInterface.php":2224873832,"src\/Database\/Contracts\/BaseInterface.php":1813084432,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Models\/Category.php":1464399609,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/Product.php":2993975445,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Role.php":1752576467,"src\/Database\/Models\/OauthClient.php":1440842663,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/Customer.php":523575596,"src\/Database\/Models\/Property.php":1257858976,"src\/Database\/Models\/AdminUser.php":402903989,"src\/Database\/Models\/CartProduct.php":3113747468,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/Subscriber.php":2390864955,"src\/Database\/Models\/Page.php":616965477,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":564657769,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/Payment\/PaymentManager.php":1326422825,"src\/Module\/ModuleProvider.php":2092405550,"src\/Module\/ModuleItem.php":4245231948,"src\/Module\/Module.php":3950494461,"src\/Module\/Manager.php":680188364,"src\/Module\/Console\/ModuleInstallCommand.php":679095954,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ControllerMakeCommand.php":3204171975,"src\/Catalog\/Requests\/AttributeRequest.php":1147984769,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/PropertyRequest.php":4089735173,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Controllers\/AttributeController.php":775643906,"src\/Catalog\/Controllers\/PropertyController.php":4280995445,"src\/Catalog\/Controllers\/ProductController.php":2323923796,"src\/Catalog\/Controllers\/CategoryController.php":1450919641,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":451718423,"src\/User\/Requests\/AdminUserRequest.php":2143175587,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/LoginController.php":2239366889,"src\/User\/Controllers\/ResetPasswordController.php":226987416,"src\/User\/Controllers\/SubscriberController.php":1909420315,"src\/User\/Controllers\/StaffController.php":2114448292,"src\/User\/Notifications\/ResetPassword.php":3793034681,"src\/User\/Notifications\/CustomerResetPassword.php":4134193684,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":1249849406,"src\/Document\/DocumentProvider.php":1459771598,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/ShippingProvider.php":2285804052,"src\/Shipping\/Manager.php":1350564326,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabProvider.php":3720276227,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/Manager.php":3567895349,"src\/System\/Composers\/LayoutComposer.php":2581943850,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Form.php":3482749620,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":976386463,"src\/System\/Components\/Table.php":185782146,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Controllers\/RoleController.php":1472651088,"src\/System\/Console\/InstallCommand.php":1971759778,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/Cms\/Requests\/PageRequest.php":984930776,"src\/Cms\/Controllers\/PageController.php":4158793068,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/AdminAuth.php":2346265437,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/ComponentsProvider.php":955346371,"src\/Support\/Providers\/GraphqlProvider.php":1132517345,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Graphql\/Types\/CustomerType.php":686829122,"src\/Graphql\/Types\/SubscriberType.php":3891506096,"src\/Graphql\/Types\/PaymentType.php":1195970565,"src\/Graphql\/Types\/ShippingType.php":1180121003,"src\/Graphql\/Types\/NotificationType.php":3787412298,"src\/Graphql\/Types\/CategoryType.php":602024373,"src\/Graphql\/Types\/ProductType.php":2694262131,"src\/Graphql\/Types\/OptionType.php":4259117618,"src\/Graphql\/Types\/CartProductType.php":2523479532,"src\/Graphql\/Types\/AddressType.php":2174043942,"src\/Graphql\/Types\/OrderType.php":343463084,"src\/Graphql\/Traits\/AuthorizedTrait.php":2692613217,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":1690985432,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3073249732,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":2348479573,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":550413192,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":40428100,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":3982908288,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":981867420,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1023285160,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":4160146473,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":1579556282,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":3210081622,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":604650241,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":3763794885,"src\/Graphql\/Queries\/OrderQuery.php":834093877,"src\/Graphql\/Queries\/ShippingQuery.php":3099769485,"src\/Graphql\/Queries\/LatestProductQuery.php":2014650160,"src\/Graphql\/Queries\/ProductQuery.php":31702862,"src\/Graphql\/Queries\/AllOrdersQuery.php":3040324227,"src\/Graphql\/Queries\/CountryOptionsQuery.php":1928709050,"src\/Graphql\/Queries\/CustomerQuery.php":3121299700,"src\/Graphql\/Queries\/CategoryQuery.php":2428543783,"src\/Graphql\/Queries\/AllAddressQuery.php":4220698610,"src\/Graphql\/Queries\/CartItemsQuery.php":2414856708,"src\/Graphql\/Queries\/PaymentQuery.php":609968158,"src\/Graphql\/Queries\/AllCategoryQuery.php":3384162295,"src\/Graphql\/Queries\/AddressQuery.php":3458096766,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuInterface.php":1575349914,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Cart\/CartManager.php":81526128,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartProduct.php":2851308658,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionItem.php":1303807498,"src\/Permission\/Permission.php":3394431707}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/Payment\/PaymentManager.php":1326422825,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/System\/Components\/Table.php":185782146,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Form.php":3658375489,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":2263340862,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Console\/InstallCommand.php":1971759778,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/System\/Controllers\/RoleController.php":1789155981,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Composers\/LayoutComposer.php":2864903115,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Menu\/MenuInterface.php":1575349914,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Middleware\/AdminAuth.php":1545878319,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Support\/Providers\/ComponentsProvider.php":3337118250,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/GraphqlProvider.php":1773456419,"src\/Shipping\/ShippingProvider.php":563008062,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/Manager.php":1350564326,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartManager.php":27883090,"src\/Cart\/CartProduct.php":2682517421,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Controllers\/SubscriberController.php":1204762325,"src\/User\/Controllers\/StaffController.php":1673603622,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/ResetPasswordController.php":1551283443,"src\/User\/Controllers\/LoginController.php":1493493054,"src\/User\/Notifications\/CustomerResetPassword.php":1854344558,"src\/User\/Notifications\/ResetPassword.php":281255553,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/AdminUserRequest.php":3299517768,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":147030067,"src\/Permission\/PermissionItem.php":1216083955,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/Permission.php":3394431707,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Order\/Events\/OrderProductCreated.php":902980050,"src\/Order\/Controllers\/OrderStatusController.php":4057285300,"src\/Order\/Controllers\/OrderController.php":3552000905,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1367006267,"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Catalog\/Controllers\/ProductController.php":3041624286,"src\/Catalog\/Controllers\/PropertyController.php":486848296,"src\/Catalog\/Controllers\/AttributeController.php":3969430835,"src\/Catalog\/Controllers\/CategoryController.php":630434366,"src\/Catalog\/Requests\/AttributeRequest.php":301020724,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Requests\/PropertyRequest.php":4220770750,"src\/AvoRedServiceProvider.php":3401229920,"src\/Cms\/Controllers\/PageController.php":3452992235,"src\/Cms\/Requests\/PageRequest.php":54003558,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/TabProvider.php":534397509,"src\/Tab\/Manager.php":3225115029,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":1449040286,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":1496069681,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":2979486623,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":1414822113,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":1123422067,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":3077369203,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":1042937758,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":3974451978,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1121150924,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3528440643,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":151007228,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":2382448987,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":4258363677,"src\/Graphql\/Traits\/AuthorizedTrait.php":4010113928,"src\/Graphql\/Types\/CategoryType.php":1226251382,"src\/Graphql\/Types\/NotificationType.php":2991627422,"src\/Graphql\/Types\/CustomerType.php":1096119925,"src\/Graphql\/Types\/CartProductType.php":1016487920,"src\/Graphql\/Types\/PaymentType.php":1483562530,"src\/Graphql\/Types\/OptionType.php":654375420,"src\/Graphql\/Types\/OrderType.php":2525955635,"src\/Graphql\/Types\/ShippingType.php":3184156584,"src\/Graphql\/Types\/ProductType.php":3378852402,"src\/Graphql\/Types\/SubscriberType.php":1951512283,"src\/Graphql\/Types\/AddressType.php":3721841296,"src\/Graphql\/Queries\/AddressQuery.php":3594963314,"src\/Graphql\/Queries\/AllOrdersQuery.php":3568313876,"src\/Graphql\/Queries\/CustomerQuery.php":4292589363,"src\/Graphql\/Queries\/ShippingQuery.php":1215874193,"src\/Graphql\/Queries\/LatestProductQuery.php":3127789590,"src\/Graphql\/Queries\/CategoryQuery.php":2432529982,"src\/Graphql\/Queries\/CountryOptionsQuery.php":4180943713,"src\/Graphql\/Queries\/CartItemsQuery.php":3072988608,"src\/Graphql\/Queries\/AllAddressQuery.php":936472871,"src\/Graphql\/Queries\/AllCategoryQuery.php":2435927149,"src\/Graphql\/Queries\/OrderQuery.php":2014638185,"src\/Graphql\/Queries\/PaymentQuery.php":3777538806,"src\/Graphql\/Queries\/ProductQuery.php":1278738294,"src\/Document\/DocumentProvider.php":1459771598,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":255345964,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Module\/Module.php":3950494461,"src\/Module\/Console\/ModuleInstallCommand.php":3023259964,"src\/Module\/Console\/ControllerMakeCommand.php":2227255476,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/ModuleItem.php":4207189860,"src\/Module\/ModuleProvider.php":3185570381,"src\/Module\/Manager.php":11475994,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/Product.php":1273764797,"src\/Database\/Models\/Subscriber.php":3670496531,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/CartProduct.php":3136654195,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/Customer.php":2263828288,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/Page.php":2763575681,"src\/Database\/Models\/OauthClient.php":254473326,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/Role.php":1513439857,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Property.php":112018056,"src\/Database\/Models\/Category.php":754484997,"src\/Database\/Models\/AdminUser.php":4240000469,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/PermissionModelInterface.php":2672896628,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/CategoryModelInterface.php":599097405,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/BaseInterface.php":2976052884,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AddressModelInterface.php":3466750629,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Contracts\/ProductModelInterface.php":833968823,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/AttributeModelInterface.php":1940938768,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/OrderModelInterface.php":1403694963,"src\/Database\/Repository\/CustomerRepository.php":1326674603,"src\/Database\/Repository\/CategoryRepository.php":1321759123,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/ConfigurationRepository.php":416355350,"src\/Database\/Repository\/PermissionRepository.php":2119258321,"src\/Database\/Repository\/PageRepository.php":2198718872,"src\/Database\/Repository\/AddressRepository.php":4248393077,"src\/Database\/Repository\/CartProductRepository.php":3120284469,"src\/Database\/Repository\/ProductRepository.php":1985066379,"src\/Database\/Repository\/OrderRepository.php":2007359767,"src\/Database\/Repository\/OrderProductRepository.php":2946868763,"src\/Database\/Repository\/AttributeRepository.php":319881864,"src\/Database\/Repository\/RoleRepository.php":5919928,"src\/Database\/Repository\/DocumentRepository.php":3566968401,"src\/Database\/Repository\/SubscriberRepository.php":2081568623,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":288537803,"src\/Database\/Repository\/AdminUserRepository.php":1417871142,"src\/Database\/Repository\/OrderStatusRepository.php":801135838,"src\/Database\/Repository\/PropertyRepository.php":981116305,"tests\/Feature\/LoginControllerTest.php":2993789982,"tests\/Feature\/ConfigurationControllerTest.php":2250951350,"tests\/Feature\/OrderStatusControllerTest.php":4239108055,"tests\/Feature\/CategoryControllerTest.php":1285566633,"tests\/Feature\/DashboardControllerTest.php":3484214895,"tests\/Feature\/AuthControllerTest.php":334195238,"tests\/Feature\/RoleControllerTest.php":3372848350,"tests\/Feature\/AdminUserControllerTest.php":3108252446,"tests\/Feature\/ProductControllerTest.php":3051194665,"tests\/Feature\/PageControllerTest.php":1543191345,"tests\/Feature\/OrderControllerTest.php":1550645149,"tests\/TestCase.php":3073410588,"tests\/Functional\/ProductModelTest.php":52193424,"tests\/Functional\/BreadcrumbTest.php":2387292147,"tests\/Functional\/PermissionTest.php":724699872}} \ No newline at end of file diff --git a/src/AvoRedServiceProvider.php b/src/AvoRedServiceProvider.php index 2f89dd76b..3d0f31689 100644 --- a/src/AvoRedServiceProvider.php +++ b/src/AvoRedServiceProvider.php @@ -10,17 +10,17 @@ use AvoRed\Framework\Module\ModuleProvider; use AvoRed\Framework\Payment\PaymentProvider; use AvoRed\Framework\Permission\PermissionProvider; +use AvoRed\Framework\Shipping\ShippingProvider; use AvoRed\Framework\Support\Middleware\AdminAuth; use AvoRed\Framework\Support\Middleware\Permission as MiddlewarePermission; use AvoRed\Framework\Support\Middleware\RedirectIfAdminAuth; use AvoRed\Framework\Support\Providers\ComponentsProvider; +use AvoRed\Framework\Support\Providers\EventsProvider; use AvoRed\Framework\Support\Providers\GraphqlProvider; use AvoRed\Framework\Support\Providers\ModelsProvider; -use AvoRed\Framework\Shipping\ShippingProvider; -use AvoRed\Framework\Support\Providers\EventsProvider; +use AvoRed\Framework\System\Composers\LayoutComposer; use AvoRed\Framework\System\Console\AdminMakeCommand; use AvoRed\Framework\System\Console\InstallCommand; -use AvoRed\Framework\System\Composers\LayoutComposer; use AvoRed\Framework\Tab\TabProvider; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\View; @@ -46,7 +46,7 @@ class AvoRedServiceProvider extends ServiceProvider PaymentProvider::class, PermissionProvider::class, ShippingProvider::class, - TabProvider::class + TabProvider::class, ]; /** diff --git a/src/Cart/CartManager.php b/src/Cart/CartManager.php index c2f0b1167..4de8cfc29 100644 --- a/src/Cart/CartManager.php +++ b/src/Cart/CartManager.php @@ -3,16 +3,16 @@ namespace AvoRed\Framework\Cart; use AvoRed\Framework\Database\Contracts\CartProductModelInterface; -use Illuminate\Support\Collection; -use AvoRed\Framework\Database\Models\Product; use AvoRed\Framework\Database\Contracts\ProductModelInterface; use AvoRed\Framework\Database\Models\CartProduct; +use AvoRed\Framework\Database\Models\Product; +use Illuminate\Support\Collection; class CartManager { /** * Visitor token - * @var string $visitor + * @var string */ protected $visitor; @@ -55,6 +55,7 @@ public function destroy(string $slug) $product = $this->getProductBySlug($slug); $this->cartProductRepository->query()->where('product_id', $product->id)->where('visitor_id', $this->visitor())->delete(); } + /** * update Product from Cart By Given Slug. * @param string $slug @@ -62,14 +63,16 @@ public function destroy(string $slug) */ public function update(string $slug, $qty) { - /** @var Product $product */ + /** @var Product $product */ $product = $this->productRepository->findBySlug($slug); $cartProduct = $this->getCartProduct($product->id); $cartProduct->qty = $qty; $cartProduct->save(); + return $this; } + /** * Add Product to Cart By Given Slug. * @param string $slug @@ -79,7 +82,7 @@ public function update(string $slug, $qty) */ public function add(string $slug, float $qty = 1, array $attributes = []): CartProduct { - /** @var Product $product */ + /** @var Product $product */ $product = $this->productRepository->findBySlug($slug); $cartProduct = $this->getCartProduct($product->id); @@ -90,7 +93,7 @@ public function add(string $slug, float $qty = 1, array $attributes = []): CartP $data = [ 'visitor_id' => $this->visitor, 'product_id' => $product->id, - 'qty' => $qty + 'qty' => $qty, ]; $cartProduct = $this->cartProductRepository->create($data); } @@ -102,6 +105,7 @@ public function getProductBySlug(string $slug): Product { return $this->productRepository->findBySlug($slug); } + /** * * @param string $productId @@ -115,10 +119,11 @@ public function getCartProduct(string $productId): ?CartProduct ->where('product_id', $productId) ->first(); } + /** * To check if the Product Existing in the Cart * @param string $slug - * @return boolean + * @return bool */ protected function exist($slug): bool { @@ -149,13 +154,13 @@ public function visitor($visitor = null) { if ($visitor) { $this->visitor = $visitor; + return $this; } return $this->visitor; } - /** * Update the Session Collection. * @return self $this diff --git a/src/Cart/CartProduct.php b/src/Cart/CartProduct.php index 0da5eebd0..96d4816ae 100644 --- a/src/Cart/CartProduct.php +++ b/src/Cart/CartProduct.php @@ -181,6 +181,7 @@ public function price($price = null) return $this; } } + public function formattedPrice() { return number_format((float) $this->price, 2); diff --git a/src/Catalog/Controllers/AttributeController.php b/src/Catalog/Controllers/AttributeController.php index 5168865fa..196d2c94d 100644 --- a/src/Catalog/Controllers/AttributeController.php +++ b/src/Catalog/Controllers/AttributeController.php @@ -12,9 +12,10 @@ class AttributeController extends Controller { /** - * @var AvoRed\Framework\Database\Repository\AttributeRepository $attributeRepository + * @var AvoRed\Framework\Database\Repository\AttributeRepository */ protected $attributeRepository; + /** * * @param AttributeRepositroy $repository @@ -99,6 +100,7 @@ public function update(AttributeRequest $request, Attribute $attribute) { $attribute->update($request->all()); $this->attributeRepository->saveAttributeDropdownOptions($request, $attribute); + return redirect(route('admin.attribute.index')); } @@ -114,7 +116,7 @@ public function destroy(Attribute $attribute) return new JsonResponse([ 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.attribute')]) + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.attribute')]), ]); } } diff --git a/src/Catalog/Controllers/CategoryController.php b/src/Catalog/Controllers/CategoryController.php index c7be28045..45c77a21e 100644 --- a/src/Catalog/Controllers/CategoryController.php +++ b/src/Catalog/Controllers/CategoryController.php @@ -12,9 +12,10 @@ class CategoryController extends Controller { /** - * @var CategoryRepository $categoryRepository + * @var CategoryRepository */ protected $categoryRepository; + /** * * @param CategoryRepositroy $repository @@ -79,6 +80,7 @@ public function edit(Category $category) $options = $this->categoryRepository ->options(); $options->pull($category->id); + return view('avored::catalog.category.edit') ->with('category', $category) ->with('options', $options) @@ -111,7 +113,7 @@ public function destroy(Category $category) return new JsonResponse([ 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.category')]) + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.category')]), ]); } } diff --git a/src/Catalog/Controllers/ProductController.php b/src/Catalog/Controllers/ProductController.php index 8b3bf027f..4d114527e 100644 --- a/src/Catalog/Controllers/ProductController.php +++ b/src/Catalog/Controllers/ProductController.php @@ -13,14 +13,15 @@ class ProductController extends Controller { /** - * @var AvoRed\Framework\Database\Repository\ProductRepository $productRepository + * @var AvoRed\Framework\Database\Repository\ProductRepository */ protected $productRepository; /** - * @var AvoRed\Framework\Database\Repository\CategoryRepository $categoryRepository + * @var AvoRed\Framework\Database\Repository\CategoryRepository */ protected $categoryRepository; + /** * * @param ProductRepositroy $repository @@ -109,6 +110,7 @@ public function update(ProductRequest $request, Product $product) { $product->update($request->all()); $this->productRepository->saveProductCategories($product, $request); + return redirect(route('admin.product.index')); } @@ -124,7 +126,7 @@ public function destroy(Product $product) return new JsonResponse([ 'success' => true, - 'message' => __('avored::system.success_delete_message', ['product' => __('avored::system.product')]) + 'message' => __('avored::system.success_delete_message', ['product' => __('avored::system.product')]), ]); } } diff --git a/src/Catalog/Controllers/PropertyController.php b/src/Catalog/Controllers/PropertyController.php index 1d5f4e95e..08fe25df5 100644 --- a/src/Catalog/Controllers/PropertyController.php +++ b/src/Catalog/Controllers/PropertyController.php @@ -12,9 +12,10 @@ class PropertyController extends Controller { /** - * @var PropertyRepository $propertyRepository + * @var PropertyRepository */ protected $propertyRepository; + /** * * @param PropertyRepositroy $repository @@ -103,6 +104,7 @@ public function update(PropertyRequest $request, Property $property) { $property->update($request->all()); $this->propertyRepository->savePropertyDropdown($request, $property); + return redirect(route('admin.property.index')); } @@ -118,7 +120,7 @@ public function destroy(Property $property) return new JsonResponse([ 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.property')]) + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.property')]), ]); } } diff --git a/src/Catalog/Requests/AttributeRequest.php b/src/Catalog/Requests/AttributeRequest.php index f3e49e44e..eff56f0fd 100644 --- a/src/Catalog/Requests/AttributeRequest.php +++ b/src/Catalog/Requests/AttributeRequest.php @@ -26,7 +26,7 @@ public function rules() return [ 'name' => 'required', 'slug' => 'required', - 'display_as' => 'required' + 'display_as' => 'required', ]; } } diff --git a/src/Catalog/Requests/PropertyRequest.php b/src/Catalog/Requests/PropertyRequest.php index c4612dc7a..fe98781bf 100644 --- a/src/Catalog/Requests/PropertyRequest.php +++ b/src/Catalog/Requests/PropertyRequest.php @@ -25,7 +25,7 @@ public function rules() { return [ 'name' => 'required', - 'slug' => 'required' + 'slug' => 'required', ]; } } diff --git a/src/Cms/Controllers/PageController.php b/src/Cms/Controllers/PageController.php index 84ab0fddf..3177c9b39 100644 --- a/src/Cms/Controllers/PageController.php +++ b/src/Cms/Controllers/PageController.php @@ -5,7 +5,6 @@ use AvoRed\Framework\Cms\Requests\PageRequest; use AvoRed\Framework\Database\Contracts\PageModelInterface; use AvoRed\Framework\Database\Models\Page; -use AvoRed\Framework\Permission\Permission; use AvoRed\Framework\Tab\Tab; use Illuminate\Http\JsonResponse; use Illuminate\Routing\Controller; @@ -13,9 +12,10 @@ class PageController extends Controller { /** - * @var PageRepository $pageRepository + * @var PageRepository */ protected $pageRepository; + /** * * @param PageRepositroy $repository @@ -106,7 +106,7 @@ public function destroy(Page $page) return new JsonResponse([ 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.page')]) + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.page')]), ]); } } diff --git a/src/Cms/Requests/PageRequest.php b/src/Cms/Requests/PageRequest.php index cd3403a26..39aef0247 100644 --- a/src/Cms/Requests/PageRequest.php +++ b/src/Cms/Requests/PageRequest.php @@ -25,7 +25,7 @@ public function rules() { return [ 'name' => 'required', - 'slug' => 'required' + 'slug' => 'required', ]; } } diff --git a/src/Database/Contracts/AddressModelInterface.php b/src/Database/Contracts/AddressModelInterface.php index 98e112c23..3172d5dbd 100644 --- a/src/Database/Contracts/AddressModelInterface.php +++ b/src/Database/Contracts/AddressModelInterface.php @@ -3,7 +3,6 @@ namespace AvoRed\Framework\Database\Contracts; use Illuminate\Database\Eloquent\Collection; -use AvoRed\Framework\Database\Models\Address; interface AddressModelInterface extends BaseInterface { diff --git a/src/Database/Contracts/AttributeModelInterface.php b/src/Database/Contracts/AttributeModelInterface.php index e6cae5a85..c631cc0c9 100644 --- a/src/Database/Contracts/AttributeModelInterface.php +++ b/src/Database/Contracts/AttributeModelInterface.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Database\Contracts; -use AvoRed\Framework\Database\Models\Attribute; use AvoRed\Framework\Catalog\Requests\AttributeRequest; +use AvoRed\Framework\Database\Models\Attribute; interface AttributeModelInterface extends BaseInterface { diff --git a/src/Database/Contracts/BaseInterface.php b/src/Database/Contracts/BaseInterface.php index d23fc38d2..bd19f51ef 100644 --- a/src/Database/Contracts/BaseInterface.php +++ b/src/Database/Contracts/BaseInterface.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Database\Contracts; -use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Pagination\LengthAwarePaginator; diff --git a/src/Database/Contracts/CategoryModelInterface.php b/src/Database/Contracts/CategoryModelInterface.php index e0f0c70f6..797fa6030 100644 --- a/src/Database/Contracts/CategoryModelInterface.php +++ b/src/Database/Contracts/CategoryModelInterface.php @@ -2,9 +2,9 @@ namespace AvoRed\Framework\Database\Contracts; -use Illuminate\Http\Request; -use Illuminate\Database\Eloquent\Collection; use AvoRed\Framework\Database\Models\Category; +use Illuminate\Database\Eloquent\Collection; +use Illuminate\Http\Request; use Illuminate\Support\Collection as SupportCollection; interface CategoryModelInterface extends BaseInterface @@ -16,7 +16,6 @@ interface CategoryModelInterface extends BaseInterface */ public function findBySlug(string $slug): Category; - /** * Get All Category from the database. * @return \Illuminate\Database\Eloquent\Collection $categories diff --git a/src/Database/Contracts/OrderModelInterface.php b/src/Database/Contracts/OrderModelInterface.php index b2eecff44..f8012551e 100644 --- a/src/Database/Contracts/OrderModelInterface.php +++ b/src/Database/Contracts/OrderModelInterface.php @@ -2,7 +2,6 @@ namespace AvoRed\Framework\Database\Contracts; -use Illuminate\Database\Eloquent\Collection; use Illuminate\Pagination\LengthAwarePaginator; interface OrderModelInterface extends BaseInterface diff --git a/src/Database/Contracts/PermissionModelInterface.php b/src/Database/Contracts/PermissionModelInterface.php index 0902ed869..6653eccda 100644 --- a/src/Database/Contracts/PermissionModelInterface.php +++ b/src/Database/Contracts/PermissionModelInterface.php @@ -2,9 +2,6 @@ namespace AvoRed\Framework\Database\Contracts; -use Illuminate\Database\Eloquent\Collection; -use AvoRed\Framework\Database\Models\Permission; - interface PermissionModelInterface extends BaseInterface { } diff --git a/src/Database/Contracts/ProductModelInterface.php b/src/Database/Contracts/ProductModelInterface.php index f268d7e44..f996d15b6 100644 --- a/src/Database/Contracts/ProductModelInterface.php +++ b/src/Database/Contracts/ProductModelInterface.php @@ -3,7 +3,6 @@ namespace AvoRed\Framework\Database\Contracts; use AvoRed\Framework\Catalog\Requests\ProductRequest; -use Illuminate\Database\Eloquent\Collection; use AvoRed\Framework\Database\Models\Product; use Illuminate\Pagination\LengthAwarePaginator; diff --git a/src/Database/Models/AdminUser.php b/src/Database/Models/AdminUser.php index 117e8ffbf..7c5db779e 100644 --- a/src/Database/Models/AdminUser.php +++ b/src/Database/Models/AdminUser.php @@ -2,9 +2,9 @@ namespace AvoRed\Framework\Database\Models; -use Illuminate\Notifications\Notifiable; use AvoRed\Framework\User\Notifications\ResetPassword; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Notifications\Notifiable; use Illuminate\Support\Facades\Hash; class AdminUser extends BaseModel @@ -66,6 +66,7 @@ public function getImagePathUrlAttribute() if (empty($this->imagePath)) { return 'https://place-hold.it/250x250'; } + return asset('storage' . DIRECTORY_SEPARATOR . $this->imagePath->path); } @@ -88,7 +89,6 @@ public function setPasrdAttribute($val) $this->attributes['password'] = Hash::make($val); } - /** * To check if user has permission to access the given route name. * @return \Illuminate\Database\Eloquent\Collection $permissions @@ -98,11 +98,11 @@ public function permissions() dd($this->role->permissions); } - public function role() { return $this->belongsTo(Role::class); } + /** * To check if user has permission to access the given route name. * @return bool diff --git a/src/Database/Models/CartProduct.php b/src/Database/Models/CartProduct.php index 68b12f641..ee2edd63f 100644 --- a/src/Database/Models/CartProduct.php +++ b/src/Database/Models/CartProduct.php @@ -3,7 +3,6 @@ namespace AvoRed\Framework\Database\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; -use Laravel\Passport\ClientRepository; class CartProduct extends BaseModel { @@ -26,7 +25,7 @@ class CartProduct extends BaseModel 'visitor_id', 'product_id', 'qty', - 'status' + 'status', ]; /** diff --git a/src/Database/Models/Category.php b/src/Database/Models/Category.php index cb3ce2786..1e1e9159b 100644 --- a/src/Database/Models/Category.php +++ b/src/Database/Models/Category.php @@ -17,7 +17,7 @@ class Category extends BaseModel 'description', 'meta_title', 'meta_description', - 'parent_id' + 'parent_id', ]; /** diff --git a/src/Database/Models/Customer.php b/src/Database/Models/Customer.php index e21e60526..90cc11f32 100644 --- a/src/Database/Models/Customer.php +++ b/src/Database/Models/Customer.php @@ -2,9 +2,9 @@ namespace AvoRed\Framework\Database\Models; -use Illuminate\Notifications\Notifiable; use AvoRed\Framework\User\Notifications\CustomerResetPassword; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Notifications\Notifiable; use Laravel\Passport\ClientRepository; use Laravel\Passport\HasApiTokens; @@ -70,6 +70,7 @@ public function getImagePathUrlAttribute() if ($this->attributes['image_path'] === null) { return 'https://placehold.it/250x250'; } + return asset('storage/'.$this->attributes['image_path']); } @@ -102,14 +103,17 @@ public function addresses() { return $this->hasMany(Address::class); } + public function setPasswordAttribute($value) { return $this->attributes['password'] = bcrypt($value); } + public function getPasswordAttribute($value) { return $this->attributes['password']; } + /** * To check if user has permission to access the given route name. * @return bool diff --git a/src/Database/Models/OauthClient.php b/src/Database/Models/OauthClient.php index 10d48f222..909076e3d 100644 --- a/src/Database/Models/OauthClient.php +++ b/src/Database/Models/OauthClient.php @@ -14,7 +14,7 @@ class OauthClient extends Client * @var array */ protected $fillable = [ - 'name', 'secret', 'provider', 'redirect', 'personal_access_client', 'password_client', 'revoked' + 'name', 'secret', 'provider', 'redirect', 'personal_access_client', 'password_client', 'revoked', ]; diff --git a/src/Database/Models/Page.php b/src/Database/Models/Page.php index a49c1d14c..12e08ee9f 100644 --- a/src/Database/Models/Page.php +++ b/src/Database/Models/Page.php @@ -39,6 +39,7 @@ public function getContent() // } // return $matches[1] ? substr($matches[0], 1) : "{$widgetContent}{$whitespace}"; }; + return preg_replace_callback($pattern, $callback, $content); } } diff --git a/src/Database/Models/Product.php b/src/Database/Models/Product.php index 22313f7c2..90063970a 100644 --- a/src/Database/Models/Product.php +++ b/src/Database/Models/Product.php @@ -62,7 +62,7 @@ class Product extends BaseModel public function categories() { return $this->belongsToMany(Category::class) - ->using(new class () extends Pivot { + ->using(new class() extends Pivot { use UuidTrait; }) ->withTimestamps(); diff --git a/src/Database/Models/Property.php b/src/Database/Models/Property.php index ab1d8b249..5d7543845 100644 --- a/src/Database/Models/Property.php +++ b/src/Database/Models/Property.php @@ -2,9 +2,7 @@ namespace AvoRed\Framework\Database\Models; -use AvoRed\Framework\Database\Traits\UuidTrait; use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Database\Eloquent\Relations\Pivot; use Illuminate\Support\Collection; class Property extends BaseModel diff --git a/src/Database/Models/Role.php b/src/Database/Models/Role.php index 3d82cb16a..ccc8fd1e1 100644 --- a/src/Database/Models/Role.php +++ b/src/Database/Models/Role.php @@ -19,7 +19,6 @@ class Role extends BaseModel */ protected $fillable = ['name', 'description']; - public function hasPermission($routes) { $modelPermissions = $this->permissions->pluck('name'); diff --git a/src/Database/Models/Subscriber.php b/src/Database/Models/Subscriber.php index 6b80188ab..10bb77f3b 100644 --- a/src/Database/Models/Subscriber.php +++ b/src/Database/Models/Subscriber.php @@ -14,7 +14,7 @@ class Subscriber extends BaseModel protected $fillable = [ 'customer_id', 'email', - 'status' + 'status', ]; /** diff --git a/src/Database/Repository/AddressRepository.php b/src/Database/Repository/AddressRepository.php index 3850095af..faaf0a4aa 100644 --- a/src/Database/Repository/AddressRepository.php +++ b/src/Database/Repository/AddressRepository.php @@ -2,14 +2,14 @@ namespace AvoRed\Framework\Database\Repository; -use Illuminate\Database\Eloquent\Collection; -use AvoRed\Framework\Database\Models\Address; use AvoRed\Framework\Database\Contracts\AddressModelInterface; +use AvoRed\Framework\Database\Models\Address; +use Illuminate\Database\Eloquent\Collection; class AddressRepository extends BaseRepository implements AddressModelInterface { /** - * @var Address $model + * @var Address */ protected $model; @@ -30,7 +30,6 @@ public function model(): Address return $this->model; } - /** * Get All Addresses from Database via User Id. * @param int $userId diff --git a/src/Database/Repository/AdminUserRepository.php b/src/Database/Repository/AdminUserRepository.php index bbbc9e017..1aabefffd 100644 --- a/src/Database/Repository/AdminUserRepository.php +++ b/src/Database/Repository/AdminUserRepository.php @@ -2,14 +2,14 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\AdminUser; use AvoRed\Framework\Database\Contracts\AdminUserModelInterface; +use AvoRed\Framework\Database\Models\AdminUser; class AdminUserRepository extends BaseRepository implements AdminUserModelInterface { /** * Filterable Fields - * @var array $filterType + * @var array */ protected $filterFields = [ 'first_name', @@ -18,7 +18,7 @@ class AdminUserRepository extends BaseRepository implements AdminUserModelInterf ]; /** - * @var AdminUser $model + * @var AdminUser */ protected $model; diff --git a/src/Database/Repository/AttributeDropdownOptionRepository.php b/src/Database/Repository/AttributeDropdownOptionRepository.php index bda2db4ce..ebbba796a 100644 --- a/src/Database/Repository/AttributeDropdownOptionRepository.php +++ b/src/Database/Repository/AttributeDropdownOptionRepository.php @@ -2,19 +2,19 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\AttributeDropdownOption; use AvoRed\Framework\Database\Contracts\AttributeDropdownOptionModelInterface; +use AvoRed\Framework\Database\Models\AttributeDropdownOption; class AttributeDropdownOptionRepository extends BaseRepository implements AttributeDropdownOptionModelInterface { /** - * @var AttributeDropdownOption $model + * @var AttributeDropdownOption */ protected $model; /** * Filterable Fields - * @var array $filterType + * @var array */ protected $filterFields = [ 'name', diff --git a/src/Database/Repository/AttributeRepository.php b/src/Database/Repository/AttributeRepository.php index 5fc1a0d63..034e58619 100644 --- a/src/Database/Repository/AttributeRepository.php +++ b/src/Database/Repository/AttributeRepository.php @@ -3,8 +3,8 @@ namespace AvoRed\Framework\Database\Repository; use AvoRed\Framework\Catalog\Requests\AttributeRequest; -use AvoRed\Framework\Database\Models\Attribute; use AvoRed\Framework\Database\Contracts\AttributeModelInterface; +use AvoRed\Framework\Database\Models\Attribute; use AvoRed\Framework\Database\Traits\FilterTrait; class AttributeRepository extends BaseRepository implements AttributeModelInterface @@ -12,13 +12,13 @@ class AttributeRepository extends BaseRepository implements AttributeModelInterf use FilterTrait; /** - * @var Attribute $model + * @var Attribute */ protected $model; /** * Filterable Fields - * @var array $filterType + * @var array */ protected $filterFields = [ 'name', @@ -67,7 +67,7 @@ public function saveAttributeDropdownOptions(AttributeRequest $request, Attribut $options->push($key); } $deletedIds = $beforeAttributeIds->filter(function ($attributeId) use ($options) { - return !$options->contains($attributeId); + return ! $options->contains($attributeId); }); foreach ($deletedIds as $key => $deletedId) { diff --git a/src/Database/Repository/CartProductRepository.php b/src/Database/Repository/CartProductRepository.php index 608cf6ffb..29a94d350 100644 --- a/src/Database/Repository/CartProductRepository.php +++ b/src/Database/Repository/CartProductRepository.php @@ -2,13 +2,13 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\CartProduct; use AvoRed\Framework\Database\Contracts\CartProductModelInterface; +use AvoRed\Framework\Database\Models\CartProduct; class CartProductRepository extends BaseRepository implements CartProductModelInterface { /** - * @var CartProduct $model + * @var CartProduct */ protected $model; diff --git a/src/Database/Repository/CategoryRepository.php b/src/Database/Repository/CategoryRepository.php index 9c703bcad..427d8e1cd 100644 --- a/src/Database/Repository/CategoryRepository.php +++ b/src/Database/Repository/CategoryRepository.php @@ -2,38 +2,37 @@ namespace AvoRed\Framework\Database\Repository; -use stdClass; -use Illuminate\Http\Request; -use Illuminate\Database\Eloquent\Collection; -use AvoRed\Framework\Database\Models\Product; +use AvoRed\Framework\Database\Contracts\CategoryModelInterface; +use AvoRed\Framework\Database\Models\Attribute; use AvoRed\Framework\Database\Models\Category; +use AvoRed\Framework\Database\Models\Product; use AvoRed\Framework\Database\Models\Property; -use AvoRed\Framework\Database\Models\Attribute; -use Illuminate\Support\Collection as SupportCollection; -use AvoRed\Framework\Database\Contracts\CategoryModelInterface; use AvoRed\Framework\Database\Traits\FilterTrait; +use Illuminate\Database\Eloquent\Collection; +use Illuminate\Http\Request; +use Illuminate\Support\Collection as SupportCollection; +use stdClass; class CategoryRepository extends BaseRepository implements CategoryModelInterface { use FilterTrait; /** * Eloquent Model Instant for the Repository - * @var \AvoRed\Framework\Database\Models\Category $model + * @var \AvoRed\Framework\Database\Models\Category */ protected $model; /** * Filterable Fields - * @var array $filterType + * @var array */ protected $filterFields = [ 'name', 'slug', 'meta_title', - 'meta_description' + 'meta_description', ]; - /** * Construct for the Category Repository * @@ -80,8 +79,6 @@ public function getCategoryProducts(Request $request): Collection return $builder->get(); } - - /** * Get all the categories option to use in Menu Builder. * @return \Illuminate\Support\Collection $categories diff --git a/src/Database/Repository/ConfigurationRepository.php b/src/Database/Repository/ConfigurationRepository.php index 77afb26b9..e4503aa1d 100644 --- a/src/Database/Repository/ConfigurationRepository.php +++ b/src/Database/Repository/ConfigurationRepository.php @@ -2,14 +2,14 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\Configuration; use AvoRed\Framework\Database\Contracts\ConfigurationModelInterface; +use AvoRed\Framework\Database\Models\Configuration; class ConfigurationRepository extends BaseRepository implements ConfigurationModelInterface { /** * Eloquent Model Instant for the Repository - * @var \AvoRed\Framework\Database\Models\Configuration $model + * @var \AvoRed\Framework\Database\Models\Configuration */ protected $model; @@ -22,7 +22,6 @@ public function __construct() $this->model = new Configuration(); } - /** * Model object for the repository * @return \AvoRed\Framework\Database\Models\Configuration $model diff --git a/src/Database/Repository/CustomerRepository.php b/src/Database/Repository/CustomerRepository.php index b27fb2e63..363e831b7 100644 --- a/src/Database/Repository/CustomerRepository.php +++ b/src/Database/Repository/CustomerRepository.php @@ -2,15 +2,15 @@ namespace AvoRed\Framework\Database\Repository; -use Illuminate\Support\Collection; -use AvoRed\Framework\Database\Models\Customer; use AvoRed\Framework\Database\Contracts\CustomerModelInterface; +use AvoRed\Framework\Database\Models\Customer; use Carbon\Carbon; +use Illuminate\Support\Collection; class CustomerRepository extends BaseRepository implements CustomerModelInterface { /** - * @var Customer $model + * @var Customer */ protected $model; @@ -58,15 +58,19 @@ public function getNewCustomersBy($from, $to, $groupBy): Collection switch ($groupBy) { case "DAY": return Carbon::parse($customer->created_at)->format('d-M-Y'); + break; case "WEEK": return $customer->created_at->startOfWeek()->format('d-M-Y') . ':'. $customer->created_at->endOfWeek()->format('d-M-Y'); + break; case "MONTH": return Carbon::parse($customer->created_at)->format('M-Y'); + break; case "YEAR": return Carbon::parse($customer->created_at)->format('Y'); + break; } }); diff --git a/src/Database/Repository/DocumentRepository.php b/src/Database/Repository/DocumentRepository.php index 855b6069e..3b87ed2e7 100644 --- a/src/Database/Repository/DocumentRepository.php +++ b/src/Database/Repository/DocumentRepository.php @@ -2,13 +2,13 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\Document; use AvoRed\Framework\Database\Contracts\DocumentModelInterface; +use AvoRed\Framework\Database\Models\Document; class DocumentRepository extends BaseRepository implements DocumentModelInterface { /** - * @var Document $model + * @var Document */ protected $model; diff --git a/src/Database/Repository/OrderProductRepository.php b/src/Database/Repository/OrderProductRepository.php index 0fe332241..8e4045298 100644 --- a/src/Database/Repository/OrderProductRepository.php +++ b/src/Database/Repository/OrderProductRepository.php @@ -2,14 +2,14 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\OrderProduct; use AvoRed\Framework\Database\Contracts\OrderProductModelInterface; +use AvoRed\Framework\Database\Models\OrderProduct; use AvoRed\Framework\Order\Events\OrderProductCreated; class OrderProductRepository extends BaseRepository implements OrderProductModelInterface { /** - * @var OrderProduct $model + * @var OrderProduct */ protected $model; diff --git a/src/Database/Repository/OrderRepository.php b/src/Database/Repository/OrderRepository.php index 54a6f09b2..4e120ddc8 100644 --- a/src/Database/Repository/OrderRepository.php +++ b/src/Database/Repository/OrderRepository.php @@ -2,9 +2,8 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\Order; -use Illuminate\Database\Eloquent\Collection; use AvoRed\Framework\Database\Contracts\OrderModelInterface; +use AvoRed\Framework\Database\Models\Order; use AvoRed\Framework\Database\Traits\FilterTrait; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Carbon; @@ -15,7 +14,7 @@ class OrderRepository extends BaseRepository implements OrderModelInterface /** * Filterable Fields - * @var array $filterType + * @var array */ protected $filterFields = [ 'shipping_option', @@ -23,7 +22,7 @@ class OrderRepository extends BaseRepository implements OrderModelInterface ]; /** - * @var Order $model + * @var Order */ protected $model; @@ -65,6 +64,7 @@ public function getCurrentMonthTotalOrder(): int return $totalOrder; } + /** * Get Total Revenue of current month * @return int $totalOrders @@ -90,6 +90,7 @@ public function getCurrentMonthTotalRevenue(): float private function getFirstDay() { $startDay = Carbon::now(); + return $startDay->firstOfMonth(); } } diff --git a/src/Database/Repository/OrderStatusRepository.php b/src/Database/Repository/OrderStatusRepository.php index 16106b9c4..2674b442b 100644 --- a/src/Database/Repository/OrderStatusRepository.php +++ b/src/Database/Repository/OrderStatusRepository.php @@ -2,10 +2,9 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\OrderStatus; use AvoRed\Framework\Database\Contracts\OrderStatusModelInterface; +use AvoRed\Framework\Database\Models\OrderStatus; use AvoRed\Framework\Database\Traits\FilterTrait; -use Illuminate\Database\Eloquent\Collection; class OrderStatusRepository extends BaseRepository implements OrderStatusModelInterface { @@ -13,7 +12,7 @@ class OrderStatusRepository extends BaseRepository implements OrderStatusModelIn /** * Filterable Fields - * @var array $filterType + * @var array */ protected $filterFields = [ 'name', @@ -21,7 +20,7 @@ class OrderStatusRepository extends BaseRepository implements OrderStatusModelIn /** - * @var OrderStatus $model + * @var OrderStatus */ protected $model; diff --git a/src/Database/Repository/PageRepository.php b/src/Database/Repository/PageRepository.php index 0b8bcb001..59a6629d1 100644 --- a/src/Database/Repository/PageRepository.php +++ b/src/Database/Repository/PageRepository.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\Page; use AvoRed\Framework\Database\Contracts\PageModelInterface; +use AvoRed\Framework\Database\Models\Page; use AvoRed\Framework\Database\Traits\FilterTrait; class PageRepository extends BaseRepository implements PageModelInterface @@ -12,17 +12,17 @@ class PageRepository extends BaseRepository implements PageModelInterface /** * Filterable Fields - * @var array $filterType + * @var array */ protected $filterFields = [ 'name', 'slug', 'meta_title', - 'meta_description' + 'meta_description', ]; /** - * @var Page $model + * @var Page */ protected $model; diff --git a/src/Database/Repository/PermissionRepository.php b/src/Database/Repository/PermissionRepository.php index b1aa3cbb6..cdb8ba47a 100644 --- a/src/Database/Repository/PermissionRepository.php +++ b/src/Database/Repository/PermissionRepository.php @@ -2,14 +2,13 @@ namespace AvoRed\Framework\Database\Repository; -use Illuminate\Database\Eloquent\Collection; -use AvoRed\Framework\Database\Models\Permission; use AvoRed\Framework\Database\Contracts\PermissionModelInterface; +use AvoRed\Framework\Database\Models\Permission; class PermissionRepository extends BaseRepository implements PermissionModelInterface { /** - * @var Permission $model + * @var Permission */ protected $model; @@ -30,7 +29,6 @@ public function model() return $this->model; } - /** * find Permission by given name from database. * @param string $name diff --git a/src/Database/Repository/ProductRepository.php b/src/Database/Repository/ProductRepository.php index 04918ebc6..07b028138 100644 --- a/src/Database/Repository/ProductRepository.php +++ b/src/Database/Repository/ProductRepository.php @@ -3,8 +3,8 @@ namespace AvoRed\Framework\Database\Repository; use AvoRed\Framework\Catalog\Requests\ProductRequest; -use AvoRed\Framework\Database\Models\Product; use AvoRed\Framework\Database\Contracts\ProductModelInterface; +use AvoRed\Framework\Database\Models\Product; use AvoRed\Framework\Database\Traits\FilterTrait; use Illuminate\Pagination\LengthAwarePaginator; @@ -14,17 +14,17 @@ class ProductRepository extends BaseRepository implements ProductModelInterface /** * Filterable Fields - * @var array $filterType + * @var array */ protected $filterFields = [ 'name', 'slug', - 'type' + 'type', ]; /** * - * @var \AvoRed\Framework\Database\Models\Product $model + * @var \AvoRed\Framework\Database\Models\Product */ protected $model; diff --git a/src/Database/Repository/PropertyRepository.php b/src/Database/Repository/PropertyRepository.php index eb731b582..931fb68ad 100644 --- a/src/Database/Repository/PropertyRepository.php +++ b/src/Database/Repository/PropertyRepository.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\Property; use AvoRed\Framework\Database\Contracts\PropertyModelInterface; +use AvoRed\Framework\Database\Models\Property; use AvoRed\Framework\Database\Traits\FilterTrait; class PropertyRepository extends BaseRepository implements PropertyModelInterface @@ -12,16 +12,16 @@ class PropertyRepository extends BaseRepository implements PropertyModelInterfac /** * Filterable Fields - * @var array $filterType + * @var array */ protected $filterFields = [ 'name', - 'slug' + 'slug', ]; /** - * @var Property $model + * @var Property */ protected $model; @@ -42,7 +42,6 @@ public function model(): Property return $this->model; } - public function savePropertyDropdown($request, $property) { if (($request->get('field_type') === 'RADIO' || $request->get('field_type') === 'SELECT')) { diff --git a/src/Database/Repository/RoleRepository.php b/src/Database/Repository/RoleRepository.php index e6362e23e..25dfde139 100644 --- a/src/Database/Repository/RoleRepository.php +++ b/src/Database/Repository/RoleRepository.php @@ -3,22 +3,22 @@ namespace AvoRed\Framework\Database\Repository; use AvoRed\Framework\Database\Contracts\PermissionModelInterface; +use AvoRed\Framework\Database\Contracts\RoleModelInterface; use AvoRed\Framework\Database\Models\Role; use Illuminate\Support\Collection as SupportCollection; -use AvoRed\Framework\Database\Contracts\RoleModelInterface; class RoleRepository extends BaseRepository implements RoleModelInterface { /** * Filterable Fields - * @var array $filterType + * @var array */ protected $filterFields = [ 'name', ]; /** - * @var Role $model + * @var Role */ protected $model; @@ -58,7 +58,6 @@ public function options(): SupportCollection return Role::all()->pluck('name', 'id'); } - /** * Save Role Permission for the Users. * @param \AvoRed\Framework\System\Requests\RoleRequest $request diff --git a/src/Database/Repository/SubscriberRepository.php b/src/Database/Repository/SubscriberRepository.php index b86ad3984..42fc8388f 100644 --- a/src/Database/Repository/SubscriberRepository.php +++ b/src/Database/Repository/SubscriberRepository.php @@ -2,13 +2,13 @@ namespace AvoRed\Framework\Database\Repository; -use AvoRed\Framework\Database\Models\Subscriber; use AvoRed\Framework\Database\Contracts\SubscriberModelInterface; +use AvoRed\Framework\Database\Models\Subscriber; class SubscriberRepository extends BaseRepository implements SubscriberModelInterface { /** - * @var Subscriber $model + * @var Subscriber */ protected $model; diff --git a/src/Document/Manager.php b/src/Document/Manager.php index 37316ef28..528f31004 100644 --- a/src/Document/Manager.php +++ b/src/Document/Manager.php @@ -2,7 +2,6 @@ namespace AvoRed\Framework\Document; -use AvoRed\Framework\Database\Contracts\DocumentModelInterface; use AvoRed\Framework\Database\Models\Document; use AvoRed\Framework\Database\Repository\DocumentRepository; use Illuminate\Http\UploadedFile; diff --git a/src/Graphql/Mutations/Auth/ForgotPasswordMutation.php b/src/Graphql/Mutations/Auth/ForgotPasswordMutation.php index c3d8bfa66..2930ff2a6 100644 --- a/src/Graphql/Mutations/Auth/ForgotPasswordMutation.php +++ b/src/Graphql/Mutations/Auth/ForgotPasswordMutation.php @@ -6,7 +6,6 @@ use Closure; use GraphQL\Type\Definition\ResolveInfo; use GraphQL\Type\Definition\Type; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Password; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Mutation; @@ -15,7 +14,7 @@ class ForgotPasswordMutation extends Mutation { protected $attributes = [ 'name' => 'forgotPassword', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -46,7 +45,7 @@ public function args(): array 'email' => [ 'name' => 'email', 'type' => Type::nonNull(Type::string()), - ] + ], ]; } @@ -56,12 +55,11 @@ public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closur if ($response === Password::RESET_LINK_SENT) { return ['success' => true, - 'message' => __('avored::system.success_sent_password_reset_email_message') + 'message' => __('avored::system.success_sent_password_reset_email_message'), ]; } } - /** * Get the broker to be used during password reset. * diff --git a/src/Graphql/Mutations/Auth/LoginMutation.php b/src/Graphql/Mutations/Auth/LoginMutation.php index cbc87f53a..25e62e69b 100644 --- a/src/Graphql/Mutations/Auth/LoginMutation.php +++ b/src/Graphql/Mutations/Auth/LoginMutation.php @@ -6,20 +6,17 @@ use Closure; use GraphQL\Type\Definition\ResolveInfo; use GraphQL\Type\Definition\Type; -use Illuminate\Support\Facades\Hash; -use Illuminate\Support\Str; use Laravel\Passport\Client; use Laravel\Passport\Http\Controllers\AccessTokenController; +use Nyholm\Psr7\ServerRequest; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Mutation; -use Nyholm\Psr7\ServerRequest; -use stdClass; class LoginMutation extends Mutation { protected $attributes = [ 'name' => 'login', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -48,7 +45,7 @@ protected function rules(array $rules = []): array { return [ 'email' => ['required', 'max:255'], - 'password' => ['required', 'max:255'] + 'password' => ['required', 'max:255'], ]; } @@ -66,7 +63,7 @@ public function args(): array ], 'password' => [ 'name' => 'password', - 'type' => Type::string() + 'type' => Type::string(), ], ]; } diff --git a/src/Graphql/Mutations/Auth/RegisterMutation.php b/src/Graphql/Mutations/Auth/RegisterMutation.php index 305a20d83..6204b023d 100644 --- a/src/Graphql/Mutations/Auth/RegisterMutation.php +++ b/src/Graphql/Mutations/Auth/RegisterMutation.php @@ -8,16 +8,15 @@ use GraphQL\Type\Definition\Type; use Laravel\Passport\Client; use Laravel\Passport\Http\Controllers\AccessTokenController; +use Nyholm\Psr7\ServerRequest; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Mutation; -use Nyholm\Psr7\ServerRequest; -use stdClass; class RegisterMutation extends Mutation { protected $attributes = [ 'name' => 'register', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -74,11 +73,11 @@ public function args(): array ], 'password' => [ 'name' => 'password', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'password_confirmation' => [ 'name' => 'password_confirmation', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], ]; } diff --git a/src/Graphql/Mutations/Auth/ResetPasswordMutation.php b/src/Graphql/Mutations/Auth/ResetPasswordMutation.php index 29ac4cb6a..2b4750dfe 100644 --- a/src/Graphql/Mutations/Auth/ResetPasswordMutation.php +++ b/src/Graphql/Mutations/Auth/ResetPasswordMutation.php @@ -16,7 +16,7 @@ class ResetPasswordMutation extends Mutation { protected $attributes = [ 'name' => 'resetPassword', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -68,20 +68,19 @@ public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closur $response = $this->broker()->reset( $args, function ($user, $password) { - $this->resetPassword($user, $password); - } + $this->resetPassword($user, $password); + } ); if ($response === Password::PASSWORD_RESET) { return ['success' => true, - 'message' => __('avored::system.success_reset_password_message') + 'message' => __('avored::system.success_reset_password_message'), ]; } } - /** * Get the broker to be used during password reset. * diff --git a/src/Graphql/Mutations/Cart/AddToCartMutation.php b/src/Graphql/Mutations/Cart/AddToCartMutation.php index d14535a1d..508af37ed 100644 --- a/src/Graphql/Mutations/Cart/AddToCartMutation.php +++ b/src/Graphql/Mutations/Cart/AddToCartMutation.php @@ -16,7 +16,7 @@ class AddToCartMutation extends Mutation protected $attributes = [ 'name' => 'addToCart', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -47,7 +47,7 @@ public function args(): array 'qty' => [ 'name' => 'qty', 'type' => Type::float(), - ] + ], ]; } diff --git a/src/Graphql/Mutations/Cart/DeleteCartMutation.php b/src/Graphql/Mutations/Cart/DeleteCartMutation.php index 0c19267d3..38a6141af 100644 --- a/src/Graphql/Mutations/Cart/DeleteCartMutation.php +++ b/src/Graphql/Mutations/Cart/DeleteCartMutation.php @@ -13,7 +13,7 @@ class DeleteCartMutation extends Mutation { protected $attributes = [ 'name' => 'DeleteCart', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; public function type(): Type @@ -31,7 +31,7 @@ public function args(): array 'visitor_id' => [ 'name' => 'visitor_id', 'type' => Type::nonNull(Type::string()), - ] + ], ]; } diff --git a/src/Graphql/Mutations/Cart/UpdateCartMutation.php b/src/Graphql/Mutations/Cart/UpdateCartMutation.php index b4724c2f7..81feb3872 100644 --- a/src/Graphql/Mutations/Cart/UpdateCartMutation.php +++ b/src/Graphql/Mutations/Cart/UpdateCartMutation.php @@ -6,7 +6,6 @@ use Closure; use GraphQL\Type\Definition\ResolveInfo; use GraphQL\Type\Definition\Type; -use Ramsey\Uuid\Uuid; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Mutation; @@ -16,7 +15,7 @@ class UpdateCartMutation extends Mutation protected $attributes = [ 'name' => 'updateCart', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -47,7 +46,7 @@ public function args(): array 'qty' => [ 'name' => 'qty', 'type' => Type::float(), - ] + ], ]; } diff --git a/src/Graphql/Mutations/Customer/CreateAddressMutation.php b/src/Graphql/Mutations/Customer/CreateAddressMutation.php index 03c889ece..ed6a1ca14 100644 --- a/src/Graphql/Mutations/Customer/CreateAddressMutation.php +++ b/src/Graphql/Mutations/Customer/CreateAddressMutation.php @@ -18,7 +18,7 @@ class CreateAddressMutation extends Mutation protected $attributes = [ 'name' => 'createAddressMutation', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -73,43 +73,43 @@ public function args(): array ], 'first_name' => [ 'name' => 'first_name', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'last_name' => [ 'name' => 'last_name', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'company_name' => [ 'name' => 'company_name', - 'type' => Type::string() + 'type' => Type::string(), ], 'phone' => [ 'name' => 'phone', - 'type' => Type::string() + 'type' => Type::string(), ], 'address1' => [ 'name' => 'address1', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'address2' => [ 'name' => 'address2', - 'type' => Type::string() + 'type' => Type::string(), ], 'postcode' => [ 'name' => 'postcode', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'city' => [ 'name' => 'city', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'state' => [ 'name' => 'state', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'country_id' => [ 'name' => 'country_id', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], ]; } @@ -117,6 +117,7 @@ public function args(): array public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields) { $args ['customer_id'] = Auth::guard('customer')->user()->id; + return $this->addressRepository->create($args); } } diff --git a/src/Graphql/Mutations/Customer/CreateSubscriberMutation.php b/src/Graphql/Mutations/Customer/CreateSubscriberMutation.php index bb543e564..33b85280b 100644 --- a/src/Graphql/Mutations/Customer/CreateSubscriberMutation.php +++ b/src/Graphql/Mutations/Customer/CreateSubscriberMutation.php @@ -6,8 +6,6 @@ use Closure; use GraphQL\Type\Definition\ResolveInfo; use GraphQL\Type\Definition\Type; -use Illuminate\Support\Arr; -use Illuminate\Support\Facades\Auth; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Mutation; @@ -15,7 +13,7 @@ class CreateSubscriberMutation extends Mutation { protected $attributes = [ 'name' => 'CreateSubscriberMutation', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -45,7 +43,7 @@ public function args(): array 'email' => [ 'name' => 'email', 'type' => Type::nonNull(Type::string()), - ] + ], ]; } diff --git a/src/Graphql/Mutations/Customer/CustomerUpdateMutation.php b/src/Graphql/Mutations/Customer/CustomerUpdateMutation.php index 25a1128be..b86071121 100644 --- a/src/Graphql/Mutations/Customer/CustomerUpdateMutation.php +++ b/src/Graphql/Mutations/Customer/CustomerUpdateMutation.php @@ -8,7 +8,6 @@ use Closure; use GraphQL\Type\Definition\ResolveInfo; use GraphQL\Type\Definition\Type; -use Illuminate\Support\Facades\Auth; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Mutation; @@ -18,7 +17,7 @@ class CustomerUpdateMutation extends Mutation protected $attributes = [ 'name' => 'customerUpdate', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -51,7 +50,7 @@ public function args(): array ], 'last_name' => [ 'name' => 'last_name', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], ]; } diff --git a/src/Graphql/Mutations/Customer/DeleteAddressMutation.php b/src/Graphql/Mutations/Customer/DeleteAddressMutation.php index f15b3c0d4..06afcb3e0 100644 --- a/src/Graphql/Mutations/Customer/DeleteAddressMutation.php +++ b/src/Graphql/Mutations/Customer/DeleteAddressMutation.php @@ -18,7 +18,7 @@ class DeleteAddressMutation extends Mutation protected $attributes = [ 'name' => 'deleteAddressMutation', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -57,6 +57,7 @@ public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closur if ($this->addressRepository->delete($args['id'])) { return ['success' => true, 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.address')])]; } + throw new Exception('There is an error while deleting an address model with given id:'. $args['id']); } } diff --git a/src/Graphql/Mutations/Customer/UpdateAddressMutation.php b/src/Graphql/Mutations/Customer/UpdateAddressMutation.php index 95a681711..1163f5d67 100644 --- a/src/Graphql/Mutations/Customer/UpdateAddressMutation.php +++ b/src/Graphql/Mutations/Customer/UpdateAddressMutation.php @@ -17,7 +17,7 @@ class UpdateAddressMutation extends Mutation protected $attributes = [ 'name' => 'updateAddressMutation', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -77,43 +77,43 @@ public function args(): array ], 'first_name' => [ 'name' => 'first_name', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'last_name' => [ 'name' => 'last_name', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'company_name' => [ 'name' => 'company_name', - 'type' => Type::string() + 'type' => Type::string(), ], 'address1' => [ 'name' => 'address1', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'address2' => [ 'name' => 'address2', - 'type' => Type::string() + 'type' => Type::string(), ], 'postcode' => [ 'name' => 'postcode', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'city' => [ 'name' => 'city', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'state' => [ 'name' => 'state', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'country_id' => [ 'name' => 'country_id', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'phone' => [ 'name' => 'phone', - 'type' => Type::string() + 'type' => Type::string(), ], ]; } diff --git a/src/Graphql/Mutations/PlaceOrderMutation.php b/src/Graphql/Mutations/PlaceOrderMutation.php index 3307764dd..463a56c4d 100644 --- a/src/Graphql/Mutations/PlaceOrderMutation.php +++ b/src/Graphql/Mutations/PlaceOrderMutation.php @@ -2,14 +2,13 @@ namespace AvoRed\Framework\Graphql\Mutations; -use AvoRed\Framework\Database\Models\CartProduct; use AvoRed\Framework\Database\Contracts\OrderModelInterface; use AvoRed\Framework\Database\Contracts\OrderProductModelInterface; use AvoRed\Framework\Database\Contracts\OrderStatusModelInterface; +use AvoRed\Framework\Database\Models\CartProduct; use AvoRed\Framework\Database\Models\Order; use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use Closure; -use GraphQL\Type\Definition\InputObjectType; use GraphQL\Type\Definition\ResolveInfo; use GraphQL\Type\Definition\Type; use Illuminate\Support\Facades\Auth; @@ -22,7 +21,7 @@ class PlaceOrderMutation extends Mutation protected $attributes = [ 'name' => 'placeOrderMutation', - 'description' => 'A mutation' + 'description' => 'A mutation', ]; /** @@ -71,7 +70,7 @@ public function args(): array ], 'payment_option' => [ 'name' => 'payment_option', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], // 'customer_id' => [ // 'name' => 'customer_id', @@ -79,12 +78,12 @@ public function args(): array // ], 'shipping_address_id' => [ 'name' => 'shipping_address_id', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'billing_address_id' => [ 'name' => 'billing_address_id', - 'type' => Type::nonNull(Type::string()) - ] + 'type' => Type::nonNull(Type::string()), + ], ]; } @@ -100,7 +99,6 @@ public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closur return $order; } - /** * Sync Products and Attributes with Order Tables. * @param \AvoRed\Framework\Database\Models\Order $order diff --git a/src/Graphql/Queries/AddressQuery.php b/src/Graphql/Queries/AddressQuery.php index 40fb5bf66..302e1bcd7 100644 --- a/src/Graphql/Queries/AddressQuery.php +++ b/src/Graphql/Queries/AddressQuery.php @@ -6,8 +6,8 @@ use AvoRed\Framework\Database\Models\Address; use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; +use GraphQL\Type\Definition\Type; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; @@ -17,7 +17,7 @@ class AddressQuery extends Query protected $attributes = [ 'name' => 'addressQuery', - 'description' => 'A query' + 'description' => 'A query', ]; /** @@ -54,7 +54,7 @@ public function args(): array return [ 'id' => [ 'name' => 'id', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], ]; } diff --git a/src/Graphql/Queries/AllAddressQuery.php b/src/Graphql/Queries/AllAddressQuery.php index bfab2573d..99700ec51 100644 --- a/src/Graphql/Queries/AllAddressQuery.php +++ b/src/Graphql/Queries/AllAddressQuery.php @@ -5,8 +5,8 @@ use AvoRed\Framework\Database\Contracts\AddressModelInterface; use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; +use GraphQL\Type\Definition\Type; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Auth; use Rebing\GraphQL\Support\Facades\GraphQL; @@ -18,7 +18,7 @@ class AllAddressQuery extends Query protected $attributes = [ 'name' => 'allAddress', - 'description' => 'A query' + 'description' => 'A query', ]; /** diff --git a/src/Graphql/Queries/AllCategoryQuery.php b/src/Graphql/Queries/AllCategoryQuery.php index b769ee835..fc7abf916 100644 --- a/src/Graphql/Queries/AllCategoryQuery.php +++ b/src/Graphql/Queries/AllCategoryQuery.php @@ -5,8 +5,8 @@ use AvoRed\Framework\Database\Contracts\CategoryModelInterface; use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; +use GraphQL\Type\Definition\Type; use Illuminate\Database\Eloquent\Collection; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; @@ -17,7 +17,7 @@ class AllCategoryQuery extends Query protected $attributes = [ 'name' => 'allCategory', - 'description' => 'A query' + 'description' => 'A query', ]; /** diff --git a/src/Graphql/Queries/AllOrdersQuery.php b/src/Graphql/Queries/AllOrdersQuery.php index a1df85d63..b281e87eb 100644 --- a/src/Graphql/Queries/AllOrdersQuery.php +++ b/src/Graphql/Queries/AllOrdersQuery.php @@ -5,9 +5,8 @@ use AvoRed\Framework\Database\Contracts\OrderModelInterface; use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; -use Illuminate\Database\Eloquent\Collection; +use GraphQL\Type\Definition\Type; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Facades\Auth; use Rebing\GraphQL\Support\Facades\GraphQL; @@ -19,7 +18,7 @@ class AllOrdersQuery extends Query protected $attributes = [ 'name' => 'allOrders', - 'description' => 'A query' + 'description' => 'A query', ]; /** @@ -68,6 +67,7 @@ public function args(): array public function resolve($root, $args, $context, ResolveInfo $resolveInfo, Closure $getSelectFields): LengthAwarePaginator { $customer = Auth::guard('customer')->user(); + return $this->orderRepository->findByCustomerId($customer->id); } } diff --git a/src/Graphql/Queries/CartItemsQuery.php b/src/Graphql/Queries/CartItemsQuery.php index 7f5cfa96f..499e72984 100644 --- a/src/Graphql/Queries/CartItemsQuery.php +++ b/src/Graphql/Queries/CartItemsQuery.php @@ -6,8 +6,8 @@ use AvoRed\Framework\Database\Models\Address; use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; +use GraphQL\Type\Definition\Type; use Illuminate\Support\Collection; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; @@ -18,17 +18,14 @@ class CartItemsQuery extends Query protected $attributes = [ 'name' => 'cartItems', - 'description' => 'A query' + 'description' => 'A query', ]; - public function type(): Type { return Type::listOf(GraphQL::type('CartProduct')); } - - /** * Passed arguments for this query * @return array @@ -38,12 +35,11 @@ public function args(): array return [ 'visitor_id' => [ 'name' => 'visitor_id', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], ]; } - /** * Resolve Query to get pass an information * @param mixed $root diff --git a/src/Graphql/Queries/CategoryQuery.php b/src/Graphql/Queries/CategoryQuery.php index 20468c249..afeca43e2 100644 --- a/src/Graphql/Queries/CategoryQuery.php +++ b/src/Graphql/Queries/CategoryQuery.php @@ -6,9 +6,8 @@ use AvoRed\Framework\Database\Models\Category; use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; -use Illuminate\Database\Eloquent\Collection; +use GraphQL\Type\Definition\Type; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; @@ -18,7 +17,7 @@ class CategoryQuery extends Query protected $attributes = [ 'name' => 'category', - 'description' => 'A query' + 'description' => 'A query', ]; /** @@ -55,11 +54,11 @@ public function args(): array return [ 'slug' => [ 'name' => 'slug', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], 'page' => [ 'name' => 'page', - 'type' => Type::int() + 'type' => Type::int(), ], ]; } diff --git a/src/Graphql/Queries/CountryOptionsQuery.php b/src/Graphql/Queries/CountryOptionsQuery.php index 3b916490a..ed268ef16 100644 --- a/src/Graphql/Queries/CountryOptionsQuery.php +++ b/src/Graphql/Queries/CountryOptionsQuery.php @@ -2,14 +2,11 @@ namespace AvoRed\Framework\Graphql\Queries; -use AvoRed\Framework\Database\Contracts\CustomerModelInterface; use AvoRed\Framework\Database\Models\Customer; -use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; +use GraphQL\Type\Definition\Type; use Illuminate\Support\Collection; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; @@ -18,7 +15,7 @@ class CountryOptionsQuery extends Query { protected $attributes = [ 'name' => 'countryOptions', - 'description' => 'A query' + 'description' => 'A query', ]; /** @@ -27,7 +24,6 @@ class CountryOptionsQuery extends Query */ protected $customerRepository; - /** * Return type for these query * @return \GraphQL\Type\Definition\Type diff --git a/src/Graphql/Queries/CustomerQuery.php b/src/Graphql/Queries/CustomerQuery.php index 804663920..9faa597b2 100644 --- a/src/Graphql/Queries/CustomerQuery.php +++ b/src/Graphql/Queries/CustomerQuery.php @@ -6,8 +6,8 @@ use AvoRed\Framework\Database\Models\Customer; use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; +use GraphQL\Type\Definition\Type; use Illuminate\Support\Facades\Auth; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; @@ -18,7 +18,7 @@ class CustomerQuery extends Query protected $attributes = [ 'name' => 'customerQuery', - 'description' => 'A query' + 'description' => 'A query', ]; /** @@ -55,7 +55,7 @@ public function args(): array return [ 'id' => [ 'name' => 'id', - 'type' => Type::string() + 'type' => Type::string(), ], ]; } diff --git a/src/Graphql/Queries/LatestProductQuery.php b/src/Graphql/Queries/LatestProductQuery.php index bcd258bdf..928e813b4 100644 --- a/src/Graphql/Queries/LatestProductQuery.php +++ b/src/Graphql/Queries/LatestProductQuery.php @@ -5,8 +5,8 @@ use AvoRed\Framework\Database\Contracts\ProductModelInterface; use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; +use GraphQL\Type\Definition\Type; use Illuminate\Database\Eloquent\Collection; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; @@ -17,7 +17,7 @@ class LatestProductQuery extends Query protected $attributes = [ 'name' => 'latestProductQuery', - 'description' => 'A query' + 'description' => 'A query', ]; /** diff --git a/src/Graphql/Queries/OrderQuery.php b/src/Graphql/Queries/OrderQuery.php index af2a484a6..0a69df022 100644 --- a/src/Graphql/Queries/OrderQuery.php +++ b/src/Graphql/Queries/OrderQuery.php @@ -6,11 +6,8 @@ use AvoRed\Framework\Database\Models\Order; use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; -use Illuminate\Database\Eloquent\Collection; -use Illuminate\Pagination\LengthAwarePaginator; -use Illuminate\Support\Facades\Auth; +use GraphQL\Type\Definition\Type; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; @@ -20,7 +17,7 @@ class OrderQuery extends Query protected $attributes = [ 'name' => 'allOrders', - 'description' => 'A query' + 'description' => 'A query', ]; /** @@ -57,8 +54,8 @@ public function args(): array return [ 'id' => [ 'name' => 'id', - 'type' => Type::nonNull(Type::string()) - ] + 'type' => Type::nonNull(Type::string()), + ], ]; } diff --git a/src/Graphql/Queries/PaymentQuery.php b/src/Graphql/Queries/PaymentQuery.php index 511167691..9303c5c7b 100644 --- a/src/Graphql/Queries/PaymentQuery.php +++ b/src/Graphql/Queries/PaymentQuery.php @@ -5,8 +5,8 @@ use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use AvoRed\Framework\Payment\Payment; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; +use GraphQL\Type\Definition\Type; use Illuminate\Support\Collection; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; @@ -17,7 +17,7 @@ class PaymentQuery extends Query protected $attributes = [ 'name' => 'paymentQuery', - 'description' => 'A query' + 'description' => 'A query', ]; /** diff --git a/src/Graphql/Queries/ProductQuery.php b/src/Graphql/Queries/ProductQuery.php index 570627e95..592ab6108 100644 --- a/src/Graphql/Queries/ProductQuery.php +++ b/src/Graphql/Queries/ProductQuery.php @@ -5,8 +5,8 @@ use AvoRed\Framework\Database\Contracts\ProductModelInterface; use AvoRed\Framework\Database\Models\Product; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; +use GraphQL\Type\Definition\Type; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; @@ -14,7 +14,7 @@ class ProductQuery extends Query { protected $attributes = [ 'name' => 'product', - 'description' => 'A query' + 'description' => 'A query', ]; /** @@ -51,7 +51,7 @@ public function args(): array return [ 'slug' => [ 'name' => 'slug', - 'type' => Type::nonNull(Type::string()) + 'type' => Type::nonNull(Type::string()), ], ]; } diff --git a/src/Graphql/Queries/ShippingQuery.php b/src/Graphql/Queries/ShippingQuery.php index 3ae3a3d25..0dea4e57f 100644 --- a/src/Graphql/Queries/ShippingQuery.php +++ b/src/Graphql/Queries/ShippingQuery.php @@ -5,8 +5,8 @@ use AvoRed\Framework\Graphql\Traits\AuthorizedTrait; use AvoRed\Framework\Shipping\Shipping; use Closure; -use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\ResolveInfo; +use GraphQL\Type\Definition\Type; use Illuminate\Support\Collection; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; @@ -17,7 +17,7 @@ class ShippingQuery extends Query protected $attributes = [ 'name' => 'shippingQuery', - 'description' => 'A query' + 'description' => 'A query', ]; /** diff --git a/src/Graphql/Traits/AuthorizedTrait.php b/src/Graphql/Traits/AuthorizedTrait.php index 68fb2931e..c03a2652b 100644 --- a/src/Graphql/Traits/AuthorizedTrait.php +++ b/src/Graphql/Traits/AuthorizedTrait.php @@ -15,7 +15,7 @@ trait AuthorizedTrait * @param [type] $ctx * @param ResolveInfo|null $resolveInfo * @param Closure|null $getSelectFields - * @return boolean + * @return bool */ public function authorize($root, array $args, $ctx, ?ResolveInfo $resolveInfo = null, ?Closure $getSelectFields = null): bool { diff --git a/src/Graphql/Types/AddressType.php b/src/Graphql/Types/AddressType.php index cf4645558..215728c0f 100644 --- a/src/Graphql/Types/AddressType.php +++ b/src/Graphql/Types/AddressType.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Graphql\Types; -use Rebing\GraphQL\Support\Type as GraphQLType; use GraphQL\Type\Definition\Type; +use Rebing\GraphQL\Support\Type as GraphQLType; class AddressType extends GraphQLType { @@ -19,7 +19,7 @@ class AddressType extends GraphQLType */ protected $attributes = [ 'name' => 'Address', - 'description' => 'A type' + 'description' => 'A type', ]; /** @@ -31,67 +31,67 @@ public function fields(): array return [ 'id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The id of the address' + 'description' => 'The id of the address', ], 'customer_id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The user id of the address' + 'description' => 'The user id of the address', ], 'type' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The type of the address' + 'description' => 'The type of the address', ], 'first_name' => [ 'type' => Type::string(), - 'description' => 'The first name of the address' + 'description' => 'The first name of the address', ], 'last_name' => [ 'type' => Type::string(), - 'description' => 'The last name of the address' + 'description' => 'The last name of the address', ], 'company_name' => [ 'type' => Type::string(), - 'description' => 'The company name of the address' + 'description' => 'The company name of the address', ], 'address1' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The address1 of the address' + 'description' => 'The address1 of the address', ], 'address2' => [ 'type' => Type::string(), - 'description' => 'The address2 of the address' + 'description' => 'The address2 of the address', ], 'postcode' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The postcode of the address' + 'description' => 'The postcode of the address', ], 'city' => [ 'type' => Type::string(), - 'description' => 'The city of the address' + 'description' => 'The city of the address', ], 'state' => [ 'type' => Type::string(), - 'description' => 'The state of the address' + 'description' => 'The state of the address', ], 'country_id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The country id of the address' + 'description' => 'The country id of the address', ], 'country_name' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The country id of the address' + 'description' => 'The country id of the address', ], 'phone' => [ 'type' => Type::string(), - 'description' => 'The phone of the address' + 'description' => 'The phone of the address', ], 'created_at' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The created_at of the address' + 'description' => 'The created_at of the address', ], 'updated_at' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The updated_at of the address' + 'description' => 'The updated_at of the address', ], ]; diff --git a/src/Graphql/Types/CartProductType.php b/src/Graphql/Types/CartProductType.php index 25352bc57..5515d0df6 100644 --- a/src/Graphql/Types/CartProductType.php +++ b/src/Graphql/Types/CartProductType.php @@ -2,9 +2,9 @@ namespace AvoRed\Framework\Graphql\Types; -use Rebing\GraphQL\Support\Type as GraphQLType; use GraphQL\Type\Definition\Type; use Rebing\GraphQL\Support\Facades\GraphQL; +use Rebing\GraphQL\Support\Type as GraphQLType; class CartProductType extends GraphQLType { @@ -14,7 +14,7 @@ class CartProductType extends GraphQLType */ protected $attributes = [ 'name' => 'CartProduct', - 'description' => 'A type' + 'description' => 'A type', ]; /** @@ -26,31 +26,31 @@ public function fields(): array return [ 'id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Product Id' + 'description' => 'Product Id', ], 'visitor_id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'CartProduct Visitor Id' + 'description' => 'CartProduct Visitor Id', ], 'product_id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'CartProduct product id' + 'description' => 'CartProduct product id', ], 'product' => [ 'type' => Type::nonNull(GraphQL::type('Product')), - 'description' => 'CartProduct product model' + 'description' => 'CartProduct product model', ], 'qty' => [ 'type' => Type::float(), - 'description' => 'CartProduct qty' + 'description' => 'CartProduct qty', ], 'created_at' => [ 'type' => Type::string(), - 'description' => 'Product created at' + 'description' => 'Product created at', ], 'updated_at' => [ 'type' => Type::string(), - 'description' => 'Product updated at' + 'description' => 'Product updated at', ], ]; } diff --git a/src/Graphql/Types/CategoryType.php b/src/Graphql/Types/CategoryType.php index 14085697e..d9d5d1f75 100644 --- a/src/Graphql/Types/CategoryType.php +++ b/src/Graphql/Types/CategoryType.php @@ -4,9 +4,9 @@ use AvoRed\Framework\Database\Contracts\CategoryFilterModelInterface; use GraphQL\Type\Definition\ResolveInfo; -use Rebing\GraphQL\Support\Type as GraphQLType; use GraphQL\Type\Definition\Type; use Rebing\GraphQL\Support\Facades\GraphQL; +use Rebing\GraphQL\Support\Type as GraphQLType; class CategoryType extends GraphQLType { @@ -22,7 +22,7 @@ class CategoryType extends GraphQLType */ protected $attributes = [ 'name' => 'Category', - 'description' => 'A type' + 'description' => 'A type', ]; /** @@ -34,35 +34,35 @@ public function fields(): array return [ 'id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Category Id' + 'description' => 'Category Id', ], 'name' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Category Name' + 'description' => 'Category Name', ], 'slug' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Category Slug' + 'description' => 'Category Slug', ], 'description' => [ 'type' => Type::string(), - 'description' => 'Category Description' + 'description' => 'Category Description', ], 'meta_title' => [ 'type' => Type::string(), - 'description' => 'Category Meta title' + 'description' => 'Category Meta title', ], 'meta_description' => [ 'type' => Type::string(), - 'description' => 'Category Meta Description' + 'description' => 'Category Meta Description', ], 'created_at' => [ 'type' => Type::string(), - 'description' => 'Category created at' + 'description' => 'Category created at', ], 'updated_at' => [ 'type' => Type::string(), - 'description' => 'Category updated at' + 'description' => 'Category updated at', ], // 'filter' => [ // 'type' => Type::listOf(GraphQL::type('filter')), @@ -70,11 +70,11 @@ public function fields(): array // ], 'products' => [ 'type' => GraphQL::paginate('Product'), - 'description' => 'Category Product' + 'description' => 'Category Product', ], 'children' => [ - 'type' => Type::listOf(GraphQL::type('Category')), - 'description' => 'Child Category' + 'type' => Type::listOf(GraphQL::type('Category')), + 'description' => 'Child Category', ], ]; } @@ -87,6 +87,7 @@ public function fields(): array protected function resolveFilterField($category, $args) { $categoryFilterRepository = app(CategoryFilterModelInterface::class); + return $categoryFilterRepository->findByCategoryId($category->id); } @@ -111,6 +112,7 @@ protected function resolveProductsField($category, $args, $context, ResolveInfo { $args = $resolveInfo->variableValues; $page = isset($args['page']) ? $args['page'] : 1; + return $category->products()->paginate($this->getNoOfPaginateItem(), ['*'], 'page', $page); } diff --git a/src/Graphql/Types/CustomerType.php b/src/Graphql/Types/CustomerType.php index c59c1e470..8401d55a5 100644 --- a/src/Graphql/Types/CustomerType.php +++ b/src/Graphql/Types/CustomerType.php @@ -2,9 +2,9 @@ namespace AvoRed\Framework\Graphql\Types; -use Rebing\GraphQL\Support\Type as GraphQLType; use GraphQL\Type\Definition\Type; use Rebing\GraphQL\Support\Facades\GraphQL; +use Rebing\GraphQL\Support\Type as GraphQLType; class CustomerType extends GraphQLType { @@ -14,7 +14,7 @@ class CustomerType extends GraphQLType */ protected $attributes = [ 'name' => 'Customer', - 'description' => 'A type' + 'description' => 'A type', ]; /** @@ -26,47 +26,47 @@ public function fields(): array return [ 'first_name' => [ 'type' => Type::string(), - 'description' => 'The customer for the first name' + 'description' => 'The customer for the first name', ], 'last_name' => [ 'type' => Type::string(), - 'description' => 'The customer for the last name' + 'description' => 'The customer for the last name', ], 'email' => [ 'type' => Type::string(), - 'description' => 'The customer for the email' + 'description' => 'The customer for the email', ], 'id' => [ 'type' => Type::string(), - 'description' => 'The customer for the id' + 'description' => 'The customer for the id', ], 'created_at' => [ 'type' => Type::string(), - 'description' => 'Customer created at' + 'description' => 'Customer created at', ], 'updated_at' => [ 'type' => Type::string(), - 'description' => 'Customer updated at' + 'description' => 'Customer updated at', ], 'token_type' => [ 'type' => Type::string(), - 'description' => 'Customer updated at' + 'description' => 'Customer updated at', ], 'expires_in' => [ 'type' => Type::int(), - 'description' => 'Customer updated at' + 'description' => 'Customer updated at', ], 'access_token' => [ 'type' => Type::string(), - 'description' => 'Customer updated at' + 'description' => 'Customer updated at', ], 'refresh_token' => [ 'type' => Type::string(), - 'description' => 'Customer updated at' + 'description' => 'Customer updated at', ], 'addresses' => [ 'type' => Type::listOf(GraphQL::type('Address')), - 'description' => 'Customer updated at' + 'description' => 'Customer updated at', ], ]; } diff --git a/src/Graphql/Types/NotificationType.php b/src/Graphql/Types/NotificationType.php index 6d31250fa..ccfaac9c7 100644 --- a/src/Graphql/Types/NotificationType.php +++ b/src/Graphql/Types/NotificationType.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Graphql\Types; -use Rebing\GraphQL\Support\Type as GraphQLType; use GraphQL\Type\Definition\Type; +use Rebing\GraphQL\Support\Type as GraphQLType; class NotificationType extends GraphQLType { @@ -13,7 +13,7 @@ class NotificationType extends GraphQLType */ protected $attributes = [ 'name' => 'Notification', - 'description' => 'A type' + 'description' => 'A type', ]; /** @@ -25,12 +25,12 @@ public function fields(): array return [ 'success' => [ 'type' => Type::nonNull(Type::boolean()), - 'description' => 'Success' + 'description' => 'Success', ], 'message' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Message' - ] + 'description' => 'Message', + ], ]; } } diff --git a/src/Graphql/Types/OptionType.php b/src/Graphql/Types/OptionType.php index b37f0068e..e120fd8f2 100644 --- a/src/Graphql/Types/OptionType.php +++ b/src/Graphql/Types/OptionType.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Graphql\Types; -use Rebing\GraphQL\Support\Type as GraphQLType; use GraphQL\Type\Definition\Type; +use Rebing\GraphQL\Support\Type as GraphQLType; class OptionType extends GraphQLType { @@ -13,7 +13,7 @@ class OptionType extends GraphQLType */ protected $attributes = [ 'name' => 'Option', - 'description' => 'A type' + 'description' => 'A type', ]; /** @@ -25,16 +25,15 @@ public function fields(): array return [ 'value' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The value of the option' + 'description' => 'The value of the option', ], 'label' => [ 'type' => Type::string(), - 'description' => 'The label of the option' + 'description' => 'The label of the option', ], ]; } - /** * @param $country * @param array $args diff --git a/src/Graphql/Types/OrderType.php b/src/Graphql/Types/OrderType.php index cbaa7b4d2..5fddaf05c 100644 --- a/src/Graphql/Types/OrderType.php +++ b/src/Graphql/Types/OrderType.php @@ -2,11 +2,10 @@ namespace AvoRed\Framework\Graphql\Types; -use AvoRed\Framework\Database\Contracts\CategoryFilterModelInterface; use AvoRed\Framework\Database\Models\Order; -use Rebing\GraphQL\Support\Type as GraphQLType; use GraphQL\Type\Definition\Type; use Rebing\GraphQL\Support\Facades\GraphQL; +use Rebing\GraphQL\Support\Type as GraphQLType; class OrderType extends GraphQLType { @@ -16,7 +15,7 @@ class OrderType extends GraphQLType */ protected $attributes = [ 'name' => 'Order', - 'description' => 'A type' + 'description' => 'A type', ]; /** @@ -28,55 +27,55 @@ public function fields(): array return [ 'id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Id' + 'description' => 'Order Id', ], 'shipping_option' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Shipping Option' + 'description' => 'Order Shipping Option', ], 'payment_option' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Payment Option' + 'description' => 'Order Payment Option', ], 'order_status_id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Status Id' + 'description' => 'Order Status Id', ], 'order_status_name' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Status Name' + 'description' => 'Order Status Name', ], 'shipping_address_id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Shipping Address Id' + 'description' => 'Order Shipping Address Id', ], 'shipping_address' => [ 'type' => Type::nonNull(GraphQL::type('Address')), - 'description' => 'Order Shipping Address' + 'description' => 'Order Shipping Address', ], 'customer' => [ 'type' => Type::nonNull(GraphQL::type('Customer')), - 'description' => 'Order Customer' + 'description' => 'Order Customer', ], 'billing_address_id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Order Billing Address Id' + 'description' => 'Order Billing Address Id', ], 'billing_address' => [ 'type' => GraphQL::type('Address'), - 'description' => 'Order Billing Address' + 'description' => 'Order Billing Address', ], 'track_code' => [ 'type' => Type::string(), - 'description' => 'Order Tracking Code' + 'description' => 'Order Tracking Code', ], 'created_at' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Order created at' + 'description' => 'Order created at', ], 'updated_at' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Order updated at ' + 'description' => 'Order updated at ', ], ]; } diff --git a/src/Graphql/Types/PaymentType.php b/src/Graphql/Types/PaymentType.php index 5d2f80cd9..821f1073c 100644 --- a/src/Graphql/Types/PaymentType.php +++ b/src/Graphql/Types/PaymentType.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Graphql\Types; -use Rebing\GraphQL\Support\Type as GraphQLType; use GraphQL\Type\Definition\Type; +use Rebing\GraphQL\Support\Type as GraphQLType; class PaymentType extends GraphQLType { @@ -13,7 +13,7 @@ class PaymentType extends GraphQLType */ protected $attributes = [ 'name' => 'Payment', - 'description' => 'A type' + 'description' => 'A type', ]; /** @@ -25,15 +25,15 @@ public function fields(): array return [ 'name' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Payment Name' + 'description' => 'Payment Name', ], 'identifier' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Payment Identifier' + 'description' => 'Payment Identifier', ], 'view' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Payment View' + 'description' => 'Payment View', ], ]; } diff --git a/src/Graphql/Types/ProductType.php b/src/Graphql/Types/ProductType.php index 0dc6a390c..96107bee5 100644 --- a/src/Graphql/Types/ProductType.php +++ b/src/Graphql/Types/ProductType.php @@ -2,9 +2,8 @@ namespace AvoRed\Framework\Graphql\Types; -use Rebing\GraphQL\Support\Type as GraphQLType; use GraphQL\Type\Definition\Type; -use Rebing\GraphQL\Support\Facades\GraphQL; +use Rebing\GraphQL\Support\Type as GraphQLType; class ProductType extends GraphQLType { @@ -20,7 +19,7 @@ class ProductType extends GraphQLType */ protected $attributes = [ 'name' => 'Product', - 'description' => 'A type' + 'description' => 'A type', ]; /** @@ -32,95 +31,95 @@ public function fields(): array return [ 'id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Product Id' + 'description' => 'Product Id', ], 'name' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Product Name' + 'description' => 'Product Name', ], 'main_image_url' => [ 'type' => Type::string(), - 'description' => 'Product Main Image Url' + 'description' => 'Product Main Image Url', ], 'slug' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Product Slug' + 'description' => 'Product Slug', ], 'type' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Product Type' + 'description' => 'Product Type', ], 'sku' => [ 'type' => Type::string(), - 'description' => 'Product SKU' + 'description' => 'Product SKU', ], 'barcode' => [ 'type' => Type::string(), - 'description' => 'Product Barcode' + 'description' => 'Product Barcode', ], 'price' => [ 'type' => Type::float(), - 'description' => 'Product Price' + 'description' => 'Product Price', ], 'status' => [ 'type' => Type::int(), - 'description' => 'Product Status' + 'description' => 'Product Status', ], 'in_stock' => [ 'type' => Type::int(), - 'description' => 'Product in stock' + 'description' => 'Product in stock', ], 'track_stock' => [ 'type' => Type::int(), - 'description' => 'Product track stock' + 'description' => 'Product track stock', ], 'is_taxable' => [ 'type' => Type::int(), - 'description' => 'Product is taxable' + 'description' => 'Product is taxable', ], 'cost_price' => [ 'type' => Type::float(), - 'description' => 'Product cost price' + 'description' => 'Product cost price', ], 'qty' => [ 'type' => Type::float(), - 'description' => 'Product Qty' + 'description' => 'Product Qty', ], 'weight' => [ 'type' => Type::float(), - 'description' => 'Product Weight' + 'description' => 'Product Weight', ], 'height' => [ 'type' => Type::float(), - 'description' => 'Product Height' + 'description' => 'Product Height', ], 'width' => [ 'type' => Type::float(), - 'description' => 'Product Width' + 'description' => 'Product Width', ], 'length' => [ 'type' => Type::float(), - 'description' => 'Product Length' + 'description' => 'Product Length', ], 'description' => [ 'type' => Type::string(), - 'description' => 'Product Description' + 'description' => 'Product Description', ], 'meta_title' => [ 'type' => Type::string(), - 'description' => 'Product Meta title' + 'description' => 'Product Meta title', ], 'meta_description' => [ 'type' => Type::string(), - 'description' => 'Product Meta Description' + 'description' => 'Product Meta Description', ], 'created_at' => [ 'type' => Type::string(), - 'description' => 'Product created at' + 'description' => 'Product created at', ], 'updated_at' => [ 'type' => Type::string(), - 'description' => 'Product updated at' + 'description' => 'Product updated at', ], ]; } @@ -136,8 +135,10 @@ protected function resolveMainImageUrlField($product, $args) if (is_null($document)) { $color = str_pad(dechex(rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT); + return 'https://place-hold.it/250/' . $color . '&text=' . str_replace(' ', '-', $product->slug); } + return asset('storage/' . $document->path); } } diff --git a/src/Graphql/Types/ShippingType.php b/src/Graphql/Types/ShippingType.php index 3710a5e76..d53b930e3 100644 --- a/src/Graphql/Types/ShippingType.php +++ b/src/Graphql/Types/ShippingType.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Graphql\Types; -use Rebing\GraphQL\Support\Type as GraphQLType; use GraphQL\Type\Definition\Type; +use Rebing\GraphQL\Support\Type as GraphQLType; class ShippingType extends GraphQLType { @@ -13,7 +13,7 @@ class ShippingType extends GraphQLType */ protected $attributes = [ 'name' => 'Shipping', - 'description' => 'A type' + 'description' => 'A type', ]; /** @@ -25,15 +25,15 @@ public function fields(): array return [ 'name' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Shipping Name' + 'description' => 'Shipping Name', ], 'identifier' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Shipping Identifier' + 'description' => 'Shipping Identifier', ], 'view' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'Shipping View' + 'description' => 'Shipping View', ], ]; } diff --git a/src/Graphql/Types/SubscriberType.php b/src/Graphql/Types/SubscriberType.php index 8618d8fb6..5c31fa426 100644 --- a/src/Graphql/Types/SubscriberType.php +++ b/src/Graphql/Types/SubscriberType.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\Graphql\Types; -use Rebing\GraphQL\Support\Type as GraphQLType; use GraphQL\Type\Definition\Type; +use Rebing\GraphQL\Support\Type as GraphQLType; class SubscriberType extends GraphQLType { @@ -13,7 +13,7 @@ class SubscriberType extends GraphQLType */ protected $attributes = [ 'name' => 'Subscriber', - 'description' => 'A type' + 'description' => 'A type', ]; /** @@ -25,27 +25,27 @@ public function fields(): array return [ 'id' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The id of the subscriber' + 'description' => 'The id of the subscriber', ], 'customer_id' => [ 'type' => Type::string(), - 'description' => 'The customer id of the subscriber' + 'description' => 'The customer id of the subscriber', ], 'email' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The email of the subscriber' + 'description' => 'The email of the subscriber', ], 'status' => [ 'type' => Type::string(), - 'description' => 'The status of the subscriber' + 'description' => 'The status of the subscriber', ], 'created_at' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The created_at of the subscriber' + 'description' => 'The created_at of the subscriber', ], 'updated_at' => [ 'type' => Type::nonNull(Type::string()), - 'description' => 'The updated_at of the subscriber' + 'description' => 'The updated_at of the subscriber', ], ]; diff --git a/src/Module/Console/ControllerMakeCommand.php b/src/Module/Console/ControllerMakeCommand.php index c1b35930e..ea3ac08b1 100644 --- a/src/Module/Console/ControllerMakeCommand.php +++ b/src/Module/Console/ControllerMakeCommand.php @@ -2,10 +2,10 @@ namespace AvoRed\Framework\Module\Console; +use AvoRed\Framework\Module\Module; use Illuminate\Console\Command; -use Illuminate\Support\Facades\App; use Illuminate\Filesystem\Filesystem; -use AvoRed\Framework\Module\Module; +use Illuminate\Support\Facades\App; use Symfony\Component\Console\Input\InputArgument; class ControllerMakeCommand extends Command diff --git a/src/Module/Console/ModuleInstallCommand.php b/src/Module/Console/ModuleInstallCommand.php index 70a5d1f9a..75e050ab1 100644 --- a/src/Module/Console/ModuleInstallCommand.php +++ b/src/Module/Console/ModuleInstallCommand.php @@ -58,7 +58,7 @@ public function handle() { $identifier = strtolower($this->getIdentifierInput()); - /** @var $module \AvoRed\Framework\Module\ModuleItem */ + /** @var $module \AvoRed\Framework\Module\ModuleItem */ $module = Module::get($identifier); $provider = $module->namespace().'Module'; $this->call('vendor:publish', ['--provider' => $provider]); diff --git a/src/Module/Manager.php b/src/Module/Manager.php index c6516ef96..ff40035b1 100644 --- a/src/Module/Manager.php +++ b/src/Module/Manager.php @@ -2,14 +2,14 @@ namespace AvoRed\Framework\Module; -use RecursiveIteratorIterator; +use Illuminate\Filesystem\Filesystem; use Illuminate\Support\Collection; -use League\Flysystem\MountManager; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\File; -use Illuminate\Filesystem\Filesystem; -use League\Flysystem\Filesystem as Flysystem; use League\Flysystem\Adapter\Local as LocalAdapter; +use League\Flysystem\Filesystem as Flysystem; +use League\Flysystem\MountManager; +use RecursiveIteratorIterator; use Symfony\Component\Finder\Iterator\RecursiveDirectoryIterator; use Symfony\Component\Yaml\Yaml; @@ -134,6 +134,7 @@ public function sortByDependency(Collection $moduleList) return 1; } }); + return $modules; } @@ -177,6 +178,7 @@ public function getByPath($path) if ($path1 == $path2) { $actualModule = $this->moduleList[$module]; + break; } } diff --git a/src/Module/ModuleItem.php b/src/Module/ModuleItem.php index e69196614..77edc6b12 100644 --- a/src/Module/ModuleItem.php +++ b/src/Module/ModuleItem.php @@ -162,6 +162,7 @@ public function dependencies($dependencies = []) } $this->dependencies = $dependencies; + return $this; } diff --git a/src/Module/ModuleProvider.php b/src/Module/ModuleProvider.php index c18d7bb58..a117c83eb 100644 --- a/src/Module/ModuleProvider.php +++ b/src/Module/ModuleProvider.php @@ -4,8 +4,6 @@ use AvoRed\Framework\Module\Console\Provider; use Illuminate\Support\ServiceProvider; -use AvoRed\Framework\Module\Module; -use AvoRed\Framework\Module\Manager; class ModuleProvider extends ServiceProvider { diff --git a/src/Order/Controllers/OrderController.php b/src/Order/Controllers/OrderController.php index ed41bdfd0..ff9191b30 100644 --- a/src/Order/Controllers/OrderController.php +++ b/src/Order/Controllers/OrderController.php @@ -8,9 +8,10 @@ class OrderController extends Controller { /** - * @var OrderRepository $orderRepository + * @var OrderRepository */ protected $orderRepository; + /** * * @param OrderRepositroy $repository diff --git a/src/Order/Controllers/OrderStatusController.php b/src/Order/Controllers/OrderStatusController.php index 3e06a1a67..14ed952b0 100644 --- a/src/Order/Controllers/OrderStatusController.php +++ b/src/Order/Controllers/OrderStatusController.php @@ -2,9 +2,9 @@ namespace AvoRed\Framework\Order\Controllers; -use AvoRed\Framework\Order\Requests\OrderStatusRequest; use AvoRed\Framework\Database\Contracts\OrderStatusModelInterface; use AvoRed\Framework\Database\Models\OrderStatus; +use AvoRed\Framework\Order\Requests\OrderStatusRequest; use AvoRed\Framework\Tab\Tab; use Illuminate\Http\JsonResponse; use Illuminate\Routing\Controller; @@ -12,9 +12,10 @@ class OrderStatusController extends Controller { /** - * @var OrderStatusRepository $orderStatusRepository + * @var OrderStatusRepository */ protected $orderStatusRepository; + /** * * @param OrderStatusRepositroy $repository @@ -111,7 +112,7 @@ public function destroy(OrderStatus $orderStatus) return new JsonResponse([ 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.order-status')]) + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.order-status')]), ]); } } diff --git a/src/Order/Events/OrderProductCreated.php b/src/Order/Events/OrderProductCreated.php index a92f1b119..1644d93a4 100644 --- a/src/Order/Events/OrderProductCreated.php +++ b/src/Order/Events/OrderProductCreated.php @@ -11,9 +11,10 @@ class OrderProductCreated /** * Order Product model - * @var OrderProduct $orderProduct + * @var OrderProduct */ public $orderProduct; + /** * Create a new event instance. * diff --git a/src/Order/Listeners/OrderProductCreatedListener.php b/src/Order/Listeners/OrderProductCreatedListener.php index b3c4a6504..c6792d5fc 100644 --- a/src/Order/Listeners/OrderProductCreatedListener.php +++ b/src/Order/Listeners/OrderProductCreatedListener.php @@ -3,8 +3,6 @@ namespace AvoRed\Framework\Order\Listeners; use AvoRed\Framework\Order\Events\OrderProductCreated; -use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Queue\InteractsWithQueue; class OrderProductCreatedListener { diff --git a/src/Permission/PermissionItem.php b/src/Permission/PermissionItem.php index a110153b1..d63eb2670 100644 --- a/src/Permission/PermissionItem.php +++ b/src/Permission/PermissionItem.php @@ -3,7 +3,6 @@ namespace AvoRed\Framework\Permission; use Illuminate\Support\Facades\Lang; -use AvoRed\Framework\Permission\PermissionInterface; class PermissionItem implements PermissionInterface { diff --git a/src/Shipping/ShippingProvider.php b/src/Shipping/ShippingProvider.php index a23c505be..869da12ad 100644 --- a/src/Shipping/ShippingProvider.php +++ b/src/Shipping/ShippingProvider.php @@ -2,7 +2,6 @@ namespace AvoRed\Framework\Shipping; -use AvoRed\Framework\Shipping\Manager; use Illuminate\Support\ServiceProvider; class ShippingProvider extends ServiceProvider diff --git a/src/Support/Middleware/AdminAuth.php b/src/Support/Middleware/AdminAuth.php index 76a04469e..04a8cc2bd 100644 --- a/src/Support/Middleware/AdminAuth.php +++ b/src/Support/Middleware/AdminAuth.php @@ -14,7 +14,7 @@ class AdminAuth extends Middleware */ protected function redirectTo($request) { - if (!$request->expectsJson()) { + if (! $request->expectsJson()) { return route('admin.login'); } } diff --git a/src/Support/Providers/ComponentsProvider.php b/src/Support/Providers/ComponentsProvider.php index 48def3172..4d5c6181d 100644 --- a/src/Support/Providers/ComponentsProvider.php +++ b/src/Support/Providers/ComponentsProvider.php @@ -6,8 +6,8 @@ use AvoRed\Framework\System\Components\Form\Checkbox; use AvoRed\Framework\System\Components\Form\Form; use AvoRed\Framework\System\Components\Form\Input; -use AvoRed\Framework\System\Components\Layout; use AvoRed\Framework\System\Components\Form\Link; +use AvoRed\Framework\System\Components\Layout; use Illuminate\Support\Facades\Blade; use Illuminate\Support\ServiceProvider; diff --git a/src/Support/Providers/GraphqlProvider.php b/src/Support/Providers/GraphqlProvider.php index 6f8f59aa7..754bbe985 100644 --- a/src/Support/Providers/GraphqlProvider.php +++ b/src/Support/Providers/GraphqlProvider.php @@ -15,7 +15,6 @@ class GraphqlProvider extends ServiceProvider */ protected $defer = true; - /** * Register the service provider. * @@ -37,7 +36,6 @@ protected function registerRebingLaravelGraphQlProvider() App::register(GraphQLServiceProvider::class); } - /** * Register config data for AvoRed E commerce Framework * @return void diff --git a/src/System/Components/Form/Form.php b/src/System/Components/Form/Form.php index d5e40cf1c..c8fc7433d 100644 --- a/src/System/Components/Form/Form.php +++ b/src/System/Components/Form/Form.php @@ -24,7 +24,6 @@ class Form extends Component */ public $file; - /** * Create the component instance. * diff --git a/src/System/Components/Table/Header.php b/src/System/Components/Table/Header.php index 13b810a66..c27ea124f 100644 --- a/src/System/Components/Table/Header.php +++ b/src/System/Components/Table/Header.php @@ -9,7 +9,7 @@ class Header extends Component /** * Custom class for table header * - * @var string $class + * @var string */ public $class; diff --git a/src/System/Composers/LayoutComposer.php b/src/System/Composers/LayoutComposer.php index 6c7d7185f..2b6f67d9e 100644 --- a/src/System/Composers/LayoutComposer.php +++ b/src/System/Composers/LayoutComposer.php @@ -2,9 +2,9 @@ namespace AvoRed\Framework\System\Composers; -use Illuminate\View\View; use AvoRed\Framework\Menu\Menu; use Illuminate\Support\Facades\Route; +use Illuminate\View\View; class LayoutComposer { diff --git a/src/System/Controllers/RoleController.php b/src/System/Controllers/RoleController.php index 6cf5c1168..3ad76c26a 100644 --- a/src/System/Controllers/RoleController.php +++ b/src/System/Controllers/RoleController.php @@ -2,10 +2,10 @@ namespace AvoRed\Framework\System\Controllers; -use AvoRed\Framework\System\Requests\RoleRequest; use AvoRed\Framework\Database\Contracts\RoleModelInterface; use AvoRed\Framework\Database\Models\Role; use AvoRed\Framework\Permission\Permission; +use AvoRed\Framework\System\Requests\RoleRequest; use AvoRed\Framework\Tab\Tab; use Illuminate\Http\JsonResponse; use Illuminate\Routing\Controller; @@ -13,9 +13,10 @@ class RoleController extends Controller { /** - * @var \AvoRed\Framework\Database\Repository\RoleRepository $roleRepository + * @var \AvoRed\Framework\Database\Repository\RoleRepository */ protected $roleRepository; + /** * * @param \AvoRed\Framework\Database\Contracts\RoleModelInterface $repository @@ -112,7 +113,7 @@ public function destroy(Role $role) return new JsonResponse([ 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.role')]) + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.role')]), ]); } } diff --git a/src/Tab/Manager.php b/src/Tab/Manager.php index 78eafea48..08ad99bbf 100644 --- a/src/Tab/Manager.php +++ b/src/Tab/Manager.php @@ -48,7 +48,7 @@ public function get(string $key): Collection public function put(string $key, callable $tab) { $tabObject = new TabItem($tab); - if (!$this->collection->has($key)) { + if (! $this->collection->has($key)) { $collection = Collection::make([]); $collection->push($tabObject); } else { diff --git a/src/Tab/TabProvider.php b/src/Tab/TabProvider.php index e0bae51e9..bc1021eea 100644 --- a/src/Tab/TabProvider.php +++ b/src/Tab/TabProvider.php @@ -2,8 +2,6 @@ namespace AvoRed\Framework\Tab; -use AvoRed\Framework\Tab\Manager; -use AvoRed\Framework\Tab\TabItem; use Illuminate\Support\ServiceProvider; class TabProvider extends ServiceProvider diff --git a/src/User/Controllers/LoginController.php b/src/User/Controllers/LoginController.php index 1a01ba07d..c36337383 100644 --- a/src/User/Controllers/LoginController.php +++ b/src/User/Controllers/LoginController.php @@ -60,11 +60,11 @@ protected function sendLoginResponse(AdminLoginRequest $request): RedirectRespon return redirect()->intended($this->redirectPath()); } - public function redirectPath() { return route('admin.dashboard'); } + /** * Attempt to log the user into the application. * @@ -79,7 +79,6 @@ protected function attemptLogin(AdminLoginRequest $request) ); } - /** * Show the AvoRed Login Form to the User. * @return \Illuminate\View\View diff --git a/src/User/Controllers/ResetPasswordController.php b/src/User/Controllers/ResetPasswordController.php index 3128db017..f129618ce 100644 --- a/src/User/Controllers/ResetPasswordController.php +++ b/src/User/Controllers/ResetPasswordController.php @@ -3,12 +3,12 @@ namespace AvoRed\Framework\User\Controllers; use AvoRed\Framework\User\Requests\ResetAdminUserRequest; +use Illuminate\Auth\Events\PasswordReset; use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Password; use Illuminate\Support\Facades\Hash; -use Illuminate\Auth\Events\PasswordReset; +use Illuminate\Support\Facades\Password; class ResetPasswordController extends Controller { @@ -69,7 +69,6 @@ public function broker() return Password::broker('adminusers'); } - /** * Redirect Path after login and logout. * @return string @@ -150,7 +149,6 @@ protected function credentials(Request $request) ); } - /** * Get the response for a successful password reset. * diff --git a/src/User/Controllers/StaffController.php b/src/User/Controllers/StaffController.php index 81d0ed632..d8f0dffff 100644 --- a/src/User/Controllers/StaffController.php +++ b/src/User/Controllers/StaffController.php @@ -2,24 +2,24 @@ namespace AvoRed\Framework\User\Controllers; -use AvoRed\Framework\User\Requests\AdminUserRequest; use AvoRed\Framework\Database\Contracts\AdminUserModelInterface; use AvoRed\Framework\Database\Contracts\RoleModelInterface; use AvoRed\Framework\Database\Models\AdminUser; use AvoRed\Framework\Document\Document; use AvoRed\Framework\Tab\Tab; +use AvoRed\Framework\User\Requests\AdminUserRequest; use Illuminate\Http\JsonResponse; use Illuminate\Routing\Controller; class StaffController extends Controller { /** - * @var \AvoRed\Framework\Database\Repository\AdminUserRepository $adminUserRepository + * @var \AvoRed\Framework\Database\Repository\AdminUserRepository */ protected $adminUserRepository; /** - * @var \AvoRed\Framework\Database\Repository\RoleRepository $roleRepository + * @var \AvoRed\Framework\Database\Repository\RoleRepository */ protected $roleRepository; @@ -125,7 +125,7 @@ public function destroy(AdminUser $staff) return new JsonResponse([ 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.staff')]) + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.staff')]), ]); } } diff --git a/src/User/Controllers/SubscriberController.php b/src/User/Controllers/SubscriberController.php index f937a8b54..d1dd79c78 100644 --- a/src/User/Controllers/SubscriberController.php +++ b/src/User/Controllers/SubscriberController.php @@ -2,18 +2,17 @@ namespace AvoRed\Framework\User\Controllers; -use AvoRed\Framework\User\Requests\SubscriberRequest; use AvoRed\Framework\Database\Contracts\SubscriberModelInterface; use AvoRed\Framework\Database\Models\Subscriber; use AvoRed\Framework\Tab\Tab; +use AvoRed\Framework\User\Requests\SubscriberRequest; use Illuminate\Http\JsonResponse; -use Illuminate\Http\RedirectResponse; use Illuminate\Routing\Controller; class SubscriberController extends Controller { /** - * @var \AvoRed\Framework\Database\Repository\SubscriberRepository $subscriberRepository + * @var \AvoRed\Framework\Database\Repository\SubscriberRepository */ protected $subscriberRepository; @@ -107,7 +106,7 @@ public function destroy(Subscriber $subscriber) return new JsonResponse([ 'success' => true, - 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.subscriber')]) + 'message' => __('avored::system.success_delete_message', ['attribute' => __('avored::system.subscriber')]), ]); } } diff --git a/src/User/Notifications/CustomerResetPassword.php b/src/User/Notifications/CustomerResetPassword.php index 0d763e5dd..b493df043 100644 --- a/src/User/Notifications/CustomerResetPassword.php +++ b/src/User/Notifications/CustomerResetPassword.php @@ -4,8 +4,8 @@ use AvoRed\Framework\Database\Contracts\ConfigurationModelInterface; use AvoRed\Framework\Database\Repository\ConfigurationRepository; -use Illuminate\Notifications\Notification; use Illuminate\Notifications\Messages\MailMessage; +use Illuminate\Notifications\Notification; class CustomerResetPassword extends Notification { @@ -49,13 +49,13 @@ public function toMail($notifiable) $repositroy = $this->getConfigurationRepository(); $resetLink = $repositroy->getValueByCode('customer_reset_password_link'); $url = $resetLink . "?token=" . $this->token; + return (new MailMessage()) ->line('You are receiving this email because we received a password reset request for your account.') ->action('Reset Password', $url) ->line('If you did not request a password reset, no further action is required.'); } - /** * Get the instance of an Configuration repository * @return ConfigurationRepository diff --git a/src/User/Notifications/ResetPassword.php b/src/User/Notifications/ResetPassword.php index 791258bb0..70f0d7dce 100644 --- a/src/User/Notifications/ResetPassword.php +++ b/src/User/Notifications/ResetPassword.php @@ -2,8 +2,8 @@ namespace AvoRed\Framework\User\Notifications; -use Illuminate\Notifications\Notification; use Illuminate\Notifications\Messages\MailMessage; +use Illuminate\Notifications\Notification; class ResetPassword extends Notification { diff --git a/src/User/Requests/AdminLoginRequest.php b/src/User/Requests/AdminLoginRequest.php index fc882b2c2..37c486a69 100644 --- a/src/User/Requests/AdminLoginRequest.php +++ b/src/User/Requests/AdminLoginRequest.php @@ -25,7 +25,7 @@ public function rules() { return [ 'email' => 'required|email', - 'password' => 'required' + 'password' => 'required', ]; } } diff --git a/src/User/Requests/AdminUserRequest.php b/src/User/Requests/AdminUserRequest.php index 9843502fd..461e20575 100644 --- a/src/User/Requests/AdminUserRequest.php +++ b/src/User/Requests/AdminUserRequest.php @@ -26,7 +26,7 @@ public function rules() return [ 'first_name' => 'required', 'last_name' => 'required', - 'role_id' => 'required' + 'role_id' => 'required', ]; } } diff --git a/tests/Feature/CategoryControllerTest.php b/tests/Feature/CategoryControllerTest.php index ea54a7630..a9b70ae0f 100644 --- a/tests/Feature/CategoryControllerTest.php +++ b/tests/Feature/CategoryControllerTest.php @@ -7,7 +7,6 @@ class CategoryControllerTest extends TestCase { - /** @test */ public function test_category_page_index_form() { @@ -16,6 +15,7 @@ public function test_category_page_index_form() $response->assertStatus(200) ->assertViewIs('avored::catalog.category.index'); } + /** @test */ public function test_category_page_create_form() { @@ -61,7 +61,6 @@ public function test_category_page_update_form() ->assertRedirect(route('admin.category.index')); $this->assertDatabaseHas('categories', ['name' => 'unit test update', 'slug' => $category->slug]); - } /** @test */ @@ -75,6 +74,5 @@ public function test_category_page_destroy_form() ->assertStatus(200); $this->assertDatabaseMissing('categories', ['name' => 'unit test update', 'slug' => $category->slug]); - } } diff --git a/tests/Feature/ConfigurationControllerTest.php b/tests/Feature/ConfigurationControllerTest.php index b7978335e..ae8b204d0 100644 --- a/tests/Feature/ConfigurationControllerTest.php +++ b/tests/Feature/ConfigurationControllerTest.php @@ -26,4 +26,4 @@ public function test_category_store_route_test() $this->assertDatabaseHas('configurations', ['code' => 'site_title']); } -} \ No newline at end of file +} diff --git a/tests/Feature/DashboardControllerTest.php b/tests/Feature/DashboardControllerTest.php index 21a587b69..f1f9308f4 100644 --- a/tests/Feature/DashboardControllerTest.php +++ b/tests/Feature/DashboardControllerTest.php @@ -3,6 +3,7 @@ namespace AvoRed\Framework\Tests\Feature; use AvoRed\Framework\Tests\TestCase; + class DashboardControllerTest extends TestCase { /** @test */ diff --git a/tests/Feature/LoginControllerTest.php b/tests/Feature/LoginControllerTest.php index 459a935b1..e1ae14c0b 100644 --- a/tests/Feature/LoginControllerTest.php +++ b/tests/Feature/LoginControllerTest.php @@ -3,6 +3,7 @@ use AvoRed\Framework\Database\Contracts\AdminUserModelInterface; use AvoRed\Framework\Tests\TestCase; + class LoginControllerTest extends TestCase { /** @test */ @@ -32,7 +33,6 @@ public function test_login_page_post_form() ->actingAs($this->user, 'admin') ->post(route('admin.login.post', ['email' => $this->user->email, 'password' => $password])) ->assertRedirect(route('admin.dashboard')); - } /** @test */ diff --git a/tests/Feature/PageControllerTest.php b/tests/Feature/PageControllerTest.php index 2c7aa9519..232d3f2f4 100644 --- a/tests/Feature/PageControllerTest.php +++ b/tests/Feature/PageControllerTest.php @@ -7,7 +7,6 @@ class PageControllerTest extends TestCase { - /** @test */ public function test_page_index_route() { diff --git a/tests/Feature/ProductControllerTest.php b/tests/Feature/ProductControllerTest.php index 6f038c8e2..85b2b14c7 100644 --- a/tests/Feature/ProductControllerTest.php +++ b/tests/Feature/ProductControllerTest.php @@ -7,7 +7,6 @@ class ProductControllerTest extends TestCase { - /** @test */ public function test_product_index_route() { @@ -32,7 +31,7 @@ public function test_product_store_route() $data = [ 'name' => 'test product', 'slug' => 'test-product', - 'type' => 'BASIC' + 'type' => 'BASIC', ]; $this->createAdminUser() ->actingAs($this->user, 'admin') @@ -40,6 +39,7 @@ public function test_product_store_route() ->assertRedirect(route('admin.product.index')); $this->assertDatabaseHas('products', ['name' => 'test product']); } + /** @test */ public function test_product_edit_route() { diff --git a/tests/Functional/BreadcrumbTest.php b/tests/Functional/BreadcrumbTest.php index 3f7ce2fd2..c3770a2a6 100644 --- a/tests/Functional/BreadcrumbTest.php +++ b/tests/Functional/BreadcrumbTest.php @@ -2,9 +2,9 @@ namespace AvoRed\Framework\Tests\Functional; -use Illuminate\View\View; use AvoRed\Framework\Breadcrumb\Builder; use AvoRed\Framework\Tests\TestCase; +use Illuminate\View\View; /** @runInSeparateProcess */ class BreadcrumbTest extends TestCase diff --git a/tests/Functional/PermissionTest.php b/tests/Functional/PermissionTest.php index 8ec16faca..34cfcf765 100644 --- a/tests/Functional/PermissionTest.php +++ b/tests/Functional/PermissionTest.php @@ -3,8 +3,8 @@ namespace AvoRed\Framework\Tests\Functional; use AvoRed\Framework\Database\Models\AdminUser; -use AvoRed\Framework\Tests\TestCase; use AvoRed\Framework\Database\Models\Permission; +use AvoRed\Framework\Tests\TestCase; use Illuminate\Http\Response; class PermissionTest extends TestCase diff --git a/tests/TestCase.php b/tests/TestCase.php index c920c0cb7..e1216a813 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -2,13 +2,13 @@ namespace AvoRed\Framework\Tests; -use Orchestra\Testbench\TestCase as OrchestraTestCase; use AvoRed\Framework\AvoRedServiceProvider; use AvoRed\Framework\Database\Models\AdminUser; +use Faker\Generator as FakerGenerator; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Facades\Notification; use Illuminate\Testing\TestResponse; -use Faker\Generator as FakerGenerator; +use Orchestra\Testbench\TestCase as OrchestraTestCase; class TestCase extends OrchestraTestCase { @@ -100,6 +100,7 @@ public function getAvoRed($routeName): TestResponse ->actingAs($this->user, 'admin') ->get(route($routeName)); } + /** * Undocumented function * From e0416971b512c7172087358ec32d6b363ae12259 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 21 May 2022 11:48:14 +1200 Subject: [PATCH 39/48] wip --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f480eb972..7129c0d96 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -41,7 +41,7 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo + extensions: dom, curl, xdebug-beta, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo coverage: none - name: Setup problem matchers From f17c6694fd831ea3930246a4b291522d3d0b4aa7 Mon Sep 17 00:00:00 2001 From: Github Actions Bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 20 May 2022 23:50:32 +0000 Subject: [PATCH 40/48] Update code coverage badge --- badge-coverage.svg | 8 +- build/logs/clover.xml | 5119 ++++++++++++++++++++--------------------- 2 files changed, 2522 insertions(+), 2605 deletions(-) diff --git a/badge-coverage.svg b/badge-coverage.svg index 7b196712e..bca8f1969 100644 --- a/badge-coverage.svg +++ b/badge-coverage.svg @@ -8,9 +8,9 @@ coverage coverage - - - 100 % - 100 % + + + 43 % + 43 % \ No newline at end of file diff --git a/build/logs/clover.xml b/build/logs/clover.xml index 01a38102e..aff867072 100644 --- a/build/logs/clover.xml +++ b/build/logs/clover.xml @@ -1,508 +1,438 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + - - - + + + - - + + - + - - - - - - - - + + + + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + - + - + - + - + + - - + + - - - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - + + + + - - - - + + + + + + + - + - - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + - + - + + + + @@ -513,22 +443,25 @@ + + + - - - - - + + + + + + - + - + - @@ -547,28 +480,26 @@ - - - - - - - + + + + + + - - + + - + - + - @@ -595,70 +526,67 @@ - - - - + + + - - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + @@ -666,9 +594,9 @@ - + - + @@ -676,52 +604,50 @@ - + - + - + - - - - - + + + + + - + - + - - - - - + + + + + - - - + + + - - - - - - + + + + + + - - - - - - - + + + + + + - - + - + @@ -729,146 +655,141 @@ - + - + - + - - + + - - + + - - + + - - + + - - + - - - + + - + - - + + - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - - - - + + + - + - + - - + - - - - - - - - - - - - - + + + + + + + + + + + - - - - + + + - - - - + + + + + - + - - - - - - - + + + + + + + - + - + - + - + - + - + - - - - - + + + + + + + @@ -878,179 +799,178 @@ - + - + - + + + + + + + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + - + + + - + - - - - + + + - - + + + - + - - - + + - + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - - - + + + + + - + - + - + - + - - - + + - + - - - - + + + - + - - + - - - - - - + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + - - - - + + - + - + - + @@ -1064,52 +984,51 @@ - + - + - - - + + + - + - - - - - - + + + + + + - + - + - - - + + - + - + - - - - - + + + + + - + @@ -1135,128 +1054,122 @@ - + - + - - + + - - - + + + - + - - - - - + + + + + - + - + - - - - - - + + + + + + - - + - + - + - - - - + + + + + + - + - - - - - - - + + + + + + - - - - + + + - - - - - + + + + + - - - - - - + + + - + - + - - - - - + + + + + - - - - + + + + - - - - - - + + + + - + - + @@ -1266,22 +1179,26 @@ + + + + - - - - + + + + - + @@ -1289,9 +1206,9 @@ - + - + @@ -1303,23 +1220,22 @@ - + - + - + - - - - - - - - + + + + + + + + - - + @@ -1333,127 +1249,120 @@ - - + + - + - + - - - - - - - - - - + + + + + + + + + - + - + - - + - + - - - - - - - + + + + + + + - + - + - - + - - + - + - + - - - - - - - - - - - + + + + + + + + + + + - + + - - - + - + - + - - - + + - - - + + + + - + - - + + - - - + - + @@ -1461,9 +1370,9 @@ - + - + @@ -1471,180 +1380,195 @@ + - - - - - + + + - + - + - - - - - - - - - - - - + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + + - - - - - + + + + - + - + - - - - - + + + + + - + + + + - - - - + + + - + - + - - - - - - - - - + + + + + + + + + + - - - - - + + + + - + + - + - - - - - - + + + + + + - - - - + + - + - + - - - - - + + + + + + + - + + + - - + + + + + + + + + + + + + - + - - - - - - + + + + + - + + + - + - + - + + + + + + + + - + - + + + @@ -1653,170 +1577,296 @@ - + - + - + - + + + + + + - + - + - + - + + + + - + - + - + - - - + + + - - + + + + + + + + - - - + + - + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - + + + + + + + + + + - - - + - + - + - - - - - + + + + + - - + + + + + + - - + - + - + - + + - - + + - + - + - + + + + + + + - + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + + + - + + + + + + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + - + + + + + + + + + + + + + + + + @@ -1825,26 +1875,11 @@ - - - - - - - - - - - - - - - - + - + - + @@ -1853,48 +1888,70 @@ - - + + + - + - + - - - - - + + + + + + - + - + - + + + + - + - + - - - - - + + + + + - + - + + + + + + + + + + + + + + + + + + @@ -1902,27 +1959,26 @@ - - - - - + + + - - - + + + - - - - - - - - - + + + + + + + + + + - + @@ -1932,23 +1988,24 @@ - + - + - + - - - - - - - - - + + + + + + + + + + - + @@ -1958,184 +2015,272 @@ - + - + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + - + - + - - - + + + + + + + + + + - + - + - - - - + + + + + + + + + + + + + - - - - - + + + + - - - + + + + + - + - + - - - + + + + + + + + + + + + + + + + - + - + - + + - + + - + - + - - + + + + - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - - - - - - - - - + + + + + + + + + + + + - + - - - - - - - - - + - - - + + + + + + + + + - + - - - - + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - @@ -2162,215 +2307,186 @@ - - + + - - + + + - - - - - + - - - + + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - + + - - - + + + - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + @@ -2383,11 +2499,9 @@ - - @@ -2410,19 +2524,17 @@ - - - - + + + - + - + - - - - + + + @@ -2431,23 +2543,20 @@ - - - + - + - + - - - - + + + @@ -2459,11 +2568,9 @@ - - @@ -2489,72 +2596,60 @@ - - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + @@ -2562,21 +2657,21 @@ - + - - - - + + + + - + - + @@ -2584,53 +2679,49 @@ - - - - - - - + + + + + - - - + + + - + - - - - - - - - + + + + + + + + - - - + - - - - + + + + + - + - - - - + + + - + - + @@ -2671,59 +2762,50 @@ - - - + + - + + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + - - + - + - + - @@ -2750,31 +2832,30 @@ - - + - + - - - + + + - + - - + + + - + - - + - + @@ -2784,61 +2865,57 @@ - + - + - - - + + + - + - - - - - - - - - + + + + + + + + + - + - - - - - - - - - - + + + + + + + - + - + - - - + + - - - - - + + + + + - + @@ -2846,401 +2923,288 @@ - - + - + - - - - + + + - + - - - - - - - - - - - + + + + + + + + + + - - - - + + + + - - - - - + + + + + - - - + + - - - + + - + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + - + @@ -3250,54 +3214,48 @@ - + - + - + - + - - - - - - - - - - + + + + + + + - + - + - + - - + - + - + - - - - - + + + + + - - - + - + @@ -3305,60 +3263,52 @@ - + - + - + - - - - - - - + + + + + - + - + - - - - + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + @@ -3367,96 +3317,90 @@ - + - + - + - - - - - - - - - - - - + + + + + + + + + + + - + - - + - + - + - - - - - - - - + + + + + + + - + - + - - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + + + - + - - + - + - + @@ -3465,14 +3409,13 @@ - - + - + - + @@ -3481,98 +3424,90 @@ - - + - + - + - - - - - - - + + + + + + - + - + - - - - - - - - + + + + + + + - + - + - - - - - + + + - + - + - - - - - + + + - + - + - - - - - - + + + + + - + - + - - - - - - + + + + + - + - + - + + + - + - + - - - - - + + + + @@ -3585,17 +3520,15 @@ - - + - + - + - - - - + + + @@ -3605,54 +3538,49 @@ - - - + - + - + - - - - - - - - - + + + + + + + + + + + + + - + - - - - - - - + - + - + - + - + - @@ -3681,11 +3609,10 @@ - - + - + @@ -3693,255 +3620,229 @@ - + - + - + - - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - + - + - - - - - - + + + + + - + - + - - - - - - + + + + + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + - - + - - - - - - - + + + + + + + - - + + @@ -3954,112 +3855,122 @@ - + - + - + - - - + + + + - - - - - - - + + + + + + + + + - + + + - + + + - - - - - - - - - - - + + + + + + + + + + + + - + - + - + + - - - - + + + - - + + - + - - - - - - + + + + + + + - - - - - - + + + + + - - + + - - - + - + - + - - - - + + + + + - - + + - - + + + - - + + + - + + - - + + - + - + - + @@ -4069,14 +3980,17 @@ - + + + + - + - + - + @@ -4084,59 +3998,62 @@ - + + + + - + - - - - - + + + + + - + - - - - - + + + + + - + - - + + - + - - + + - + - - - - - + + + + + - + From ffb0426c341dafee6f03f20d760b8d82b3a8fe0d Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 21 May 2022 12:21:22 +1200 Subject: [PATCH 41/48] wip --- .php-cs-fixer.cache | 2 +- build/logs/clover.xml | 2185 ++++++++--------- composer.json | 29 +- composer.lock | 2060 +++++++++++++--- src/Database/Models/Product.php | 2 +- src/System/Console/InstallCommand.php | 3 +- tests/Feature/ConsoleTest.php | 33 + tests/Functional/AvoRedUserRepositoryTest.php | 17 + tests/Functional/BaseRepositoryTest.php | 56 + tests/Functional/RoleRepositoryTest.php | 23 + tests/TestCase.php | 2 + 11 files changed, 3037 insertions(+), 1375 deletions(-) create mode 100644 tests/Feature/ConsoleTest.php create mode 100644 tests/Functional/AvoRedUserRepositoryTest.php create mode 100644 tests/Functional/BaseRepositoryTest.php create mode 100644 tests/Functional/RoleRepositoryTest.php diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 8aaf0c448..4501ee110 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/Payment\/PaymentManager.php":1326422825,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/System\/Components\/Table.php":185782146,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Form.php":3658375489,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":2263340862,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Console\/InstallCommand.php":1971759778,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/System\/Controllers\/RoleController.php":1789155981,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Composers\/LayoutComposer.php":2864903115,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Menu\/MenuInterface.php":1575349914,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Middleware\/AdminAuth.php":1545878319,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Support\/Providers\/ComponentsProvider.php":3337118250,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/GraphqlProvider.php":1773456419,"src\/Shipping\/ShippingProvider.php":563008062,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/Manager.php":1350564326,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartManager.php":27883090,"src\/Cart\/CartProduct.php":2682517421,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Controllers\/SubscriberController.php":1204762325,"src\/User\/Controllers\/StaffController.php":1673603622,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/ResetPasswordController.php":1551283443,"src\/User\/Controllers\/LoginController.php":1493493054,"src\/User\/Notifications\/CustomerResetPassword.php":1854344558,"src\/User\/Notifications\/ResetPassword.php":281255553,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/AdminUserRequest.php":3299517768,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":147030067,"src\/Permission\/PermissionItem.php":1216083955,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/Permission.php":3394431707,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Order\/Events\/OrderProductCreated.php":902980050,"src\/Order\/Controllers\/OrderStatusController.php":4057285300,"src\/Order\/Controllers\/OrderController.php":3552000905,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1367006267,"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Catalog\/Controllers\/ProductController.php":3041624286,"src\/Catalog\/Controllers\/PropertyController.php":486848296,"src\/Catalog\/Controllers\/AttributeController.php":3969430835,"src\/Catalog\/Controllers\/CategoryController.php":630434366,"src\/Catalog\/Requests\/AttributeRequest.php":301020724,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Requests\/PropertyRequest.php":4220770750,"src\/AvoRedServiceProvider.php":3401229920,"src\/Cms\/Controllers\/PageController.php":3452992235,"src\/Cms\/Requests\/PageRequest.php":54003558,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/TabProvider.php":534397509,"src\/Tab\/Manager.php":3225115029,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":1449040286,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":1496069681,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":2979486623,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":1414822113,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":1123422067,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":3077369203,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":1042937758,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":3974451978,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1121150924,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3528440643,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":151007228,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":2382448987,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":4258363677,"src\/Graphql\/Traits\/AuthorizedTrait.php":4010113928,"src\/Graphql\/Types\/CategoryType.php":1226251382,"src\/Graphql\/Types\/NotificationType.php":2991627422,"src\/Graphql\/Types\/CustomerType.php":1096119925,"src\/Graphql\/Types\/CartProductType.php":1016487920,"src\/Graphql\/Types\/PaymentType.php":1483562530,"src\/Graphql\/Types\/OptionType.php":654375420,"src\/Graphql\/Types\/OrderType.php":2525955635,"src\/Graphql\/Types\/ShippingType.php":3184156584,"src\/Graphql\/Types\/ProductType.php":3378852402,"src\/Graphql\/Types\/SubscriberType.php":1951512283,"src\/Graphql\/Types\/AddressType.php":3721841296,"src\/Graphql\/Queries\/AddressQuery.php":3594963314,"src\/Graphql\/Queries\/AllOrdersQuery.php":3568313876,"src\/Graphql\/Queries\/CustomerQuery.php":4292589363,"src\/Graphql\/Queries\/ShippingQuery.php":1215874193,"src\/Graphql\/Queries\/LatestProductQuery.php":3127789590,"src\/Graphql\/Queries\/CategoryQuery.php":2432529982,"src\/Graphql\/Queries\/CountryOptionsQuery.php":4180943713,"src\/Graphql\/Queries\/CartItemsQuery.php":3072988608,"src\/Graphql\/Queries\/AllAddressQuery.php":936472871,"src\/Graphql\/Queries\/AllCategoryQuery.php":2435927149,"src\/Graphql\/Queries\/OrderQuery.php":2014638185,"src\/Graphql\/Queries\/PaymentQuery.php":3777538806,"src\/Graphql\/Queries\/ProductQuery.php":1278738294,"src\/Document\/DocumentProvider.php":1459771598,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":255345964,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Module\/Module.php":3950494461,"src\/Module\/Console\/ModuleInstallCommand.php":3023259964,"src\/Module\/Console\/ControllerMakeCommand.php":2227255476,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/ModuleItem.php":4207189860,"src\/Module\/ModuleProvider.php":3185570381,"src\/Module\/Manager.php":11475994,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/Product.php":1273764797,"src\/Database\/Models\/Subscriber.php":3670496531,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/CartProduct.php":3136654195,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/Customer.php":2263828288,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/Page.php":2763575681,"src\/Database\/Models\/OauthClient.php":254473326,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/Role.php":1513439857,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Property.php":112018056,"src\/Database\/Models\/Category.php":754484997,"src\/Database\/Models\/AdminUser.php":4240000469,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/PermissionModelInterface.php":2672896628,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/CategoryModelInterface.php":599097405,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/BaseInterface.php":2976052884,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AddressModelInterface.php":3466750629,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Contracts\/ProductModelInterface.php":833968823,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/AttributeModelInterface.php":1940938768,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/OrderModelInterface.php":1403694963,"src\/Database\/Repository\/CustomerRepository.php":1326674603,"src\/Database\/Repository\/CategoryRepository.php":1321759123,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/ConfigurationRepository.php":416355350,"src\/Database\/Repository\/PermissionRepository.php":2119258321,"src\/Database\/Repository\/PageRepository.php":2198718872,"src\/Database\/Repository\/AddressRepository.php":4248393077,"src\/Database\/Repository\/CartProductRepository.php":3120284469,"src\/Database\/Repository\/ProductRepository.php":1985066379,"src\/Database\/Repository\/OrderRepository.php":2007359767,"src\/Database\/Repository\/OrderProductRepository.php":2946868763,"src\/Database\/Repository\/AttributeRepository.php":319881864,"src\/Database\/Repository\/RoleRepository.php":5919928,"src\/Database\/Repository\/DocumentRepository.php":3566968401,"src\/Database\/Repository\/SubscriberRepository.php":2081568623,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":288537803,"src\/Database\/Repository\/AdminUserRepository.php":1417871142,"src\/Database\/Repository\/OrderStatusRepository.php":801135838,"src\/Database\/Repository\/PropertyRepository.php":981116305,"tests\/Feature\/LoginControllerTest.php":2993789982,"tests\/Feature\/ConfigurationControllerTest.php":2250951350,"tests\/Feature\/OrderStatusControllerTest.php":4239108055,"tests\/Feature\/CategoryControllerTest.php":1285566633,"tests\/Feature\/DashboardControllerTest.php":3484214895,"tests\/Feature\/AuthControllerTest.php":334195238,"tests\/Feature\/RoleControllerTest.php":3372848350,"tests\/Feature\/AdminUserControllerTest.php":3108252446,"tests\/Feature\/ProductControllerTest.php":3051194665,"tests\/Feature\/PageControllerTest.php":1543191345,"tests\/Feature\/OrderControllerTest.php":1550645149,"tests\/TestCase.php":3073410588,"tests\/Functional\/ProductModelTest.php":52193424,"tests\/Functional\/BreadcrumbTest.php":2387292147,"tests\/Functional\/PermissionTest.php":724699872}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Order\/Events\/OrderProductCreated.php":902980050,"src\/Order\/Controllers\/OrderStatusController.php":4057285300,"src\/Order\/Controllers\/OrderController.php":3552000905,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1367006267,"src\/Database\/Repository\/PageRepository.php":2198718872,"src\/Database\/Repository\/SubscriberRepository.php":2081568623,"src\/Database\/Repository\/CustomerRepository.php":1326674603,"src\/Database\/Repository\/OrderProductRepository.php":2946868763,"src\/Database\/Repository\/CategoryRepository.php":1321759123,"src\/Database\/Repository\/ProductRepository.php":1985066379,"src\/Database\/Repository\/DocumentRepository.php":3566968401,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/PropertyRepository.php":981116305,"src\/Database\/Repository\/AttributeRepository.php":319881864,"src\/Database\/Repository\/OrderRepository.php":2007359767,"src\/Database\/Repository\/RoleRepository.php":5919928,"src\/Database\/Repository\/CartProductRepository.php":3120284469,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":288537803,"src\/Database\/Repository\/AdminUserRepository.php":1417871142,"src\/Database\/Repository\/ConfigurationRepository.php":416355350,"src\/Database\/Repository\/PermissionRepository.php":2119258321,"src\/Database\/Repository\/OrderStatusRepository.php":801135838,"src\/Database\/Repository\/AddressRepository.php":4248393077,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Contracts\/AddressModelInterface.php":3466750629,"src\/Database\/Contracts\/ProductModelInterface.php":833968823,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/CategoryModelInterface.php":599097405,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/PermissionModelInterface.php":2672896628,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/OrderModelInterface.php":1403694963,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/AttributeModelInterface.php":1940938768,"src\/Database\/Contracts\/BaseInterface.php":2976052884,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Models\/Category.php":754484997,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/Product.php":2993975445,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Role.php":1513439857,"src\/Database\/Models\/OauthClient.php":254473326,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/Customer.php":2263828288,"src\/Database\/Models\/Property.php":112018056,"src\/Database\/Models\/AdminUser.php":4240000469,"src\/Database\/Models\/CartProduct.php":3136654195,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/Subscriber.php":3670496531,"src\/Database\/Models\/Page.php":2763575681,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":3401229920,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/Payment\/PaymentManager.php":1326422825,"src\/Module\/ModuleProvider.php":3185570381,"src\/Module\/ModuleItem.php":4207189860,"src\/Module\/Module.php":3950494461,"src\/Module\/Manager.php":11475994,"src\/Module\/Console\/ModuleInstallCommand.php":3023259964,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ControllerMakeCommand.php":2227255476,"src\/Catalog\/Requests\/AttributeRequest.php":301020724,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/PropertyRequest.php":4220770750,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Controllers\/AttributeController.php":3969430835,"src\/Catalog\/Controllers\/PropertyController.php":486848296,"src\/Catalog\/Controllers\/ProductController.php":3041624286,"src\/Catalog\/Controllers\/CategoryController.php":630434366,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":147030067,"src\/User\/Requests\/AdminUserRequest.php":3299517768,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/LoginController.php":1493493054,"src\/User\/Controllers\/ResetPasswordController.php":1551283443,"src\/User\/Controllers\/SubscriberController.php":1204762325,"src\/User\/Controllers\/StaffController.php":1673603622,"src\/User\/Notifications\/ResetPassword.php":281255553,"src\/User\/Notifications\/CustomerResetPassword.php":1854344558,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":255345964,"src\/Document\/DocumentProvider.php":1459771598,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/ShippingProvider.php":563008062,"src\/Shipping\/Manager.php":1350564326,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabProvider.php":534397509,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/Manager.php":3225115029,"src\/System\/Composers\/LayoutComposer.php":2864903115,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Form.php":3658375489,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":2263340862,"src\/System\/Components\/Table.php":185782146,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Controllers\/RoleController.php":1789155981,"src\/System\/Console\/InstallCommand.php":3096556502,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/Cms\/Requests\/PageRequest.php":54003558,"src\/Cms\/Controllers\/PageController.php":3452992235,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/AdminAuth.php":1545878319,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/ComponentsProvider.php":3337118250,"src\/Support\/Providers\/GraphqlProvider.php":1773456419,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Graphql\/Types\/CustomerType.php":1096119925,"src\/Graphql\/Types\/SubscriberType.php":1951512283,"src\/Graphql\/Types\/PaymentType.php":1483562530,"src\/Graphql\/Types\/ShippingType.php":3184156584,"src\/Graphql\/Types\/NotificationType.php":2991627422,"src\/Graphql\/Types\/CategoryType.php":1226251382,"src\/Graphql\/Types\/ProductType.php":3378852402,"src\/Graphql\/Types\/OptionType.php":654375420,"src\/Graphql\/Types\/CartProductType.php":1016487920,"src\/Graphql\/Types\/AddressType.php":3721841296,"src\/Graphql\/Types\/OrderType.php":2525955635,"src\/Graphql\/Traits\/AuthorizedTrait.php":4010113928,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":4258363677,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3528440643,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":151007228,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":2382448987,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":1496069681,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":1449040286,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":2979486623,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1121150924,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":1123422067,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":3974451978,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":1042937758,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":3077369203,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":1414822113,"src\/Graphql\/Queries\/OrderQuery.php":2014638185,"src\/Graphql\/Queries\/ShippingQuery.php":1215874193,"src\/Graphql\/Queries\/LatestProductQuery.php":3127789590,"src\/Graphql\/Queries\/ProductQuery.php":1278738294,"src\/Graphql\/Queries\/AllOrdersQuery.php":3568313876,"src\/Graphql\/Queries\/CountryOptionsQuery.php":4180943713,"src\/Graphql\/Queries\/CustomerQuery.php":4292589363,"src\/Graphql\/Queries\/CategoryQuery.php":2432529982,"src\/Graphql\/Queries\/AllAddressQuery.php":936472871,"src\/Graphql\/Queries\/CartItemsQuery.php":3072988608,"src\/Graphql\/Queries\/PaymentQuery.php":3777538806,"src\/Graphql\/Queries\/AllCategoryQuery.php":2435927149,"src\/Graphql\/Queries\/AddressQuery.php":3594963314,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuInterface.php":1575349914,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Cart\/CartManager.php":27883090,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartProduct.php":2682517421,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionItem.php":1216083955,"src\/Permission\/Permission.php":3394431707}} \ No newline at end of file diff --git a/build/logs/clover.xml b/build/logs/clover.xml index aff867072..67e8b55a4 100644 --- a/build/logs/clover.xml +++ b/build/logs/clover.xml @@ -1,268 +1,268 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - + + - + - + - - - - - + + + + + - - - - + + + + - - - - - - + + + + + + - + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - - + + - + @@ -270,7 +270,7 @@ - + @@ -347,7 +347,7 @@ - + @@ -405,19 +405,19 @@ - + - - - - + + + + - + @@ -456,7 +456,7 @@ - + @@ -493,7 +493,7 @@ - + @@ -533,7 +533,7 @@ - + @@ -576,7 +576,7 @@ - + @@ -586,7 +586,7 @@ - + @@ -596,7 +596,7 @@ - + @@ -606,7 +606,7 @@ - + @@ -616,7 +616,7 @@ - + @@ -647,7 +647,7 @@ - + @@ -657,64 +657,64 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -722,7 +722,7 @@ - + @@ -730,12 +730,12 @@ - - - + + + - - + + @@ -749,11 +749,11 @@ - - + + - + @@ -765,7 +765,7 @@ - + @@ -773,13 +773,13 @@ - + - + @@ -789,7 +789,7 @@ - + @@ -801,19 +801,19 @@ - + - + - + @@ -853,7 +853,7 @@ - + @@ -865,17 +865,17 @@ - + - + - - - - - + + + + + - + @@ -893,7 +893,7 @@ - + @@ -903,13 +903,13 @@ - + - + @@ -921,7 +921,7 @@ - + @@ -929,7 +929,7 @@ - + @@ -943,7 +943,7 @@ - + @@ -964,13 +964,13 @@ - + - + @@ -986,7 +986,7 @@ - + @@ -994,7 +994,7 @@ - + @@ -1006,19 +1006,19 @@ - + - - - - - - + + + + + + - + @@ -1028,7 +1028,7 @@ - + @@ -1056,25 +1056,25 @@ - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -1084,7 +1084,7 @@ - + @@ -1145,7 +1145,7 @@ - + @@ -1167,7 +1167,7 @@ - + @@ -1198,7 +1198,7 @@ - + @@ -1208,7 +1208,7 @@ - + @@ -1222,7 +1222,7 @@ - + @@ -1252,7 +1252,7 @@ - + @@ -1266,7 +1266,7 @@ - + @@ -1278,7 +1278,7 @@ - + @@ -1290,7 +1290,7 @@ - + @@ -1309,7 +1309,7 @@ - + @@ -1333,18 +1333,18 @@ - + - + - - - - - - - - + + + + + + + + @@ -1360,9 +1360,9 @@ - + - + @@ -1372,7 +1372,7 @@ - + @@ -1387,19 +1387,19 @@ - + - - - - - - + + + + + + - + @@ -1407,24 +1407,24 @@ - + - - - - - - - - + + + + + + + + - + @@ -1440,7 +1440,7 @@ - + @@ -1460,7 +1460,7 @@ - + @@ -1499,7 +1499,7 @@ - + @@ -1545,7 +1545,7 @@ - + @@ -1579,7 +1579,7 @@ - + @@ -1600,7 +1600,7 @@ - + @@ -1617,7 +1617,7 @@ - + @@ -1637,7 +1637,7 @@ - + @@ -1685,7 +1685,7 @@ - + @@ -1702,7 +1702,7 @@ - + @@ -1721,7 +1721,7 @@ - + @@ -1738,7 +1738,7 @@ - + @@ -1790,7 +1790,7 @@ - + @@ -1833,7 +1833,7 @@ - + @@ -1848,7 +1848,7 @@ - + @@ -1863,7 +1863,7 @@ - + @@ -1877,7 +1877,7 @@ - + @@ -1892,7 +1892,7 @@ - + @@ -1905,7 +1905,7 @@ - + @@ -1922,7 +1922,7 @@ - + @@ -1932,7 +1932,7 @@ - + @@ -1949,7 +1949,7 @@ - + @@ -1963,7 +1963,7 @@ - + @@ -1978,7 +1978,7 @@ - + @@ -1990,7 +1990,7 @@ - + @@ -2005,7 +2005,7 @@ - + @@ -2017,7 +2017,7 @@ - + @@ -2025,7 +2025,7 @@ - + @@ -2051,7 +2051,7 @@ - + @@ -2066,7 +2066,7 @@ - + @@ -2095,7 +2095,7 @@ - + @@ -2116,7 +2116,7 @@ - + @@ -2126,7 +2126,7 @@ - + @@ -2140,7 +2140,7 @@ - + @@ -2169,7 +2169,7 @@ - + @@ -2186,7 +2186,7 @@ - + @@ -2223,7 +2223,7 @@ - + @@ -2240,7 +2240,7 @@ - + @@ -2254,27 +2254,27 @@ - + - - + + - + - - - - - - - - - + + + + + + + + + @@ -2320,173 +2320,173 @@ - + - + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + @@ -2524,17 +2524,17 @@ - - + + - + - - - + + + @@ -2550,13 +2550,13 @@ - + - - - + + + @@ -2596,49 +2596,49 @@ - - + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + @@ -2671,7 +2671,7 @@ - + @@ -2711,15 +2711,15 @@ - + - - + + - + @@ -2768,27 +2768,27 @@ - + - - - - - - - - - - - - + + + + + + + + + + + + - + @@ -2800,7 +2800,7 @@ - + @@ -2835,7 +2835,7 @@ - + @@ -2843,7 +2843,7 @@ - + @@ -2855,7 +2855,7 @@ - + @@ -2867,7 +2867,7 @@ - + @@ -2875,7 +2875,7 @@ - + @@ -2889,33 +2889,33 @@ - + - - + + - + - - + + - - - - - + + + + + - + @@ -2925,277 +2925,277 @@ - + - - + + - + - - - - - - - - + + + + + + + + - - - - + + + + - - - - - + + + + + - + - + - + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3204,7 +3204,7 @@ - + @@ -3216,7 +3216,7 @@ - + @@ -3224,17 +3224,17 @@ - + - - + + - + @@ -3243,7 +3243,7 @@ - + @@ -3255,7 +3255,7 @@ - + @@ -3265,50 +3265,50 @@ - + - - - - + + + + - + - - + + - + - - - - - - - - + + + + + + + + - + - - - - - + + + + + - + @@ -3319,7 +3319,7 @@ - + @@ -3333,7 +3333,7 @@ - + @@ -3346,7 +3346,7 @@ - + @@ -3358,7 +3358,7 @@ - + @@ -3372,7 +3372,7 @@ - + @@ -3385,7 +3385,7 @@ - + @@ -3398,7 +3398,7 @@ - + @@ -3413,7 +3413,7 @@ - + @@ -3428,7 +3428,7 @@ - + @@ -3439,7 +3439,7 @@ - + @@ -3451,7 +3451,7 @@ - + @@ -3459,7 +3459,7 @@ - + @@ -3467,7 +3467,7 @@ - + @@ -3477,7 +3477,7 @@ - + @@ -3487,7 +3487,7 @@ - + @@ -3500,52 +3500,51 @@ - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + @@ -3567,7 +3566,7 @@ - + @@ -3575,7 +3574,7 @@ - + @@ -3612,7 +3611,7 @@ - + @@ -3622,153 +3621,153 @@ - + - - + + - - - - - - - - - + + + + + + + + + - + - - + + - + - - - - - - + + + + + + - - - - + + + + - - - - + + + + - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -3779,27 +3778,27 @@ - + - + - - - - - + + + + + - + - + - - - - - + + + + + - + @@ -3824,7 +3823,7 @@ - + @@ -3857,7 +3856,7 @@ - + @@ -3898,7 +3897,7 @@ - + @@ -3937,7 +3936,7 @@ - + @@ -3968,7 +3967,7 @@ - + @@ -3988,7 +3987,7 @@ - + @@ -4003,7 +4002,7 @@ - + @@ -4013,7 +4012,7 @@ - + @@ -4023,7 +4022,7 @@ - + @@ -4034,7 +4033,7 @@ - + @@ -4044,7 +4043,7 @@ - + @@ -4054,6 +4053,6 @@ - + diff --git a/composer.json b/composer.json index 385561164..3b6ec5c61 100644 --- a/composer.json +++ b/composer.json @@ -17,9 +17,18 @@ ], "require": { "php": "^8.0|^8.1", - "illuminate/support": "^9.0", - "laravel/passport": "^10.4", - "rebing/graphql-laravel": "^8.2" + "illuminate/auth": "^8.2|^9.0", + "illuminate/contracts": "^8.2|^9.0", + "illuminate/database": "^8.2|^9.0", + "illuminate/routing": "^8.2|^9.0", + "illuminate/http": "^8.2|^9.0", + "illuminate/support": "^8.2|^9.0", + "illuminate/view": "^8.2|^9.0", + "ramsey/uuid": "^4.2", + "rebing/graphql-laravel": "^8.2", + "nyholm/psr7": "^1.4", + "laravel/passport": "^10.1|^10.2|^10.3", + "symfony/yaml": "^5.3|^6.0" }, "require-dev": { "brianium/paratest": "^6.4", @@ -53,6 +62,20 @@ "laravel": { "providers": [ "AvoRed\\Framework\\AvoRedServiceProvider" + ], + "aliases": { + "Module": "AvoRed\\Framework\\Module\\Module", + "Cart": "AvoRed\\Framework\\Cart\\Cart", + "Breadcrumb": "AvoRed\\Framework\\Breadcrumb\\Breadcrumb", + "Document": "AvoRed\\Framework\\Document\\Document", + "Menu": "AvoRed\\Framework\\Menu\\Menu", + "Payment": "AvoRed\\Framework\\Payment\\Payment", + "Permission": "AvoRed\\Framework\\Permission\\Permission", + "Shipping": "AvoRed\\Framework\\Shipping\\Shipping", + "Tab": "AvoRed\\Framework\\Tab\\Tab" + }, + "dont-discover": [ + "rebing/graphql-laravel" ] } }, diff --git a/composer.lock b/composer.lock index 75eb5a240..9223f4e8b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "24f467fe9046ebf3d8e2ec07b0642940", + "content-hash": "1864262debcf30fc4fcab1e48a485273", "packages": [ { "name": "brick/math", @@ -66,6 +66,72 @@ ], "time": "2021-08-15T20:50:18+00:00" }, + { + "name": "defuse/php-encryption", + "version": "v2.3.1", + "source": { + "type": "git", + "url": "https://github.com/defuse/php-encryption.git", + "reference": "77880488b9954b7884c25555c2a0ea9e7053f9d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/defuse/php-encryption/zipball/77880488b9954b7884c25555c2a0ea9e7053f9d2", + "reference": "77880488b9954b7884c25555c2a0ea9e7053f9d2", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "paragonie/random_compat": ">= 2", + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4|^5|^6|^7|^8|^9" + }, + "bin": [ + "bin/generate-defuse-key" + ], + "type": "library", + "autoload": { + "psr-4": { + "Defuse\\Crypto\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Hornby", + "email": "taylor@defuse.ca", + "homepage": "https://defuse.ca/" + }, + { + "name": "Scott Arciszewski", + "email": "info@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "Secure PHP Encryption Library", + "keywords": [ + "aes", + "authenticated encryption", + "cipher", + "crypto", + "cryptography", + "encrypt", + "encryption", + "openssl", + "security", + "symmetric key cryptography" + ], + "support": { + "issues": "https://github.com/defuse/php-encryption/issues", + "source": "https://github.com/defuse/php-encryption/tree/v2.3.1" + }, + "time": "2021-04-09T23:57:26+00:00" + }, { "name": "dflydev/dot-access-data", "version": "v3.0.1", @@ -437,6 +503,68 @@ ], "time": "2021-10-11T09:18:27+00:00" }, + { + "name": "firebase/php-jwt", + "version": "v6.2.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "d28e6df83830252650da4623c78aaaf98fb385f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/d28e6df83830252650da4623c78aaaf98fb385f3", + "reference": "d28e6df83830252650da4623c78aaaf98fb385f3", + "shasum": "" + }, + "require": { + "php": "^7.1||^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^6.5||^7.4", + "phpspec/prophecy-phpunit": "^1.1", + "phpunit/phpunit": "^7.5||^9.5", + "psr/cache": "^1.0||^2.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.2.0" + }, + "time": "2022-05-13T20:54:50+00:00" + }, { "name": "fruitcake/php-cors", "version": "v1.2.0", @@ -570,18 +698,76 @@ ], "time": "2021-11-21T21:41:47+00:00" }, + { + "name": "laragraph/utils", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/laragraph/utils.git", + "reference": "43b522c37706fa4867dff9c404cac5af4d825c7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laragraph/utils/zipball/43b522c37706fa4867dff9c404cac5af4d825c7d", + "reference": "43b522c37706fa4867dff9c404cac5af4d825c7d", + "shasum": "" + }, + "require": { + "illuminate/contracts": "5.6.* || 5.7.* || 5.8.* || ^6 || ^7 || ^8 || ^9", + "illuminate/http": "5.6.* || 5.7.* || 5.8.* || ^6 || ^7 || ^8 || ^9", + "php": "^7.2 || ^8", + "thecodingmachine/safe": "^1.1 || ^2", + "webonyx/graphql-php": "^0.13.2 || ^14" + }, + "require-dev": { + "ergebnis/composer-normalize": "^2.11", + "jangregor/phpstan-prophecy": "^1", + "mll-lab/php-cs-fixer-config": "^4.4", + "orchestra/testbench": "3.6.* || 3.7.* || 3.8.* || 3.9.* || ^4 || ^5 || ^6 || ^7", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^1", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9", + "thecodingmachine/phpstan-safe-rule": "^1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laragraph\\Utils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Benedikt Franke", + "email": "benedikt@franke.tech" + } + ], + "description": "Utilities for using GraphQL with Laravel", + "homepage": "https://github.com/laragraph/utils", + "support": { + "issues": "https://github.com/laragraph/utils/issues", + "source": "https://github.com/laragraph/utils" + }, + "time": "2022-04-26T15:09:27+00:00" + }, { "name": "laravel/framework", - "version": "v9.12.2", + "version": "v9.13.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "b5b5c635f1a93f277b5248725a1f7ffc97e20810" + "reference": "87b6cc8bc41d1cf85c7c1401cddde8570a3b95bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b5b5c635f1a93f277b5248725a1f7ffc97e20810", - "reference": "b5b5c635f1a93f277b5248725a1f7ffc97e20810", + "url": "https://api.github.com/repos/laravel/framework/zipball/87b6cc8bc41d1cf85c7c1401cddde8570a3b95bb", + "reference": "87b6cc8bc41d1cf85c7c1401cddde8570a3b95bb", "shasum": "" }, "require": { @@ -747,20 +933,97 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-05-11T13:38:26+00:00" + "time": "2022-05-17T14:07:43+00:00" + }, + { + "name": "laravel/passport", + "version": "v10.4.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/passport.git", + "reference": "b62b418a6d9e9aca231a587be0fc14dc55cd8d77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/passport/zipball/b62b418a6d9e9aca231a587be0fc14dc55cd8d77", + "reference": "b62b418a6d9e9aca231a587be0fc14dc55cd8d77", + "shasum": "" + }, + "require": { + "ext-json": "*", + "firebase/php-jwt": "^6.0", + "illuminate/auth": "^8.37|^9.0", + "illuminate/console": "^8.37|^9.0", + "illuminate/container": "^8.37|^9.0", + "illuminate/contracts": "^8.37|^9.0", + "illuminate/cookie": "^8.37|^9.0", + "illuminate/database": "^8.37|^9.0", + "illuminate/encryption": "^8.37|^9.0", + "illuminate/http": "^8.37|^9.0", + "illuminate/support": "^8.37|^9.0", + "lcobucci/jwt": "^3.4|^4.0", + "league/oauth2-server": "^8.2", + "nyholm/psr7": "^1.3", + "php": "^7.3|^8.0", + "phpseclib/phpseclib": "^2.0|^3.0", + "symfony/psr-http-message-bridge": "^2.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^6.0|^7.0", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Passport\\PassportServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Passport\\": "src/", + "Laravel\\Passport\\Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Passport provides OAuth2 server support to Laravel.", + "keywords": [ + "laravel", + "oauth", + "passport" + ], + "support": { + "issues": "https://github.com/laravel/passport/issues", + "source": "https://github.com/laravel/passport" + }, + "time": "2022-04-16T13:38:08+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.1.1", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e" + "reference": "09f0e9fb61829f628205b7c94906c28740ff9540" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/9e4b005daa20b0c161f3845040046dc9ddc1d74e", - "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/09f0e9fb61829f628205b7c94906c28740ff9540", + "reference": "09f0e9fb61829f628205b7c94906c28740ff9540", "shasum": "" }, "require": { @@ -806,20 +1069,155 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2022-02-11T19:23:53+00:00" + "time": "2022-05-16T17:09:47+00:00" + }, + { + "name": "lcobucci/clock", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/clock.git", + "reference": "fb533e093fd61321bfcbac08b131ce805fe183d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/fb533e093fd61321bfcbac08b131ce805fe183d3", + "reference": "fb533e093fd61321bfcbac08b131ce805fe183d3", + "shasum": "" + }, + "require": { + "php": "^8.0", + "stella-maris/clock": "^0.1.4" + }, + "require-dev": { + "infection/infection": "^0.26", + "lcobucci/coding-standard": "^8.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Lcobucci\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com" + } + ], + "description": "Yet another clock abstraction", + "support": { + "issues": "https://github.com/lcobucci/clock/issues", + "source": "https://github.com/lcobucci/clock/tree/2.2.0" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2022-04-19T19:34:17+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "4.1.5", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "fe2d89f2eaa7087af4aa166c6f480ef04e000582" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/fe2d89f2eaa7087af4aa166c6f480ef04e000582", + "reference": "fe2d89f2eaa7087af4aa166c6f480ef04e000582", + "shasum": "" + }, + "require": { + "ext-hash": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-sodium": "*", + "lcobucci/clock": "^2.0", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "infection/infection": "^0.21", + "lcobucci/coding-standard": "^6.0", + "mikey179/vfsstream": "^1.6.7", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/php-invoker": "^3.1", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "support": { + "issues": "https://github.com/lcobucci/jwt/issues", + "source": "https://github.com/lcobucci/jwt/tree/4.1.5" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2021-09-28T19:34:56+00:00" }, { "name": "league/commonmark", - "version": "2.3.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "32a49eb2b38fe5e5c417ab748a45d0beaab97955" + "reference": "cb36fee279f7fca01d5d9399ddd1b37e48e2eca1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/32a49eb2b38fe5e5c417ab748a45d0beaab97955", - "reference": "32a49eb2b38fe5e5c417ab748a45d0beaab97955", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/cb36fee279f7fca01d5d9399ddd1b37e48e2eca1", + "reference": "cb36fee279f7fca01d5d9399ddd1b37e48e2eca1", "shasum": "" }, "require": { @@ -912,7 +1310,7 @@ "type": "tidelift" } ], - "time": "2022-04-07T22:37:05+00:00" + "time": "2022-05-14T15:37:39+00:00" }, { "name": "league/config", @@ -997,28 +1395,82 @@ "time": "2021-08-14T12:15:32+00:00" }, { - "name": "league/flysystem", - "version": "3.0.19", + "name": "league/event", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "670df21225d68d165a8df38587ac3f41caf608f8" + "url": "https://github.com/thephpleague/event.git", + "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/670df21225d68d165a8df38587ac3f41caf608f8", - "reference": "670df21225d68d165a8df38587ac3f41caf608f8", + "url": "https://api.github.com/repos/thephpleague/event/zipball/d2cc124cf9a3fab2bb4ff963307f60361ce4d119", + "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119", "shasum": "" }, "require": { - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "conflict": { - "aws/aws-sdk-php": "3.209.31 || 3.210.0", - "guzzlehttp/guzzle": "<7.0", - "guzzlehttp/ringphp": "<1.1.1", - "symfony/http-client": "<5.2" + "php": ">=5.4.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "~1.0.1", + "phpspec/phpspec": "^2.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Event\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Event package", + "keywords": [ + "emitter", + "event", + "listener" + ], + "support": { + "issues": "https://github.com/thephpleague/event/issues", + "source": "https://github.com/thephpleague/event/tree/master" + }, + "time": "2018-11-26T11:52:41+00:00" + }, + { + "name": "league/flysystem", + "version": "3.0.19", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "670df21225d68d165a8df38587ac3f41caf608f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/670df21225d68d165a8df38587ac3f41caf608f8", + "reference": "670df21225d68d165a8df38587ac3f41caf608f8", + "shasum": "" + }, + "require": { + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "symfony/http-client": "<5.2" }, "require-dev": { "async-aws/s3": "^1.5", @@ -1142,6 +1594,261 @@ ], "time": "2022-04-17T13:12:02+00:00" }, + { + "name": "league/oauth2-server", + "version": "8.3.5", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth2-server.git", + "reference": "7aeb7c42b463b1a6fe4d084d3145e2fa22436876" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/7aeb7c42b463b1a6fe4d084d3145e2fa22436876", + "reference": "7aeb7c42b463b1a6fe4d084d3145e2fa22436876", + "shasum": "" + }, + "require": { + "defuse/php-encryption": "^2.2.1", + "ext-json": "*", + "ext-openssl": "*", + "lcobucci/jwt": "^3.4.6 || ^4.0.4", + "league/event": "^2.2", + "league/uri": "^6.4", + "php": "^7.2 || ^8.0", + "psr/http-message": "^1.0.1" + }, + "replace": { + "league/oauth2server": "*", + "lncd/oauth2": "*" + }, + "require-dev": { + "laminas/laminas-diactoros": "^2.4.1", + "phpstan/phpstan": "^0.12.57", + "phpstan/phpstan-phpunit": "^0.12.16", + "phpunit/phpunit": "^8.5.13", + "roave/security-advisories": "dev-master" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\OAuth2\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Bilbie", + "email": "hello@alexbilbie.com", + "homepage": "http://www.alexbilbie.com", + "role": "Developer" + }, + { + "name": "Andy Millington", + "email": "andrew@noexceptions.io", + "homepage": "https://www.noexceptions.io", + "role": "Developer" + } + ], + "description": "A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.", + "homepage": "https://oauth2.thephpleague.com/", + "keywords": [ + "Authentication", + "api", + "auth", + "authorisation", + "authorization", + "oauth", + "oauth 2", + "oauth 2.0", + "oauth2", + "protect", + "resource", + "secure", + "server" + ], + "support": { + "issues": "https://github.com/thephpleague/oauth2-server/issues", + "source": "https://github.com/thephpleague/oauth2-server/tree/8.3.5" + }, + "funding": [ + { + "url": "https://github.com/sephster", + "type": "github" + } + ], + "time": "2022-05-03T21:21:28+00:00" + }, + { + "name": "league/uri", + "version": "6.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "c68ca445abb04817d740ddd6d0b3551826ef0c5a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/c68ca445abb04817d740ddd6d0b3551826ef0c5a", + "reference": "c68ca445abb04817d740ddd6d0b3551826ef0c5a", + "shasum": "" + }, + "require": { + "ext-json": "*", + "league/uri-interfaces": "^2.3", + "php": "^7.3 || ^8.0", + "psr/http-message": "^1.0" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.19 || ^3.0", + "phpstan/phpstan": "^0.12.90", + "phpstan/phpstan-phpunit": "^0.12.22", + "phpstan/phpstan-strict-rules": "^0.12.11", + "phpunit/phpunit": "^8.0 || ^9.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "ext-fileinfo": "Needed to create Data URI from a filepath", + "ext-intl": "Needed to improve host validation", + "league/uri-components": "Needed to easily manipulate URI objects", + "psr/http-factory": "Needed to use the URI factory" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "http://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri/issues", + "source": "https://github.com/thephpleague/uri/tree/6.5.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2021-08-27T09:54:07+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/00e7e2943f76d8cb50c7dfdc2f6dee356e15e383", + "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.19", + "phpstan/phpstan": "^0.12.90", + "phpstan/phpstan-phpunit": "^0.12.19", + "phpstan/phpstan-strict-rules": "^0.12.9", + "phpunit/phpunit": "^8.5.15 || ^9.5" + }, + "suggest": { + "ext-intl": "to use the IDNA feature", + "symfony/intl": "to use the IDNA feature via Symfony Polyfill" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interface for URI representation", + "homepage": "http://github.com/thephpleague/uri-interfaces", + "keywords": [ + "rfc3986", + "rfc3987", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/thephpleague/uri-interfaces/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2021-06-28T04:27:21+00:00" + }, { "name": "monolog/monolog", "version": "2.6.0", @@ -1491,102 +2198,107 @@ "time": "2022-01-24T11:29:14+00:00" }, { - "name": "phpoption/phpoption", - "version": "1.8.1", + "name": "nyholm/psr7", + "version": "1.5.0", "source": { "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" + "url": "https://github.com/Nyholm/psr7.git", + "reference": "1461e07a0f2a975a52082ca3b769ca912b816226" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/1461e07a0f2a975a52082ca3b769ca912b816226", + "reference": "1461e07a0f2a975a52082ca3b769ca912b816226", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0" + "php": ">=7.1", + "php-http/message-factory": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + "http-interop/http-factory-tests": "^0.9", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || 8.5 || 9.4", + "symfony/error-handler": "^4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.4-dev" } }, "autoload": { "psr-4": { - "PhpOption\\": "src/PhpOption/" + "Nyholm\\Psr7\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh" + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" }, { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" } ], - "description": "Option Type for PHP", + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", "keywords": [ - "language", - "option", - "php", - "type" + "psr-17", + "psr-7" ], "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.5.0" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", + "url": "https://github.com/Zegnat", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" + "url": "https://github.com/nyholm", + "type": "github" } ], - "time": "2021-12-04T23:24:31+00:00" + "time": "2022-02-02T18:37:57+00:00" }, { - "name": "psr/container", - "version": "2.0.2", + "name": "paragonie/constant_time_encoding", + "version": "v2.5.0", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "9229e15f2e6ba772f0c55dd6986c563b937170a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/9229e15f2e6ba772f0c55dd6986c563b937170a8", + "reference": "9229e15f2e6ba772f0c55dd6986c563b937170a8", "shasum": "" }, "require": { - "php": ">=7.4.0" + "php": "^7|^8" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } + "require-dev": { + "phpunit/phpunit": "^6|^7|^8|^9", + "vimeo/psalm": "^1|^2|^3|^4" }, + "type": "library", "autoload": { "psr-4": { - "Psr\\Container\\": "src/" + "ParagonIE\\ConstantTime\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1595,8 +2307,360 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2022-01-17T05:32:27+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, + { + "name": "php-http/message-factory", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-http/message-factory.git", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Factory interfaces for PSR-7 HTTP Message", + "homepage": "http://php-http.org", + "keywords": [ + "factory", + "http", + "message", + "stream", + "uri" + ], + "support": { + "issues": "https://github.com/php-http/message-factory/issues", + "source": "https://github.com/php-http/message-factory/tree/master" + }, + "time": "2015-12-19T14:08:53+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2021-12-04T23:24:31+00:00" + }, + { + "name": "phpseclib/phpseclib", + "version": "3.0.14", + "source": { + "type": "git", + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "2f0b7af658cbea265cbb4a791d6c29a6613f98ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/2f0b7af658cbea265cbb4a791d6c29a6613f98ef", + "reference": "2f0b7af658cbea265cbb4a791d6c29a6613f98ef", + "shasum": "" + }, + "require": { + "paragonie/constant_time_encoding": "^1|^2", + "paragonie/random_compat": "^1.4|^2.0|^9.99.99", + "php": ">=5.6.1" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "suggest": { + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." + }, + "type": "library", + "autoload": { + "files": [ + "phpseclib/bootstrap.php" + ], + "psr-4": { + "phpseclib3\\": "phpseclib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" + }, + { + "name": "Patrick Monnerat", + "email": "pm@datasphere.ch", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "bantu@phpbb.com", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "petrich@tronic-media.com", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "role": "Developer" + } + ], + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "http://phpseclib.sourceforge.net", + "keywords": [ + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" + ], + "support": { + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.14" + }, + "funding": [ + { + "url": "https://github.com/terrafrost", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "type": "tidelift" + } + ], + "time": "2022-04-04T05:15:45+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -1609,27 +2673,132 @@ "psr" ], "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/master" }, - "time": "2021-11-05T16:47:00+00:00" + "time": "2019-04-30T12:38:16+00:00" }, { - "name": "psr/event-dispatcher", - "version": "1.0.0", + "name": "psr/http-message", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=5.3.0" }, "type": "library", "extra": { @@ -1639,7 +2808,7 @@ }, "autoload": { "psr-4": { - "Psr\\EventDispatcher\\": "src/" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1652,17 +2821,20 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Standard interfaces for event handling.", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "events", + "http", + "http-message", "psr", - "psr-14" + "psr-7", + "request", + "response" ], "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + "source": "https://github.com/php-fig/http-message/tree/master" }, - "time": "2019-01-08T18:20:26+00:00" + "time": "2016-08-06T14:39:51+00:00" }, { "name": "psr/log", @@ -1938,6 +3110,159 @@ ], "time": "2022-03-27T21:42:02+00:00" }, + { + "name": "rebing/graphql-laravel", + "version": "8.2.1", + "source": { + "type": "git", + "url": "https://github.com/rebing/graphql-laravel.git", + "reference": "5658df2b63998f3701d371958ce070747a0b2a3f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rebing/graphql-laravel/zipball/5658df2b63998f3701d371958ce070747a0b2a3f", + "reference": "5658df2b63998f3701d371958ce070747a0b2a3f", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0", + "laragraph/utils": "^1", + "php": ">= 7.2", + "thecodingmachine/safe": "^1.3", + "webonyx/graphql-php": "^14.6.4" + }, + "require-dev": { + "ext-pdo_sqlite": "*", + "friendsofphp/php-cs-fixer": "^3", + "laravel/legacy-factories": "^1.0", + "mfn/php-cs-fixer-config": "^2", + "mockery/mockery": "^1.2", + "nunomaduro/larastan": "^1", + "orchestra/testbench": "4.0.*|5.0.*|^6.0|^7.0", + "phpstan/phpstan": "^1", + "phpunit/phpunit": "~7.0|~8.0|^9", + "thecodingmachine/phpstan-safe-rule": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.1-dev" + }, + "laravel": { + "providers": [ + "Rebing\\GraphQL\\GraphQLServiceProvider" + ], + "aliases": { + "GraphQL": "Rebing\\GraphQL\\Support\\Facades\\GraphQL" + } + } + }, + "autoload": { + "psr-4": { + "Rebing\\GraphQL\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rebing OÜ", + "homepage": "http://www.rebing.ee", + "role": "Company" + }, + { + "name": "Mikk Mihkel Nurges", + "email": "mikk.nurges@rebing.ee", + "role": "Developer" + }, + { + "name": "Folklore", + "email": "info@atelierfolklore.ca", + "homepage": "http://atelierfolklore.ca" + }, + { + "name": "David Mongeau-Petitpas", + "email": "dmp@atelierfolklore.ca", + "homepage": "http://mongo.ca", + "role": "Developer" + }, + { + "name": "Markus Podar", + "email": "markus@fischer.name", + "homepage": "https://github.com/mfn", + "role": "Developer" + } + ], + "description": "Laravel wrapper for PHP GraphQL", + "keywords": [ + "framework", + "graphql", + "laravel", + "react" + ], + "support": { + "issues": "https://github.com/rebing/graphql-laravel/issues", + "source": "https://github.com/rebing/graphql-laravel/tree/8.2.1" + }, + "funding": [ + { + "url": "https://github.com/mfn", + "type": "github" + } + ], + "time": "2022-01-30T19:36:07+00:00" + }, + { + "name": "stella-maris/clock", + "version": "0.1.4", + "source": { + "type": "git", + "url": "https://gitlab.com/stella-maris/clock.git", + "reference": "8a0a967896df4c63417385dc69328a0aec84d9cf" + }, + "dist": { + "type": "zip", + "url": "https://gitlab.com/api/v4/projects/stella-maris%2Fclock/repository/archive.zip?sha=8a0a967896df4c63417385dc69328a0aec84d9cf", + "reference": "8a0a967896df4c63417385dc69328a0aec84d9cf", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "StellaMaris\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Heigl", + "role": "Maintainer" + } + ], + "description": "A pre-release of the proposed PSR-20 Clock-Interface", + "homepage": "https://gitlab.com/stella-maris/clock", + "keywords": [ + "clock", + "datetime", + "point in time", + "psr20" + ], + "support": { + "issues": "https://gitlab.com/stella-maris/clock/-/issues", + "source": "https://gitlab.com/stella-maris/clock/-/tree/0.1.4" + }, + "time": "2022-04-17T14:12:26+00:00" + }, { "name": "symfony/console", "version": "v6.0.8", @@ -3511,6 +4836,94 @@ ], "time": "2022-04-12T16:11:42+00:00" }, + { + "name": "symfony/psr-http-message-bridge", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/psr-http-message-bridge.git", + "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", + "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0", + "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" + }, + "require-dev": { + "nyholm/psr7": "^1.1", + "psr/log": "^1.1 || ^2 || ^3", + "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", + "symfony/config": "^4.4 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", + "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.4@dev || ^6.0" + }, + "suggest": { + "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" + }, + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-main": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\PsrHttpMessage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "PSR HTTP message bridge", + "homepage": "http://symfony.com", + "keywords": [ + "http", + "http-message", + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-05T13:13:39+00:00" + }, { "name": "symfony/routing", "version": "v6.0.8", @@ -4009,7 +5422,81 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.0.8" + "source": "https://github.com/symfony/var-dumper/tree/v6.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-26T13:22:23+00:00" + }, + { + "name": "symfony/yaml", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e77f3ea0b21141d771d4a5655faa54f692b34af5", + "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v6.0.3" }, "funding": [ { @@ -4025,7 +5512,146 @@ "type": "tidelift" } ], - "time": "2022-04-26T13:22:23+00:00" + "time": "2022-01-26T17:23:29+00:00" + }, + { + "name": "thecodingmachine/safe", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/thecodingmachine/safe.git", + "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/a8ab0876305a4cdaef31b2350fcb9811b5608dbc", + "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "require-dev": { + "phpstan/phpstan": "^0.12", + "squizlabs/php_codesniffer": "^3.2", + "thecodingmachine/phpstan-strict-rules": "^0.12" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.1-dev" + } + }, + "autoload": { + "files": [ + "deprecated/apc.php", + "deprecated/libevent.php", + "deprecated/mssql.php", + "deprecated/stats.php", + "lib/special_cases.php", + "generated/apache.php", + "generated/apcu.php", + "generated/array.php", + "generated/bzip2.php", + "generated/calendar.php", + "generated/classobj.php", + "generated/com.php", + "generated/cubrid.php", + "generated/curl.php", + "generated/datetime.php", + "generated/dir.php", + "generated/eio.php", + "generated/errorfunc.php", + "generated/exec.php", + "generated/fileinfo.php", + "generated/filesystem.php", + "generated/filter.php", + "generated/fpm.php", + "generated/ftp.php", + "generated/funchand.php", + "generated/gmp.php", + "generated/gnupg.php", + "generated/hash.php", + "generated/ibase.php", + "generated/ibmDb2.php", + "generated/iconv.php", + "generated/image.php", + "generated/imap.php", + "generated/info.php", + "generated/ingres-ii.php", + "generated/inotify.php", + "generated/json.php", + "generated/ldap.php", + "generated/libxml.php", + "generated/lzf.php", + "generated/mailparse.php", + "generated/mbstring.php", + "generated/misc.php", + "generated/msql.php", + "generated/mysql.php", + "generated/mysqli.php", + "generated/mysqlndMs.php", + "generated/mysqlndQc.php", + "generated/network.php", + "generated/oci8.php", + "generated/opcache.php", + "generated/openssl.php", + "generated/outcontrol.php", + "generated/password.php", + "generated/pcntl.php", + "generated/pcre.php", + "generated/pdf.php", + "generated/pgsql.php", + "generated/posix.php", + "generated/ps.php", + "generated/pspell.php", + "generated/readline.php", + "generated/rpminfo.php", + "generated/rrd.php", + "generated/sem.php", + "generated/session.php", + "generated/shmop.php", + "generated/simplexml.php", + "generated/sockets.php", + "generated/sodium.php", + "generated/solr.php", + "generated/spl.php", + "generated/sqlsrv.php", + "generated/ssdeep.php", + "generated/ssh2.php", + "generated/stream.php", + "generated/strings.php", + "generated/swoole.php", + "generated/uodbc.php", + "generated/uopz.php", + "generated/url.php", + "generated/var.php", + "generated/xdiff.php", + "generated/xml.php", + "generated/xmlrpc.php", + "generated/yaml.php", + "generated/yaz.php", + "generated/zip.php", + "generated/zlib.php" + ], + "psr-4": { + "Safe\\": [ + "lib/", + "deprecated/", + "generated/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "support": { + "issues": "https://github.com/thecodingmachine/safe/issues", + "source": "https://github.com/thecodingmachine/safe/tree/v1.3.3" + }, + "time": "2020-10-28T17:51:34+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -4291,6 +5917,72 @@ "source": "https://github.com/webmozarts/assert/tree/1.10.0" }, "time": "2021-03-09T10:59:23+00:00" + }, + { + "name": "webonyx/graphql-php", + "version": "v14.11.6", + "source": { + "type": "git", + "url": "https://github.com/webonyx/graphql-php.git", + "reference": "6070542725b61fc7d0654a8a9855303e5e157434" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/6070542725b61fc7d0654a8a9855303e5e157434", + "reference": "6070542725b61fc7d0654a8a9855303e5e157434", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^7.1 || ^8" + }, + "require-dev": { + "amphp/amp": "^2.3", + "doctrine/coding-standard": "^6.0", + "nyholm/psr7": "^1.2", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "0.12.82", + "phpstan/phpstan-phpunit": "0.12.18", + "phpstan/phpstan-strict-rules": "0.12.9", + "phpunit/phpunit": "^7.2 || ^8.5", + "psr/http-message": "^1.0", + "react/promise": "2.*", + "simpod/php-coveralls-mirror": "^3.0", + "squizlabs/php_codesniffer": "3.5.4" + }, + "suggest": { + "psr/http-message": "To use standard GraphQL server", + "react/promise": "To leverage async resolving on React PHP platform" + }, + "type": "library", + "autoload": { + "psr-4": { + "GraphQL\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP port of GraphQL reference implementation", + "homepage": "https://github.com/webonyx/graphql-php", + "keywords": [ + "api", + "graphql" + ], + "support": { + "issues": "https://github.com/webonyx/graphql-php/issues", + "source": "https://github.com/webonyx/graphql-php/tree/v14.11.6" + }, + "funding": [ + { + "url": "https://opencollective.com/webonyx-graphql-php", + "type": "open_collective" + } + ], + "time": "2022-04-13T16:25:32+00:00" } ], "packages-dev": [ @@ -7019,114 +8711,6 @@ }, "time": "2021-02-03T23:26:27+00:00" }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/master" - }, - "time": "2016-08-06T14:39:51+00:00" - }, { "name": "ralouphie/getallheaders", "version": "3.0.3", @@ -8681,80 +10265,6 @@ ], "time": "2022-02-21T17:15:17+00:00" }, - { - "name": "symfony/yaml", - "version": "v6.0.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e77f3ea0b21141d771d4a5655faa54f692b34af5", - "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.4" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v6.0.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T17:23:29+00:00" - }, { "name": "theseer/tokenizer", "version": "1.2.1", diff --git a/src/Database/Models/Product.php b/src/Database/Models/Product.php index 90063970a..22313f7c2 100644 --- a/src/Database/Models/Product.php +++ b/src/Database/Models/Product.php @@ -62,7 +62,7 @@ class Product extends BaseModel public function categories() { return $this->belongsToMany(Category::class) - ->using(new class() extends Pivot { + ->using(new class () extends Pivot { use UuidTrait; }) ->withTimestamps(); diff --git a/src/System/Console/InstallCommand.php b/src/System/Console/InstallCommand.php index b0ca0c6cc..9afc5d3ee 100644 --- a/src/System/Console/InstallCommand.php +++ b/src/System/Console/InstallCommand.php @@ -45,7 +45,7 @@ public function handle() $this->createRoleAction->handle(['name' => Role::ADMIN]); if ($this->confirm('Would you like to install Dummy Data?')) { - $this->call('avored:module:install', ['identifier' => 'avored-dummy-data']); + // $this->call('avored:module:install', ['identifier' => 'avored-dummy-data']); } $this->call('avored:admin:make'); @@ -57,7 +57,6 @@ public function executePassportInstallCommand() { $provider = 'customers'; - // $this->call('passport:keys'); $this->call('passport:keys', ['--force' => true]); $this->call('passport:client', ['--personal' => true, '--name' => config('app.name').' Personal Access Client']); diff --git a/tests/Feature/ConsoleTest.php b/tests/Feature/ConsoleTest.php new file mode 100644 index 000000000..396ee7edd --- /dev/null +++ b/tests/Feature/ConsoleTest.php @@ -0,0 +1,33 @@ +artisan('avored:install') + ->expectsQuestion('Would you like to install Dummy Data?', 'no') + ->expectsQuestion('What is your First Name?', 'admin') + ->expectsQuestion('What is your last Name?', 'admin') + ->expectsQuestion('What is your Email Address?', 'admin@admin.com') + ->expectsQuestion('What is your Password?', 'password') + ->expectsQuestion('Confirm your password again?', 'password') + ->assertExitCode(0); + } + + public function test_console_avored_admin_make_command() + { + Role::factory()->create(['name' => Role::ADMIN]); + $this->artisan('avored:admin:make') + ->expectsQuestion('What is your First Name?', 'admin') + ->expectsQuestion('What is your last Name?', 'admin') + ->expectsQuestion('What is your Email Address?', 'admin@admin.com') + ->expectsQuestion('What is your Password?', 'password') + ->expectsQuestion('Confirm your password again?', 'password') + ->assertExitCode(0); + } +} diff --git a/tests/Functional/AvoRedUserRepositoryTest.php b/tests/Functional/AvoRedUserRepositoryTest.php new file mode 100644 index 000000000..5d033a787 --- /dev/null +++ b/tests/Functional/AvoRedUserRepositoryTest.php @@ -0,0 +1,17 @@ +create(['email' => 'unittest@example.com']); + $adminUser = app(AdminUserModelInterface::class)->findByEmail('unittest@example.com'); + $this->assertEquals('unittest@example.com', $adminUser->email); + } +} diff --git a/tests/Functional/BaseRepositoryTest.php b/tests/Functional/BaseRepositoryTest.php new file mode 100644 index 000000000..73bced87b --- /dev/null +++ b/tests/Functional/BaseRepositoryTest.php @@ -0,0 +1,56 @@ +create(); + $adminUser = app(AdminUserModelInterface::class)->find($factoryAdminUser->id); + $this->assertEquals($factoryAdminUser->email, $adminUser->email); + $this->assertDatabaseHas('admin_users', ['id' => $factoryAdminUser->id]); + } + + public function test_base_repository_create_method() + { + $factoryAdminUser = AdminUser::factory()->make(); + $adminUser = app(AdminUserModelInterface::class)->create(array_merge(['password' => 'password'], $factoryAdminUser->toArray())); + $this->assertEquals($factoryAdminUser->email, $adminUser->email); + $this->assertDatabaseHas('admin_users', ['id' => $adminUser->id]); + } + + public function test_base_repository_delete_method() + { + $factoryAdminUser = AdminUser::factory()->create(); + app(AdminUserModelInterface::class)->delete($factoryAdminUser->id); + $this->assertDatabaseMissing('admin_users', ['id' => $factoryAdminUser->id]); + } + + public function test_base_repository_all_method() + { + AdminUser::factory(3)->create(); + $allUsers = app(AdminUserModelInterface::class)->all(); + $this->assertEquals(3, $allUsers->count()); + } + + public function test_base_repository_paginate_method() + { + AdminUser::factory(30)->create(); + $allUsers = app(AdminUserModelInterface::class)->paginate(); + $this->assertNotInstanceOf(Paginator::class, $allUsers); + } + + public function test_base_repository_query_method() + { + AdminUser::factory()->create(); + $allUsers = app(AdminUserModelInterface::class)->query(); + $this->assertNotInstanceOf(Builder::class, $allUsers); + } +} diff --git a/tests/Functional/RoleRepositoryTest.php b/tests/Functional/RoleRepositoryTest.php new file mode 100644 index 000000000..df8ea93fa --- /dev/null +++ b/tests/Functional/RoleRepositoryTest.php @@ -0,0 +1,23 @@ +create(['name' => Role::ADMIN]); + $this->assertEquals(Role::ADMIN, $role->name); + } + + public function test_role_option_method() + { + Role::factory(2)->create(); + $options = app(RoleModelInterface::class)->options(); + $this->assertEquals(2, $options->count()); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php index e1216a813..15a9d1e74 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -8,6 +8,7 @@ use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Facades\Notification; use Illuminate\Testing\TestResponse; +use Laravel\Passport\PassportServiceProvider; use Orchestra\Testbench\TestCase as OrchestraTestCase; class TestCase extends OrchestraTestCase @@ -67,6 +68,7 @@ protected function getPackageProviders($app) { return [ AvoRedServiceProvider::class, + PassportServiceProvider::class ]; } From da39c1c2011f23303844235f6a01fbfc8117679e Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 21 May 2022 00:21:45 +0000 Subject: [PATCH 42/48] Fix styling --- .php-cs-fixer.cache | 2 +- src/Database/Models/Product.php | 2 +- tests/TestCase.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 4501ee110..83267523a 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Order\/Events\/OrderProductCreated.php":902980050,"src\/Order\/Controllers\/OrderStatusController.php":4057285300,"src\/Order\/Controllers\/OrderController.php":3552000905,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1367006267,"src\/Database\/Repository\/PageRepository.php":2198718872,"src\/Database\/Repository\/SubscriberRepository.php":2081568623,"src\/Database\/Repository\/CustomerRepository.php":1326674603,"src\/Database\/Repository\/OrderProductRepository.php":2946868763,"src\/Database\/Repository\/CategoryRepository.php":1321759123,"src\/Database\/Repository\/ProductRepository.php":1985066379,"src\/Database\/Repository\/DocumentRepository.php":3566968401,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/PropertyRepository.php":981116305,"src\/Database\/Repository\/AttributeRepository.php":319881864,"src\/Database\/Repository\/OrderRepository.php":2007359767,"src\/Database\/Repository\/RoleRepository.php":5919928,"src\/Database\/Repository\/CartProductRepository.php":3120284469,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":288537803,"src\/Database\/Repository\/AdminUserRepository.php":1417871142,"src\/Database\/Repository\/ConfigurationRepository.php":416355350,"src\/Database\/Repository\/PermissionRepository.php":2119258321,"src\/Database\/Repository\/OrderStatusRepository.php":801135838,"src\/Database\/Repository\/AddressRepository.php":4248393077,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Contracts\/AddressModelInterface.php":3466750629,"src\/Database\/Contracts\/ProductModelInterface.php":833968823,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/CategoryModelInterface.php":599097405,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/PermissionModelInterface.php":2672896628,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/OrderModelInterface.php":1403694963,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/AttributeModelInterface.php":1940938768,"src\/Database\/Contracts\/BaseInterface.php":2976052884,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Models\/Category.php":754484997,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/Product.php":2993975445,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Role.php":1513439857,"src\/Database\/Models\/OauthClient.php":254473326,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/Customer.php":2263828288,"src\/Database\/Models\/Property.php":112018056,"src\/Database\/Models\/AdminUser.php":4240000469,"src\/Database\/Models\/CartProduct.php":3136654195,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/Subscriber.php":3670496531,"src\/Database\/Models\/Page.php":2763575681,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":3401229920,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/Payment\/PaymentManager.php":1326422825,"src\/Module\/ModuleProvider.php":3185570381,"src\/Module\/ModuleItem.php":4207189860,"src\/Module\/Module.php":3950494461,"src\/Module\/Manager.php":11475994,"src\/Module\/Console\/ModuleInstallCommand.php":3023259964,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ControllerMakeCommand.php":2227255476,"src\/Catalog\/Requests\/AttributeRequest.php":301020724,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/PropertyRequest.php":4220770750,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Controllers\/AttributeController.php":3969430835,"src\/Catalog\/Controllers\/PropertyController.php":486848296,"src\/Catalog\/Controllers\/ProductController.php":3041624286,"src\/Catalog\/Controllers\/CategoryController.php":630434366,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":147030067,"src\/User\/Requests\/AdminUserRequest.php":3299517768,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/LoginController.php":1493493054,"src\/User\/Controllers\/ResetPasswordController.php":1551283443,"src\/User\/Controllers\/SubscriberController.php":1204762325,"src\/User\/Controllers\/StaffController.php":1673603622,"src\/User\/Notifications\/ResetPassword.php":281255553,"src\/User\/Notifications\/CustomerResetPassword.php":1854344558,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":255345964,"src\/Document\/DocumentProvider.php":1459771598,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/ShippingProvider.php":563008062,"src\/Shipping\/Manager.php":1350564326,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabProvider.php":534397509,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/Manager.php":3225115029,"src\/System\/Composers\/LayoutComposer.php":2864903115,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Form.php":3658375489,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":2263340862,"src\/System\/Components\/Table.php":185782146,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Controllers\/RoleController.php":1789155981,"src\/System\/Console\/InstallCommand.php":3096556502,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/Cms\/Requests\/PageRequest.php":54003558,"src\/Cms\/Controllers\/PageController.php":3452992235,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/AdminAuth.php":1545878319,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/ComponentsProvider.php":3337118250,"src\/Support\/Providers\/GraphqlProvider.php":1773456419,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Graphql\/Types\/CustomerType.php":1096119925,"src\/Graphql\/Types\/SubscriberType.php":1951512283,"src\/Graphql\/Types\/PaymentType.php":1483562530,"src\/Graphql\/Types\/ShippingType.php":3184156584,"src\/Graphql\/Types\/NotificationType.php":2991627422,"src\/Graphql\/Types\/CategoryType.php":1226251382,"src\/Graphql\/Types\/ProductType.php":3378852402,"src\/Graphql\/Types\/OptionType.php":654375420,"src\/Graphql\/Types\/CartProductType.php":1016487920,"src\/Graphql\/Types\/AddressType.php":3721841296,"src\/Graphql\/Types\/OrderType.php":2525955635,"src\/Graphql\/Traits\/AuthorizedTrait.php":4010113928,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":4258363677,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3528440643,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":151007228,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":2382448987,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":1496069681,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":1449040286,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":2979486623,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1121150924,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":1123422067,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":3974451978,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":1042937758,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":3077369203,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":1414822113,"src\/Graphql\/Queries\/OrderQuery.php":2014638185,"src\/Graphql\/Queries\/ShippingQuery.php":1215874193,"src\/Graphql\/Queries\/LatestProductQuery.php":3127789590,"src\/Graphql\/Queries\/ProductQuery.php":1278738294,"src\/Graphql\/Queries\/AllOrdersQuery.php":3568313876,"src\/Graphql\/Queries\/CountryOptionsQuery.php":4180943713,"src\/Graphql\/Queries\/CustomerQuery.php":4292589363,"src\/Graphql\/Queries\/CategoryQuery.php":2432529982,"src\/Graphql\/Queries\/AllAddressQuery.php":936472871,"src\/Graphql\/Queries\/CartItemsQuery.php":3072988608,"src\/Graphql\/Queries\/PaymentQuery.php":3777538806,"src\/Graphql\/Queries\/AllCategoryQuery.php":2435927149,"src\/Graphql\/Queries\/AddressQuery.php":3594963314,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuInterface.php":1575349914,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Cart\/CartManager.php":27883090,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartProduct.php":2682517421,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionItem.php":1216083955,"src\/Permission\/Permission.php":3394431707}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/Payment\/PaymentManager.php":1326422825,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/System\/Components\/Table.php":185782146,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Form.php":3658375489,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":2263340862,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Console\/InstallCommand.php":3096556502,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/System\/Controllers\/RoleController.php":1789155981,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Composers\/LayoutComposer.php":2864903115,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Menu\/MenuInterface.php":1575349914,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Middleware\/AdminAuth.php":1545878319,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Support\/Providers\/ComponentsProvider.php":3337118250,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/GraphqlProvider.php":1773456419,"src\/Shipping\/ShippingProvider.php":563008062,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/Manager.php":1350564326,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartManager.php":27883090,"src\/Cart\/CartProduct.php":2682517421,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Controllers\/SubscriberController.php":1204762325,"src\/User\/Controllers\/StaffController.php":1673603622,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/ResetPasswordController.php":1551283443,"src\/User\/Controllers\/LoginController.php":1493493054,"src\/User\/Notifications\/CustomerResetPassword.php":1854344558,"src\/User\/Notifications\/ResetPassword.php":281255553,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/AdminUserRequest.php":3299517768,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":147030067,"src\/Permission\/PermissionItem.php":1216083955,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/Permission.php":3394431707,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Order\/Events\/OrderProductCreated.php":902980050,"src\/Order\/Controllers\/OrderStatusController.php":4057285300,"src\/Order\/Controllers\/OrderController.php":3552000905,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1367006267,"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Catalog\/Controllers\/ProductController.php":3041624286,"src\/Catalog\/Controllers\/PropertyController.php":486848296,"src\/Catalog\/Controllers\/AttributeController.php":3969430835,"src\/Catalog\/Controllers\/CategoryController.php":630434366,"src\/Catalog\/Requests\/AttributeRequest.php":301020724,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Requests\/PropertyRequest.php":4220770750,"src\/AvoRedServiceProvider.php":3401229920,"src\/Cms\/Controllers\/PageController.php":3452992235,"src\/Cms\/Requests\/PageRequest.php":54003558,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/TabProvider.php":534397509,"src\/Tab\/Manager.php":3225115029,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":1449040286,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":1496069681,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":2979486623,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":1414822113,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":1123422067,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":3077369203,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":1042937758,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":3974451978,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1121150924,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3528440643,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":151007228,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":2382448987,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":4258363677,"src\/Graphql\/Traits\/AuthorizedTrait.php":4010113928,"src\/Graphql\/Types\/CategoryType.php":1226251382,"src\/Graphql\/Types\/NotificationType.php":2991627422,"src\/Graphql\/Types\/CustomerType.php":1096119925,"src\/Graphql\/Types\/CartProductType.php":1016487920,"src\/Graphql\/Types\/PaymentType.php":1483562530,"src\/Graphql\/Types\/OptionType.php":654375420,"src\/Graphql\/Types\/OrderType.php":2525955635,"src\/Graphql\/Types\/ShippingType.php":3184156584,"src\/Graphql\/Types\/ProductType.php":3378852402,"src\/Graphql\/Types\/SubscriberType.php":1951512283,"src\/Graphql\/Types\/AddressType.php":3721841296,"src\/Graphql\/Queries\/AddressQuery.php":3594963314,"src\/Graphql\/Queries\/AllOrdersQuery.php":3568313876,"src\/Graphql\/Queries\/CustomerQuery.php":4292589363,"src\/Graphql\/Queries\/ShippingQuery.php":1215874193,"src\/Graphql\/Queries\/LatestProductQuery.php":3127789590,"src\/Graphql\/Queries\/CategoryQuery.php":2432529982,"src\/Graphql\/Queries\/CountryOptionsQuery.php":4180943713,"src\/Graphql\/Queries\/CartItemsQuery.php":3072988608,"src\/Graphql\/Queries\/AllAddressQuery.php":936472871,"src\/Graphql\/Queries\/AllCategoryQuery.php":2435927149,"src\/Graphql\/Queries\/OrderQuery.php":2014638185,"src\/Graphql\/Queries\/PaymentQuery.php":3777538806,"src\/Graphql\/Queries\/ProductQuery.php":1278738294,"src\/Document\/DocumentProvider.php":1459771598,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":255345964,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Module\/Module.php":3950494461,"src\/Module\/Console\/ModuleInstallCommand.php":3023259964,"src\/Module\/Console\/ControllerMakeCommand.php":2227255476,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/ModuleItem.php":4207189860,"src\/Module\/ModuleProvider.php":3185570381,"src\/Module\/Manager.php":11475994,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/Product.php":1273764797,"src\/Database\/Models\/Subscriber.php":3670496531,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/CartProduct.php":3136654195,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/Customer.php":2263828288,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/Page.php":2763575681,"src\/Database\/Models\/OauthClient.php":254473326,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/Role.php":1513439857,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Property.php":112018056,"src\/Database\/Models\/Category.php":754484997,"src\/Database\/Models\/AdminUser.php":4240000469,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/PermissionModelInterface.php":2672896628,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/CategoryModelInterface.php":599097405,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/BaseInterface.php":2976052884,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AddressModelInterface.php":3466750629,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Contracts\/ProductModelInterface.php":833968823,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/AttributeModelInterface.php":1940938768,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/OrderModelInterface.php":1403694963,"src\/Database\/Repository\/CustomerRepository.php":1326674603,"src\/Database\/Repository\/CategoryRepository.php":1321759123,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/ConfigurationRepository.php":416355350,"src\/Database\/Repository\/PermissionRepository.php":2119258321,"src\/Database\/Repository\/PageRepository.php":2198718872,"src\/Database\/Repository\/AddressRepository.php":4248393077,"src\/Database\/Repository\/CartProductRepository.php":3120284469,"src\/Database\/Repository\/ProductRepository.php":1985066379,"src\/Database\/Repository\/OrderRepository.php":2007359767,"src\/Database\/Repository\/OrderProductRepository.php":2946868763,"src\/Database\/Repository\/AttributeRepository.php":319881864,"src\/Database\/Repository\/RoleRepository.php":5919928,"src\/Database\/Repository\/DocumentRepository.php":3566968401,"src\/Database\/Repository\/SubscriberRepository.php":2081568623,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":288537803,"src\/Database\/Repository\/AdminUserRepository.php":1417871142,"src\/Database\/Repository\/OrderStatusRepository.php":801135838,"src\/Database\/Repository\/PropertyRepository.php":981116305,"tests\/Feature\/LoginControllerTest.php":2993789982,"tests\/Feature\/ConfigurationControllerTest.php":2250951350,"tests\/Feature\/OrderStatusControllerTest.php":4239108055,"tests\/Feature\/CategoryControllerTest.php":1285566633,"tests\/Feature\/DashboardControllerTest.php":3484214895,"tests\/Feature\/AuthControllerTest.php":334195238,"tests\/Feature\/RoleControllerTest.php":3372848350,"tests\/Feature\/AdminUserControllerTest.php":3108252446,"tests\/Feature\/ProductControllerTest.php":3051194665,"tests\/Feature\/ConsoleTest.php":2743817615,"tests\/Feature\/PageControllerTest.php":1543191345,"tests\/Feature\/OrderControllerTest.php":1550645149,"tests\/TestCase.php":2339563477,"tests\/Functional\/ProductModelTest.php":52193424,"tests\/Functional\/RoleRepositoryTest.php":999142072,"tests\/Functional\/BreadcrumbTest.php":2387292147,"tests\/Functional\/PermissionTest.php":724699872,"tests\/Functional\/AvoRedUserRepositoryTest.php":3490967881,"tests\/Functional\/BaseRepositoryTest.php":746087388}} \ No newline at end of file diff --git a/src/Database/Models/Product.php b/src/Database/Models/Product.php index 22313f7c2..90063970a 100644 --- a/src/Database/Models/Product.php +++ b/src/Database/Models/Product.php @@ -62,7 +62,7 @@ class Product extends BaseModel public function categories() { return $this->belongsToMany(Category::class) - ->using(new class () extends Pivot { + ->using(new class() extends Pivot { use UuidTrait; }) ->withTimestamps(); diff --git a/tests/TestCase.php b/tests/TestCase.php index 15a9d1e74..157a1e0dc 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -68,7 +68,7 @@ protected function getPackageProviders($app) { return [ AvoRedServiceProvider::class, - PassportServiceProvider::class + PassportServiceProvider::class, ]; } From d1f43a804147b97c5f76ff287523da7795d4080c Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 22 May 2022 10:54:08 +1200 Subject: [PATCH 43/48] wip --- build/logs/clover.xml | 2979 +++++++++-------- composer.json | 1 + composer.lock | 57 +- config/avored.php | 1 - resources/css/app.css | 7 - .../system/components/form/input.blade.php | 2 +- src/Module/Manager.php | 1 + src/System/Console/InstallCommand.php | 2 +- tests/Feature/CategoryControllerTest.php | 8 + tests/Feature/ConsoleTest.php | 4 +- tests/Functional/AvoRedUserRepositoryTest.php | 2 +- tests/Functional/BaseRepositoryTest.php | 2 +- tests/Functional/RoleRepositoryTest.php | 2 +- tests/TestCase.php | 3 + 14 files changed, 1567 insertions(+), 1504 deletions(-) diff --git a/build/logs/clover.xml b/build/logs/clover.xml index 67e8b55a4..c019e1126 100644 --- a/build/logs/clover.xml +++ b/build/logs/clover.xml @@ -1,72 +1,72 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - + + @@ -74,193 +74,193 @@ - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -409,10 +409,10 @@ - - - - + + + + @@ -458,80 +458,80 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588,23 +588,23 @@ - + - - - - - + + + + + - + - - - - - + + + + + @@ -618,44 +618,44 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + + @@ -724,34 +724,34 @@ - + - - - - - + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -815,7 +815,7 @@ - + @@ -836,8 +836,8 @@ - - + + @@ -851,7 +851,7 @@ - + @@ -972,19 +972,19 @@ - + - - - - - - - - - - - + + + + + + + + + + + @@ -1008,15 +1008,15 @@ - + - - - - - - - + + + + + + + @@ -1058,21 +1058,21 @@ - + - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -1086,10 +1086,10 @@ - + - - + + @@ -1118,8 +1118,8 @@ - - + + @@ -1141,31 +1141,31 @@ - - - + + + - + - - + + - - - - + + + + - - - - + + + + - - - + + + @@ -1224,12 +1224,12 @@ - + - - - - + + + + @@ -1250,33 +1250,33 @@ - + - + - - - - + + + + - - - + + + - + - - - - + + + + - + @@ -1292,22 +1292,22 @@ - + - - - - - - + + + + + + - - + + - - - + + + @@ -1335,22 +1335,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -1358,9 +1358,9 @@ - - - + + + @@ -1374,7 +1374,7 @@ - + @@ -1383,20 +1383,21 @@ + - + - - - - - - + + + + + + @@ -1411,14 +1412,14 @@ - - - - - - - - + + + + + + + + @@ -2258,27 +2259,27 @@ - - + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -2307,8 +2308,8 @@ - - + + @@ -2318,175 +2319,175 @@ - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - + + - - - + + + - + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + @@ -2524,17 +2525,17 @@ - - + + - - - + + + @@ -2554,9 +2555,9 @@ - - - + + + @@ -2596,31 +2597,31 @@ - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -2629,16 +2630,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -2670,53 +2671,53 @@ - - - - + + + - + - - - - - - - + + + + + + + - - - + + + - + - - - - + + + + - - - + + + - - + + - - - + + + + - - + + @@ -2772,100 +2773,100 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + @@ -2893,29 +2894,29 @@ - - + + - - - - - - - - - - - + + + + + + + + + + + - + @@ -2923,279 +2924,279 @@ - + - - + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - + + + + - - - - - + + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3228,84 +3229,84 @@ - - + + - + - - - - + + + + - + - - - - - - - + + + + + + + - + - - - - - + + + + + - - - - + + + + - - + + - - - - - - - - + + + + + + + + - - - - - + + + + + @@ -3321,171 +3322,171 @@ - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - + + + + + + + + - + - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - + + + + + + + + - + - - - - - - - - + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - - - - - - + + + + + + - + - - - - - - - + + + + + + + - + - - - + + + - + - - - + + + - + - - - - - + + + + + - + - - - - - + + + + + @@ -3504,37 +3505,38 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - - + + + + + @@ -3542,229 +3544,230 @@ - + - + - - - - - - - - - - - - + + + + + + + + + + + + + - - - - + + + + - + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + + - + - - + + - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3782,18 +3785,18 @@ - - - - + + + + - - + + @@ -3825,36 +3828,36 @@ - + - - - - + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -3899,42 +3902,42 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + @@ -4004,23 +4007,23 @@ - + - - - - - + + + + + - + - - - - - + + + + + @@ -4053,6 +4056,6 @@ - + diff --git a/composer.json b/composer.json index 3b6ec5c61..3c357c2ce 100644 --- a/composer.json +++ b/composer.json @@ -33,6 +33,7 @@ "require-dev": { "brianium/paratest": "^6.4", "friendsofphp/php-cs-fixer": "^3.8", + "marvinrabe/laravel-graphql-test": "^0.4.1", "nunomaduro/collision": "^6.2", "orchestra/testbench": "7.5", "phpunit/phpunit": "^9.5", diff --git a/composer.lock b/composer.lock index 9223f4e8b..82cfcd002 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1864262debcf30fc4fcab1e48a485273", + "content-hash": "ea4f178dc9289cba5680c70c294a4cc0", "packages": [ { "name": "brick/math", @@ -7257,6 +7257,61 @@ }, "time": "2020-07-09T08:09:16+00:00" }, + { + "name": "marvinrabe/laravel-graphql-test", + "version": "0.4.1", + "source": { + "type": "git", + "url": "https://github.com/marvinrabe/laravel-graphql-test.git", + "reference": "63bd90139b479a4d02042661caf31e9b6df27ae0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/marvinrabe/laravel-graphql-test/zipball/63bd90139b479a4d02042661caf31e9b6df27ae0", + "reference": "63bd90139b479a4d02042661caf31e9b6df27ae0", + "shasum": "" + }, + "require": { + "illuminate/contracts": ">=8.0.0", + "php": ">=7.0.0" + }, + "require-dev": { + "orchestra/testbench": "^6.0", + "phpunit/phpunit": "^9.3", + "vimeo/psalm": "^3.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "MarvinRabe\\LaravelGraphQLTest\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marvin Rabe", + "email": "marvin@rabe.pro", + "homepage": "https://www.rabe.pro", + "role": "Developer" + } + ], + "description": "Provides you with a simple GraphQL testing trait.", + "homepage": "https://github.com/marvinrabe/laravel-graphql-test", + "keywords": [ + "graphql", + "laravel", + "php", + "testing" + ], + "support": { + "issues": "https://github.com/marvinrabe/laravel-graphql-test/issues", + "source": "https://github.com/marvinrabe/laravel-graphql-test/tree/0.4.1" + }, + "time": "2021-08-16T14:51:19+00:00" + }, { "name": "mockery/mockery", "version": "1.5.0", diff --git a/config/avored.php b/config/avored.php index 5f96a2366..523cde9b3 100644 --- a/config/avored.php +++ b/config/avored.php @@ -15,7 +15,6 @@ use AvoRed\Framework\Graphql\Queries\AllCategoryQuery; use AvoRed\Framework\Graphql\Queries\AllOrdersQuery; use AvoRed\Framework\Graphql\Queries\OrderQuery; -use AvoRed\Framework\Graphql\Queries\CartItems; use AvoRed\Framework\Graphql\Queries\CartItemsQuery; use AvoRed\Framework\Graphql\Queries\CategoryQuery; use AvoRed\Framework\Graphql\Queries\CountryOptionsQuery; diff --git a/resources/css/app.css b/resources/css/app.css index 8a5f2a9ba..fb090a168 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -2,10 +2,3 @@ @tailwind components; @tailwind utilities; @import '~easymde/dist/easymde.min.css'; - -.avored-input { - @apply w-full px-3 py-2 ring-gray-300 ring-1 rounded shadow-sm appearance-none text-gray-700; -} -.avored-input:hover, .avored-input:active , .avored-input:focus { - @apply ring-red-500 outline-none; -} diff --git a/resources/views/system/components/form/input.blade.php b/resources/views/system/components/form/input.blade.php index c49442848..62c6c5383 100644 --- a/resources/views/system/components/form/input.blade.php +++ b/resources/views/system/components/form/input.blade.php @@ -7,7 +7,7 @@
merge([ 'autofocus' => false, - ]) }} class="avored-input {{ ($errors->has($name)) ? 'ring-red-400' : '' }} {{ $class }}" /> + ]) }} class="w-full rounded {{ ($errors->has($name)) ? 'ring-red-400' : '' }} {{ $class }}" /> @if ($errors->has($name))
{{ $errors->first($name) }} diff --git a/src/Module/Manager.php b/src/Module/Manager.php index ff40035b1..84d98f692 100644 --- a/src/Module/Manager.php +++ b/src/Module/Manager.php @@ -111,6 +111,7 @@ protected function loadModules() } }); + $this->moduleLoaded = true; } diff --git a/src/System/Console/InstallCommand.php b/src/System/Console/InstallCommand.php index 9afc5d3ee..bce2b132b 100644 --- a/src/System/Console/InstallCommand.php +++ b/src/System/Console/InstallCommand.php @@ -45,7 +45,7 @@ public function handle() $this->createRoleAction->handle(['name' => Role::ADMIN]); if ($this->confirm('Would you like to install Dummy Data?')) { - // $this->call('avored:module:install', ['identifier' => 'avored-dummy-data']); + $this->call('avored:module:install', ['identifier' => 'avored-dummy-data']); } $this->call('avored:admin:make'); diff --git a/tests/Feature/CategoryControllerTest.php b/tests/Feature/CategoryControllerTest.php index a9b70ae0f..7c99e08ce 100644 --- a/tests/Feature/CategoryControllerTest.php +++ b/tests/Feature/CategoryControllerTest.php @@ -75,4 +75,12 @@ public function test_category_page_destroy_form() $this->assertDatabaseMissing('categories', ['name' => 'unit test update', 'slug' => $category->slug]); } + + public function test_graphql_query_all_categories() + { + $category = Category::factory()->create(); + $this->query('allCategory', [],['id']) + ->assertSuccessful() + ->assertJsonFragment(['id' => $category->id]); + } } diff --git a/tests/Feature/ConsoleTest.php b/tests/Feature/ConsoleTest.php index 396ee7edd..89d53fe7a 100644 --- a/tests/Feature/ConsoleTest.php +++ b/tests/Feature/ConsoleTest.php @@ -1,6 +1,6 @@ artisan('avored:install') - ->expectsQuestion('Would you like to install Dummy Data?', 'no') + ->expectsQuestion('Would you like to install Dummy Data?', false) ->expectsQuestion('What is your First Name?', 'admin') ->expectsQuestion('What is your last Name?', 'admin') ->expectsQuestion('What is your Email Address?', 'admin@admin.com') diff --git a/tests/Functional/AvoRedUserRepositoryTest.php b/tests/Functional/AvoRedUserRepositoryTest.php index 5d033a787..cbbd47d44 100644 --- a/tests/Functional/AvoRedUserRepositoryTest.php +++ b/tests/Functional/AvoRedUserRepositoryTest.php @@ -1,6 +1,6 @@ Date: Sat, 21 May 2022 22:54:28 +0000 Subject: [PATCH 44/48] Fix styling --- .php-cs-fixer.cache | 2 +- tests/Feature/CategoryControllerTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 83267523a..422204022 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/Payment\/PaymentManager.php":1326422825,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/System\/Components\/Table.php":185782146,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Form.php":3658375489,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":2263340862,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Console\/InstallCommand.php":3096556502,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/System\/Controllers\/RoleController.php":1789155981,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Composers\/LayoutComposer.php":2864903115,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Menu\/MenuInterface.php":1575349914,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Middleware\/AdminAuth.php":1545878319,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Support\/Providers\/ComponentsProvider.php":3337118250,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/GraphqlProvider.php":1773456419,"src\/Shipping\/ShippingProvider.php":563008062,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/Manager.php":1350564326,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartManager.php":27883090,"src\/Cart\/CartProduct.php":2682517421,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Controllers\/SubscriberController.php":1204762325,"src\/User\/Controllers\/StaffController.php":1673603622,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/ResetPasswordController.php":1551283443,"src\/User\/Controllers\/LoginController.php":1493493054,"src\/User\/Notifications\/CustomerResetPassword.php":1854344558,"src\/User\/Notifications\/ResetPassword.php":281255553,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/AdminUserRequest.php":3299517768,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":147030067,"src\/Permission\/PermissionItem.php":1216083955,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/Permission.php":3394431707,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Order\/Events\/OrderProductCreated.php":902980050,"src\/Order\/Controllers\/OrderStatusController.php":4057285300,"src\/Order\/Controllers\/OrderController.php":3552000905,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1367006267,"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Catalog\/Controllers\/ProductController.php":3041624286,"src\/Catalog\/Controllers\/PropertyController.php":486848296,"src\/Catalog\/Controllers\/AttributeController.php":3969430835,"src\/Catalog\/Controllers\/CategoryController.php":630434366,"src\/Catalog\/Requests\/AttributeRequest.php":301020724,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Requests\/PropertyRequest.php":4220770750,"src\/AvoRedServiceProvider.php":3401229920,"src\/Cms\/Controllers\/PageController.php":3452992235,"src\/Cms\/Requests\/PageRequest.php":54003558,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/TabProvider.php":534397509,"src\/Tab\/Manager.php":3225115029,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":1449040286,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":1496069681,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":2979486623,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":1414822113,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":1123422067,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":3077369203,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":1042937758,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":3974451978,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1121150924,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3528440643,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":151007228,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":2382448987,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":4258363677,"src\/Graphql\/Traits\/AuthorizedTrait.php":4010113928,"src\/Graphql\/Types\/CategoryType.php":1226251382,"src\/Graphql\/Types\/NotificationType.php":2991627422,"src\/Graphql\/Types\/CustomerType.php":1096119925,"src\/Graphql\/Types\/CartProductType.php":1016487920,"src\/Graphql\/Types\/PaymentType.php":1483562530,"src\/Graphql\/Types\/OptionType.php":654375420,"src\/Graphql\/Types\/OrderType.php":2525955635,"src\/Graphql\/Types\/ShippingType.php":3184156584,"src\/Graphql\/Types\/ProductType.php":3378852402,"src\/Graphql\/Types\/SubscriberType.php":1951512283,"src\/Graphql\/Types\/AddressType.php":3721841296,"src\/Graphql\/Queries\/AddressQuery.php":3594963314,"src\/Graphql\/Queries\/AllOrdersQuery.php":3568313876,"src\/Graphql\/Queries\/CustomerQuery.php":4292589363,"src\/Graphql\/Queries\/ShippingQuery.php":1215874193,"src\/Graphql\/Queries\/LatestProductQuery.php":3127789590,"src\/Graphql\/Queries\/CategoryQuery.php":2432529982,"src\/Graphql\/Queries\/CountryOptionsQuery.php":4180943713,"src\/Graphql\/Queries\/CartItemsQuery.php":3072988608,"src\/Graphql\/Queries\/AllAddressQuery.php":936472871,"src\/Graphql\/Queries\/AllCategoryQuery.php":2435927149,"src\/Graphql\/Queries\/OrderQuery.php":2014638185,"src\/Graphql\/Queries\/PaymentQuery.php":3777538806,"src\/Graphql\/Queries\/ProductQuery.php":1278738294,"src\/Document\/DocumentProvider.php":1459771598,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":255345964,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Module\/Module.php":3950494461,"src\/Module\/Console\/ModuleInstallCommand.php":3023259964,"src\/Module\/Console\/ControllerMakeCommand.php":2227255476,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/ModuleItem.php":4207189860,"src\/Module\/ModuleProvider.php":3185570381,"src\/Module\/Manager.php":11475994,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/Product.php":1273764797,"src\/Database\/Models\/Subscriber.php":3670496531,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/CartProduct.php":3136654195,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/Customer.php":2263828288,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/Page.php":2763575681,"src\/Database\/Models\/OauthClient.php":254473326,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/Role.php":1513439857,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Property.php":112018056,"src\/Database\/Models\/Category.php":754484997,"src\/Database\/Models\/AdminUser.php":4240000469,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/PermissionModelInterface.php":2672896628,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/CategoryModelInterface.php":599097405,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/BaseInterface.php":2976052884,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AddressModelInterface.php":3466750629,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Contracts\/ProductModelInterface.php":833968823,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/AttributeModelInterface.php":1940938768,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/OrderModelInterface.php":1403694963,"src\/Database\/Repository\/CustomerRepository.php":1326674603,"src\/Database\/Repository\/CategoryRepository.php":1321759123,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/ConfigurationRepository.php":416355350,"src\/Database\/Repository\/PermissionRepository.php":2119258321,"src\/Database\/Repository\/PageRepository.php":2198718872,"src\/Database\/Repository\/AddressRepository.php":4248393077,"src\/Database\/Repository\/CartProductRepository.php":3120284469,"src\/Database\/Repository\/ProductRepository.php":1985066379,"src\/Database\/Repository\/OrderRepository.php":2007359767,"src\/Database\/Repository\/OrderProductRepository.php":2946868763,"src\/Database\/Repository\/AttributeRepository.php":319881864,"src\/Database\/Repository\/RoleRepository.php":5919928,"src\/Database\/Repository\/DocumentRepository.php":3566968401,"src\/Database\/Repository\/SubscriberRepository.php":2081568623,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":288537803,"src\/Database\/Repository\/AdminUserRepository.php":1417871142,"src\/Database\/Repository\/OrderStatusRepository.php":801135838,"src\/Database\/Repository\/PropertyRepository.php":981116305,"tests\/Feature\/LoginControllerTest.php":2993789982,"tests\/Feature\/ConfigurationControllerTest.php":2250951350,"tests\/Feature\/OrderStatusControllerTest.php":4239108055,"tests\/Feature\/CategoryControllerTest.php":1285566633,"tests\/Feature\/DashboardControllerTest.php":3484214895,"tests\/Feature\/AuthControllerTest.php":334195238,"tests\/Feature\/RoleControllerTest.php":3372848350,"tests\/Feature\/AdminUserControllerTest.php":3108252446,"tests\/Feature\/ProductControllerTest.php":3051194665,"tests\/Feature\/ConsoleTest.php":2743817615,"tests\/Feature\/PageControllerTest.php":1543191345,"tests\/Feature\/OrderControllerTest.php":1550645149,"tests\/TestCase.php":2339563477,"tests\/Functional\/ProductModelTest.php":52193424,"tests\/Functional\/RoleRepositoryTest.php":999142072,"tests\/Functional\/BreadcrumbTest.php":2387292147,"tests\/Functional\/PermissionTest.php":724699872,"tests\/Functional\/AvoRedUserRepositoryTest.php":3490967881,"tests\/Functional\/BaseRepositoryTest.php":746087388}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/Payment\/PaymentManager.php":1326422825,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/System\/Components\/Table.php":185782146,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Form.php":3658375489,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":2263340862,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Console\/InstallCommand.php":3547548013,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/System\/Controllers\/RoleController.php":1789155981,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Composers\/LayoutComposer.php":2864903115,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Menu\/MenuInterface.php":1575349914,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Middleware\/AdminAuth.php":1545878319,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Support\/Providers\/ComponentsProvider.php":3337118250,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/GraphqlProvider.php":1773456419,"src\/Shipping\/ShippingProvider.php":563008062,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/Manager.php":1350564326,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartManager.php":27883090,"src\/Cart\/CartProduct.php":2682517421,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Controllers\/SubscriberController.php":1204762325,"src\/User\/Controllers\/StaffController.php":1673603622,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/ResetPasswordController.php":1551283443,"src\/User\/Controllers\/LoginController.php":1493493054,"src\/User\/Notifications\/CustomerResetPassword.php":1854344558,"src\/User\/Notifications\/ResetPassword.php":281255553,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/AdminUserRequest.php":3299517768,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":147030067,"src\/Permission\/PermissionItem.php":1216083955,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/Permission.php":3394431707,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Order\/Events\/OrderProductCreated.php":902980050,"src\/Order\/Controllers\/OrderStatusController.php":4057285300,"src\/Order\/Controllers\/OrderController.php":3552000905,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1367006267,"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Catalog\/Controllers\/ProductController.php":3041624286,"src\/Catalog\/Controllers\/PropertyController.php":486848296,"src\/Catalog\/Controllers\/AttributeController.php":3969430835,"src\/Catalog\/Controllers\/CategoryController.php":630434366,"src\/Catalog\/Requests\/AttributeRequest.php":301020724,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Requests\/PropertyRequest.php":4220770750,"src\/AvoRedServiceProvider.php":3401229920,"src\/Cms\/Controllers\/PageController.php":3452992235,"src\/Cms\/Requests\/PageRequest.php":54003558,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/TabProvider.php":534397509,"src\/Tab\/Manager.php":3225115029,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":1449040286,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":1496069681,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":2979486623,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":1414822113,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":1123422067,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":3077369203,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":1042937758,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":3974451978,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1121150924,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3528440643,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":151007228,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":2382448987,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":4258363677,"src\/Graphql\/Traits\/AuthorizedTrait.php":4010113928,"src\/Graphql\/Types\/CategoryType.php":1226251382,"src\/Graphql\/Types\/NotificationType.php":2991627422,"src\/Graphql\/Types\/CustomerType.php":1096119925,"src\/Graphql\/Types\/CartProductType.php":1016487920,"src\/Graphql\/Types\/PaymentType.php":1483562530,"src\/Graphql\/Types\/OptionType.php":654375420,"src\/Graphql\/Types\/OrderType.php":2525955635,"src\/Graphql\/Types\/ShippingType.php":3184156584,"src\/Graphql\/Types\/ProductType.php":3378852402,"src\/Graphql\/Types\/SubscriberType.php":1951512283,"src\/Graphql\/Types\/AddressType.php":3721841296,"src\/Graphql\/Queries\/AddressQuery.php":3594963314,"src\/Graphql\/Queries\/AllOrdersQuery.php":3568313876,"src\/Graphql\/Queries\/CustomerQuery.php":4292589363,"src\/Graphql\/Queries\/ShippingQuery.php":1215874193,"src\/Graphql\/Queries\/LatestProductQuery.php":3127789590,"src\/Graphql\/Queries\/CategoryQuery.php":2432529982,"src\/Graphql\/Queries\/CountryOptionsQuery.php":4180943713,"src\/Graphql\/Queries\/CartItemsQuery.php":3072988608,"src\/Graphql\/Queries\/AllAddressQuery.php":936472871,"src\/Graphql\/Queries\/AllCategoryQuery.php":2435927149,"src\/Graphql\/Queries\/OrderQuery.php":2014638185,"src\/Graphql\/Queries\/PaymentQuery.php":3777538806,"src\/Graphql\/Queries\/ProductQuery.php":1278738294,"src\/Document\/DocumentProvider.php":1459771598,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":255345964,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Module\/Module.php":3950494461,"src\/Module\/Console\/ModuleInstallCommand.php":3023259964,"src\/Module\/Console\/ControllerMakeCommand.php":2227255476,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/ModuleItem.php":4207189860,"src\/Module\/ModuleProvider.php":3185570381,"src\/Module\/Manager.php":2920753741,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/Product.php":1273764797,"src\/Database\/Models\/Subscriber.php":3670496531,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/CartProduct.php":3136654195,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/Customer.php":2263828288,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/Page.php":2763575681,"src\/Database\/Models\/OauthClient.php":254473326,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/Role.php":1513439857,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Property.php":112018056,"src\/Database\/Models\/Category.php":754484997,"src\/Database\/Models\/AdminUser.php":4240000469,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/PermissionModelInterface.php":2672896628,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/CategoryModelInterface.php":599097405,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/BaseInterface.php":2976052884,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AddressModelInterface.php":3466750629,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Contracts\/ProductModelInterface.php":833968823,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/AttributeModelInterface.php":1940938768,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/OrderModelInterface.php":1403694963,"src\/Database\/Repository\/CustomerRepository.php":1326674603,"src\/Database\/Repository\/CategoryRepository.php":1321759123,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/ConfigurationRepository.php":416355350,"src\/Database\/Repository\/PermissionRepository.php":2119258321,"src\/Database\/Repository\/PageRepository.php":2198718872,"src\/Database\/Repository\/AddressRepository.php":4248393077,"src\/Database\/Repository\/CartProductRepository.php":3120284469,"src\/Database\/Repository\/ProductRepository.php":1985066379,"src\/Database\/Repository\/OrderRepository.php":2007359767,"src\/Database\/Repository\/OrderProductRepository.php":2946868763,"src\/Database\/Repository\/AttributeRepository.php":319881864,"src\/Database\/Repository\/RoleRepository.php":5919928,"src\/Database\/Repository\/DocumentRepository.php":3566968401,"src\/Database\/Repository\/SubscriberRepository.php":2081568623,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":288537803,"src\/Database\/Repository\/AdminUserRepository.php":1417871142,"src\/Database\/Repository\/OrderStatusRepository.php":801135838,"src\/Database\/Repository\/PropertyRepository.php":981116305,"tests\/Feature\/LoginControllerTest.php":2993789982,"tests\/Feature\/ConfigurationControllerTest.php":2250951350,"tests\/Feature\/OrderStatusControllerTest.php":4239108055,"tests\/Feature\/CategoryControllerTest.php":1902637526,"tests\/Feature\/DashboardControllerTest.php":3484214895,"tests\/Feature\/AuthControllerTest.php":334195238,"tests\/Feature\/RoleControllerTest.php":3372848350,"tests\/Feature\/AdminUserControllerTest.php":3108252446,"tests\/Feature\/ProductControllerTest.php":3051194665,"tests\/Feature\/ConsoleTest.php":2528302105,"tests\/Feature\/PageControllerTest.php":1543191345,"tests\/Feature\/OrderControllerTest.php":1550645149,"tests\/TestCase.php":3086012143,"tests\/Functional\/ProductModelTest.php":52193424,"tests\/Functional\/RoleRepositoryTest.php":1037084085,"tests\/Functional\/BreadcrumbTest.php":2387292147,"tests\/Functional\/PermissionTest.php":724699872,"tests\/Functional\/AvoRedUserRepositoryTest.php":2975365267,"tests\/Functional\/BaseRepositoryTest.php":2606616677}} \ No newline at end of file diff --git a/tests/Feature/CategoryControllerTest.php b/tests/Feature/CategoryControllerTest.php index 7c99e08ce..595493055 100644 --- a/tests/Feature/CategoryControllerTest.php +++ b/tests/Feature/CategoryControllerTest.php @@ -79,7 +79,7 @@ public function test_category_page_destroy_form() public function test_graphql_query_all_categories() { $category = Category::factory()->create(); - $this->query('allCategory', [],['id']) + $this->query('allCategory', [], ['id']) ->assertSuccessful() ->assertJsonFragment(['id' => $category->id]); } From 57a32f7e45d3610508650a7d06a410da89702039 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 22 May 2022 10:59:52 +1200 Subject: [PATCH 45/48] wip --- .php-cs-fixer.cache | 2 +- build/logs/clover.xml | 866 +++++++++++------------ src/Database/Models/Product.php | 2 +- tests/Feature/CategoryControllerTest.php | 7 + 4 files changed, 412 insertions(+), 465 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 422204022..4e6ceeeff 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/Payment\/PaymentManager.php":1326422825,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/System\/Components\/Table.php":185782146,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Form.php":3658375489,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":2263340862,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Console\/InstallCommand.php":3547548013,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/System\/Controllers\/RoleController.php":1789155981,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Composers\/LayoutComposer.php":2864903115,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Menu\/MenuInterface.php":1575349914,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Middleware\/AdminAuth.php":1545878319,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Support\/Providers\/ComponentsProvider.php":3337118250,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/GraphqlProvider.php":1773456419,"src\/Shipping\/ShippingProvider.php":563008062,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/Manager.php":1350564326,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartManager.php":27883090,"src\/Cart\/CartProduct.php":2682517421,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Controllers\/SubscriberController.php":1204762325,"src\/User\/Controllers\/StaffController.php":1673603622,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/ResetPasswordController.php":1551283443,"src\/User\/Controllers\/LoginController.php":1493493054,"src\/User\/Notifications\/CustomerResetPassword.php":1854344558,"src\/User\/Notifications\/ResetPassword.php":281255553,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/AdminUserRequest.php":3299517768,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":147030067,"src\/Permission\/PermissionItem.php":1216083955,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/Permission.php":3394431707,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Order\/Events\/OrderProductCreated.php":902980050,"src\/Order\/Controllers\/OrderStatusController.php":4057285300,"src\/Order\/Controllers\/OrderController.php":3552000905,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1367006267,"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Catalog\/Controllers\/ProductController.php":3041624286,"src\/Catalog\/Controllers\/PropertyController.php":486848296,"src\/Catalog\/Controllers\/AttributeController.php":3969430835,"src\/Catalog\/Controllers\/CategoryController.php":630434366,"src\/Catalog\/Requests\/AttributeRequest.php":301020724,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Requests\/PropertyRequest.php":4220770750,"src\/AvoRedServiceProvider.php":3401229920,"src\/Cms\/Controllers\/PageController.php":3452992235,"src\/Cms\/Requests\/PageRequest.php":54003558,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/TabProvider.php":534397509,"src\/Tab\/Manager.php":3225115029,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":1449040286,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":1496069681,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":2979486623,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":1414822113,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":1123422067,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":3077369203,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":1042937758,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":3974451978,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1121150924,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3528440643,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":151007228,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":2382448987,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":4258363677,"src\/Graphql\/Traits\/AuthorizedTrait.php":4010113928,"src\/Graphql\/Types\/CategoryType.php":1226251382,"src\/Graphql\/Types\/NotificationType.php":2991627422,"src\/Graphql\/Types\/CustomerType.php":1096119925,"src\/Graphql\/Types\/CartProductType.php":1016487920,"src\/Graphql\/Types\/PaymentType.php":1483562530,"src\/Graphql\/Types\/OptionType.php":654375420,"src\/Graphql\/Types\/OrderType.php":2525955635,"src\/Graphql\/Types\/ShippingType.php":3184156584,"src\/Graphql\/Types\/ProductType.php":3378852402,"src\/Graphql\/Types\/SubscriberType.php":1951512283,"src\/Graphql\/Types\/AddressType.php":3721841296,"src\/Graphql\/Queries\/AddressQuery.php":3594963314,"src\/Graphql\/Queries\/AllOrdersQuery.php":3568313876,"src\/Graphql\/Queries\/CustomerQuery.php":4292589363,"src\/Graphql\/Queries\/ShippingQuery.php":1215874193,"src\/Graphql\/Queries\/LatestProductQuery.php":3127789590,"src\/Graphql\/Queries\/CategoryQuery.php":2432529982,"src\/Graphql\/Queries\/CountryOptionsQuery.php":4180943713,"src\/Graphql\/Queries\/CartItemsQuery.php":3072988608,"src\/Graphql\/Queries\/AllAddressQuery.php":936472871,"src\/Graphql\/Queries\/AllCategoryQuery.php":2435927149,"src\/Graphql\/Queries\/OrderQuery.php":2014638185,"src\/Graphql\/Queries\/PaymentQuery.php":3777538806,"src\/Graphql\/Queries\/ProductQuery.php":1278738294,"src\/Document\/DocumentProvider.php":1459771598,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":255345964,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Module\/Module.php":3950494461,"src\/Module\/Console\/ModuleInstallCommand.php":3023259964,"src\/Module\/Console\/ControllerMakeCommand.php":2227255476,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/ModuleItem.php":4207189860,"src\/Module\/ModuleProvider.php":3185570381,"src\/Module\/Manager.php":2920753741,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/Product.php":1273764797,"src\/Database\/Models\/Subscriber.php":3670496531,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/CartProduct.php":3136654195,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/Customer.php":2263828288,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/Page.php":2763575681,"src\/Database\/Models\/OauthClient.php":254473326,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/Role.php":1513439857,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Property.php":112018056,"src\/Database\/Models\/Category.php":754484997,"src\/Database\/Models\/AdminUser.php":4240000469,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/PermissionModelInterface.php":2672896628,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/CategoryModelInterface.php":599097405,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/BaseInterface.php":2976052884,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AddressModelInterface.php":3466750629,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Contracts\/ProductModelInterface.php":833968823,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/AttributeModelInterface.php":1940938768,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/OrderModelInterface.php":1403694963,"src\/Database\/Repository\/CustomerRepository.php":1326674603,"src\/Database\/Repository\/CategoryRepository.php":1321759123,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/ConfigurationRepository.php":416355350,"src\/Database\/Repository\/PermissionRepository.php":2119258321,"src\/Database\/Repository\/PageRepository.php":2198718872,"src\/Database\/Repository\/AddressRepository.php":4248393077,"src\/Database\/Repository\/CartProductRepository.php":3120284469,"src\/Database\/Repository\/ProductRepository.php":1985066379,"src\/Database\/Repository\/OrderRepository.php":2007359767,"src\/Database\/Repository\/OrderProductRepository.php":2946868763,"src\/Database\/Repository\/AttributeRepository.php":319881864,"src\/Database\/Repository\/RoleRepository.php":5919928,"src\/Database\/Repository\/DocumentRepository.php":3566968401,"src\/Database\/Repository\/SubscriberRepository.php":2081568623,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":288537803,"src\/Database\/Repository\/AdminUserRepository.php":1417871142,"src\/Database\/Repository\/OrderStatusRepository.php":801135838,"src\/Database\/Repository\/PropertyRepository.php":981116305,"tests\/Feature\/LoginControllerTest.php":2993789982,"tests\/Feature\/ConfigurationControllerTest.php":2250951350,"tests\/Feature\/OrderStatusControllerTest.php":4239108055,"tests\/Feature\/CategoryControllerTest.php":1902637526,"tests\/Feature\/DashboardControllerTest.php":3484214895,"tests\/Feature\/AuthControllerTest.php":334195238,"tests\/Feature\/RoleControllerTest.php":3372848350,"tests\/Feature\/AdminUserControllerTest.php":3108252446,"tests\/Feature\/ProductControllerTest.php":3051194665,"tests\/Feature\/ConsoleTest.php":2528302105,"tests\/Feature\/PageControllerTest.php":1543191345,"tests\/Feature\/OrderControllerTest.php":1550645149,"tests\/TestCase.php":3086012143,"tests\/Functional\/ProductModelTest.php":52193424,"tests\/Functional\/RoleRepositoryTest.php":1037084085,"tests\/Functional\/BreadcrumbTest.php":2387292147,"tests\/Functional\/PermissionTest.php":724699872,"tests\/Functional\/AvoRedUserRepositoryTest.php":2975365267,"tests\/Functional\/BaseRepositoryTest.php":2606616677}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Order\/Events\/OrderProductCreated.php":902980050,"src\/Order\/Controllers\/OrderStatusController.php":4057285300,"src\/Order\/Controllers\/OrderController.php":3552000905,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1367006267,"src\/Database\/Repository\/PageRepository.php":2198718872,"src\/Database\/Repository\/SubscriberRepository.php":2081568623,"src\/Database\/Repository\/CustomerRepository.php":1326674603,"src\/Database\/Repository\/OrderProductRepository.php":2946868763,"src\/Database\/Repository\/CategoryRepository.php":1321759123,"src\/Database\/Repository\/ProductRepository.php":1985066379,"src\/Database\/Repository\/DocumentRepository.php":3566968401,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/PropertyRepository.php":981116305,"src\/Database\/Repository\/AttributeRepository.php":319881864,"src\/Database\/Repository\/OrderRepository.php":2007359767,"src\/Database\/Repository\/RoleRepository.php":5919928,"src\/Database\/Repository\/CartProductRepository.php":3120284469,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":288537803,"src\/Database\/Repository\/AdminUserRepository.php":1417871142,"src\/Database\/Repository\/ConfigurationRepository.php":416355350,"src\/Database\/Repository\/PermissionRepository.php":2119258321,"src\/Database\/Repository\/OrderStatusRepository.php":801135838,"src\/Database\/Repository\/AddressRepository.php":4248393077,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Contracts\/AddressModelInterface.php":3466750629,"src\/Database\/Contracts\/ProductModelInterface.php":833968823,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/CategoryModelInterface.php":599097405,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/PermissionModelInterface.php":2672896628,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/OrderModelInterface.php":1403694963,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/AttributeModelInterface.php":1940938768,"src\/Database\/Contracts\/BaseInterface.php":2976052884,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Models\/Category.php":754484997,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/Product.php":2993975445,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Role.php":1513439857,"src\/Database\/Models\/OauthClient.php":254473326,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/Customer.php":2263828288,"src\/Database\/Models\/Property.php":112018056,"src\/Database\/Models\/AdminUser.php":4240000469,"src\/Database\/Models\/CartProduct.php":3136654195,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/Subscriber.php":3670496531,"src\/Database\/Models\/Page.php":2763575681,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":3401229920,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/Payment\/PaymentManager.php":1326422825,"src\/Module\/ModuleProvider.php":3185570381,"src\/Module\/ModuleItem.php":4207189860,"src\/Module\/Module.php":3950494461,"src\/Module\/Manager.php":2920753741,"src\/Module\/Console\/ModuleInstallCommand.php":3023259964,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ControllerMakeCommand.php":2227255476,"src\/Catalog\/Requests\/AttributeRequest.php":301020724,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/PropertyRequest.php":4220770750,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Controllers\/AttributeController.php":3969430835,"src\/Catalog\/Controllers\/PropertyController.php":486848296,"src\/Catalog\/Controllers\/ProductController.php":3041624286,"src\/Catalog\/Controllers\/CategoryController.php":630434366,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":147030067,"src\/User\/Requests\/AdminUserRequest.php":3299517768,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/LoginController.php":1493493054,"src\/User\/Controllers\/ResetPasswordController.php":1551283443,"src\/User\/Controllers\/SubscriberController.php":1204762325,"src\/User\/Controllers\/StaffController.php":1673603622,"src\/User\/Notifications\/ResetPassword.php":281255553,"src\/User\/Notifications\/CustomerResetPassword.php":1854344558,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":255345964,"src\/Document\/DocumentProvider.php":1459771598,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/ShippingProvider.php":563008062,"src\/Shipping\/Manager.php":1350564326,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabProvider.php":534397509,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/Manager.php":3225115029,"src\/System\/Composers\/LayoutComposer.php":2864903115,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Form.php":3658375489,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":2263340862,"src\/System\/Components\/Table.php":185782146,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Controllers\/RoleController.php":1789155981,"src\/System\/Console\/InstallCommand.php":3547548013,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/Cms\/Requests\/PageRequest.php":54003558,"src\/Cms\/Controllers\/PageController.php":3452992235,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/AdminAuth.php":1545878319,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/ComponentsProvider.php":3337118250,"src\/Support\/Providers\/GraphqlProvider.php":1773456419,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Graphql\/Types\/CustomerType.php":1096119925,"src\/Graphql\/Types\/SubscriberType.php":1951512283,"src\/Graphql\/Types\/PaymentType.php":1483562530,"src\/Graphql\/Types\/ShippingType.php":3184156584,"src\/Graphql\/Types\/NotificationType.php":2991627422,"src\/Graphql\/Types\/CategoryType.php":1226251382,"src\/Graphql\/Types\/ProductType.php":3378852402,"src\/Graphql\/Types\/OptionType.php":654375420,"src\/Graphql\/Types\/CartProductType.php":1016487920,"src\/Graphql\/Types\/AddressType.php":3721841296,"src\/Graphql\/Types\/OrderType.php":2525955635,"src\/Graphql\/Traits\/AuthorizedTrait.php":4010113928,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":4258363677,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3528440643,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":151007228,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":2382448987,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":1496069681,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":1449040286,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":2979486623,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1121150924,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":1123422067,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":3974451978,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":1042937758,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":3077369203,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":1414822113,"src\/Graphql\/Queries\/OrderQuery.php":2014638185,"src\/Graphql\/Queries\/ShippingQuery.php":1215874193,"src\/Graphql\/Queries\/LatestProductQuery.php":3127789590,"src\/Graphql\/Queries\/ProductQuery.php":1278738294,"src\/Graphql\/Queries\/AllOrdersQuery.php":3568313876,"src\/Graphql\/Queries\/CountryOptionsQuery.php":4180943713,"src\/Graphql\/Queries\/CustomerQuery.php":4292589363,"src\/Graphql\/Queries\/CategoryQuery.php":2432529982,"src\/Graphql\/Queries\/AllAddressQuery.php":936472871,"src\/Graphql\/Queries\/CartItemsQuery.php":3072988608,"src\/Graphql\/Queries\/PaymentQuery.php":3777538806,"src\/Graphql\/Queries\/AllCategoryQuery.php":2435927149,"src\/Graphql\/Queries\/AddressQuery.php":3594963314,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuInterface.php":1575349914,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Cart\/CartManager.php":27883090,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartProduct.php":2682517421,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionItem.php":1216083955,"src\/Permission\/Permission.php":3394431707}} \ No newline at end of file diff --git a/build/logs/clover.xml b/build/logs/clover.xml index c019e1126..cf81515ee 100644 --- a/build/logs/clover.xml +++ b/build/logs/clover.xml @@ -1,6 +1,6 @@ - - + + @@ -867,13 +867,13 @@ - + - - - - - + + + + + @@ -996,27 +996,27 @@ - + - - + + - + - + - - + + - + @@ -1058,12 +1058,12 @@ - + - - + + @@ -1072,7 +1072,7 @@ - + @@ -1086,12 +1086,12 @@ - + - - - - + + + + @@ -1143,7 +1143,7 @@ - + @@ -1169,10 +1169,10 @@ - + - - + + @@ -1186,17 +1186,13 @@ - - - - - + @@ -1210,24 +1206,24 @@ - + - - + + - + - + - - + + @@ -1250,21 +1246,21 @@ - + - + - - + + - + @@ -1292,10 +1288,10 @@ - + - - + + @@ -1307,7 +1303,7 @@ - + @@ -1335,14 +1331,14 @@ - + - - - - + + + + @@ -1360,21 +1356,21 @@ - + - + - - + + - + - + @@ -1383,10 +1379,9 @@ - - + @@ -1443,15 +1438,14 @@ - + - - - - - - - + + + + + + @@ -1459,24 +1453,22 @@ - + - + - - + + - - - - - - - - + + + + + + @@ -1498,32 +1490,28 @@ - + - + - - - - + + + + - - - - - - - - - - - - - - + + + + + + + + + + @@ -1544,25 +1532,24 @@ - + - + - - - - - - - - - - - - - + + + + + + + + + + + + @@ -1578,238 +1565,208 @@ - + - + - - - - - - - - - + + + + + + + + - + - + - - - - - - - + + + + + + - + - + - - - - - - - - - + + + + + + + + - + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - + + + + + + - + - + - - - - - - - - - + + + + + + + + - + - + - - - - - - - + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -1832,191 +1789,185 @@ - + - + - - - - - - - + + + + + + - + - + - - - - - - + + + + + + - + - + - - - - - - + + + + + + - + - + - - - - - - + + + + + + - + - + - - - - - + + + + - + - + - - - - - - - - - - - - + + + + + + + + + + + - + - - + + - + - + - - - - - - - + + + + + + - + - + - - - - - - + + + + + + - + - + - - - - - - - + + + + + + - + - + - - - - + + + + - + - + - - - - - - - + + + + + + - + - + - - - - + + + + - + @@ -2028,10 +1979,9 @@ - + - @@ -2050,14 +2000,13 @@ - + - + - @@ -2065,24 +2014,23 @@ - + - + - - - - - - - - - - - - + + + + + + + + + + + @@ -2094,14 +2042,13 @@ - + - + - @@ -2115,38 +2062,35 @@ - + - + - - + - + - - + - + - @@ -2168,14 +2112,13 @@ - + - + - @@ -2185,14 +2128,13 @@ - + - + - @@ -2222,14 +2164,13 @@ - + - + - @@ -2239,21 +2180,20 @@ - + - + - - + @@ -3503,48 +3443,48 @@ - + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - - - - + + + + + + - - - - - - - - + + + + + + + + @@ -3783,23 +3723,23 @@ - + - - - + + + - + - - - + + + @@ -4056,6 +3996,6 @@ - + diff --git a/src/Database/Models/Product.php b/src/Database/Models/Product.php index 90063970a..22313f7c2 100644 --- a/src/Database/Models/Product.php +++ b/src/Database/Models/Product.php @@ -62,7 +62,7 @@ class Product extends BaseModel public function categories() { return $this->belongsToMany(Category::class) - ->using(new class() extends Pivot { + ->using(new class () extends Pivot { use UuidTrait; }) ->withTimestamps(); diff --git a/tests/Feature/CategoryControllerTest.php b/tests/Feature/CategoryControllerTest.php index 595493055..756597fed 100644 --- a/tests/Feature/CategoryControllerTest.php +++ b/tests/Feature/CategoryControllerTest.php @@ -83,4 +83,11 @@ public function test_graphql_query_all_categories() ->assertSuccessful() ->assertJsonFragment(['id' => $category->id]); } + public function test_graphql_query_category() + { + $category = Category::factory()->create(); + $this->query('category', ['slug' => $category->slug],['id']) + ->assertSuccessful() + ->assertJsonFragment(['id' => $category->id]); + } } From f5a8f7a5f1ca1612e1b5b2f0bfe64836ff154632 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sat, 21 May 2022 23:00:11 +0000 Subject: [PATCH 46/48] Fix styling --- .php-cs-fixer.cache | 2 +- src/Database/Models/Product.php | 2 +- tests/Feature/CategoryControllerTest.php | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index 4e6ceeeff..0d3391eab 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.1.6","version":"3.8.0:v3.8.0#cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Order\/Events\/OrderProductCreated.php":902980050,"src\/Order\/Controllers\/OrderStatusController.php":4057285300,"src\/Order\/Controllers\/OrderController.php":3552000905,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1367006267,"src\/Database\/Repository\/PageRepository.php":2198718872,"src\/Database\/Repository\/SubscriberRepository.php":2081568623,"src\/Database\/Repository\/CustomerRepository.php":1326674603,"src\/Database\/Repository\/OrderProductRepository.php":2946868763,"src\/Database\/Repository\/CategoryRepository.php":1321759123,"src\/Database\/Repository\/ProductRepository.php":1985066379,"src\/Database\/Repository\/DocumentRepository.php":3566968401,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/PropertyRepository.php":981116305,"src\/Database\/Repository\/AttributeRepository.php":319881864,"src\/Database\/Repository\/OrderRepository.php":2007359767,"src\/Database\/Repository\/RoleRepository.php":5919928,"src\/Database\/Repository\/CartProductRepository.php":3120284469,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":288537803,"src\/Database\/Repository\/AdminUserRepository.php":1417871142,"src\/Database\/Repository\/ConfigurationRepository.php":416355350,"src\/Database\/Repository\/PermissionRepository.php":2119258321,"src\/Database\/Repository\/OrderStatusRepository.php":801135838,"src\/Database\/Repository\/AddressRepository.php":4248393077,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Contracts\/AddressModelInterface.php":3466750629,"src\/Database\/Contracts\/ProductModelInterface.php":833968823,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/CategoryModelInterface.php":599097405,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/PermissionModelInterface.php":2672896628,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/OrderModelInterface.php":1403694963,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/AttributeModelInterface.php":1940938768,"src\/Database\/Contracts\/BaseInterface.php":2976052884,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Models\/Category.php":754484997,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/Product.php":2993975445,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Role.php":1513439857,"src\/Database\/Models\/OauthClient.php":254473326,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/Customer.php":2263828288,"src\/Database\/Models\/Property.php":112018056,"src\/Database\/Models\/AdminUser.php":4240000469,"src\/Database\/Models\/CartProduct.php":3136654195,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/Subscriber.php":3670496531,"src\/Database\/Models\/Page.php":2763575681,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/AvoRedServiceProvider.php":3401229920,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/Payment\/PaymentManager.php":1326422825,"src\/Module\/ModuleProvider.php":3185570381,"src\/Module\/ModuleItem.php":4207189860,"src\/Module\/Module.php":3950494461,"src\/Module\/Manager.php":2920753741,"src\/Module\/Console\/ModuleInstallCommand.php":3023259964,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ControllerMakeCommand.php":2227255476,"src\/Catalog\/Requests\/AttributeRequest.php":301020724,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/PropertyRequest.php":4220770750,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Controllers\/AttributeController.php":3969430835,"src\/Catalog\/Controllers\/PropertyController.php":486848296,"src\/Catalog\/Controllers\/ProductController.php":3041624286,"src\/Catalog\/Controllers\/CategoryController.php":630434366,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":147030067,"src\/User\/Requests\/AdminUserRequest.php":3299517768,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/LoginController.php":1493493054,"src\/User\/Controllers\/ResetPasswordController.php":1551283443,"src\/User\/Controllers\/SubscriberController.php":1204762325,"src\/User\/Controllers\/StaffController.php":1673603622,"src\/User\/Notifications\/ResetPassword.php":281255553,"src\/User\/Notifications\/CustomerResetPassword.php":1854344558,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":255345964,"src\/Document\/DocumentProvider.php":1459771598,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/ShippingProvider.php":563008062,"src\/Shipping\/Manager.php":1350564326,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabProvider.php":534397509,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/Manager.php":3225115029,"src\/System\/Composers\/LayoutComposer.php":2864903115,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Form.php":3658375489,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":2263340862,"src\/System\/Components\/Table.php":185782146,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Controllers\/RoleController.php":1789155981,"src\/System\/Console\/InstallCommand.php":3547548013,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/Cms\/Requests\/PageRequest.php":54003558,"src\/Cms\/Controllers\/PageController.php":3452992235,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/AdminAuth.php":1545878319,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/ComponentsProvider.php":3337118250,"src\/Support\/Providers\/GraphqlProvider.php":1773456419,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Graphql\/Types\/CustomerType.php":1096119925,"src\/Graphql\/Types\/SubscriberType.php":1951512283,"src\/Graphql\/Types\/PaymentType.php":1483562530,"src\/Graphql\/Types\/ShippingType.php":3184156584,"src\/Graphql\/Types\/NotificationType.php":2991627422,"src\/Graphql\/Types\/CategoryType.php":1226251382,"src\/Graphql\/Types\/ProductType.php":3378852402,"src\/Graphql\/Types\/OptionType.php":654375420,"src\/Graphql\/Types\/CartProductType.php":1016487920,"src\/Graphql\/Types\/AddressType.php":3721841296,"src\/Graphql\/Types\/OrderType.php":2525955635,"src\/Graphql\/Traits\/AuthorizedTrait.php":4010113928,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":4258363677,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3528440643,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":151007228,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":2382448987,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":1496069681,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":1449040286,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":2979486623,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1121150924,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":1123422067,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":3974451978,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":1042937758,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":3077369203,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":1414822113,"src\/Graphql\/Queries\/OrderQuery.php":2014638185,"src\/Graphql\/Queries\/ShippingQuery.php":1215874193,"src\/Graphql\/Queries\/LatestProductQuery.php":3127789590,"src\/Graphql\/Queries\/ProductQuery.php":1278738294,"src\/Graphql\/Queries\/AllOrdersQuery.php":3568313876,"src\/Graphql\/Queries\/CountryOptionsQuery.php":4180943713,"src\/Graphql\/Queries\/CustomerQuery.php":4292589363,"src\/Graphql\/Queries\/CategoryQuery.php":2432529982,"src\/Graphql\/Queries\/AllAddressQuery.php":936472871,"src\/Graphql\/Queries\/CartItemsQuery.php":3072988608,"src\/Graphql\/Queries\/PaymentQuery.php":3777538806,"src\/Graphql\/Queries\/AllCategoryQuery.php":2435927149,"src\/Graphql\/Queries\/AddressQuery.php":3594963314,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuInterface.php":1575349914,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Cart\/CartManager.php":27883090,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartProduct.php":2682517421,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionItem.php":1216083955,"src\/Permission\/Permission.php":3394431707}} \ No newline at end of file +{"php":"8.1.6","version":"3.8.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"class_attributes_separation":{"elements":{"method":"one"}},"single_trait_insert_per_statement":true},"hashes":{"src\/Payment\/PaymentManager.php":1326422825,"src\/Payment\/Payment.php":1529347661,"src\/Payment\/PaymentProvider.php":1068417739,"src\/System\/Components\/Table.php":185782146,"src\/System\/Components\/Link.php":4179080974,"src\/System\/Components\/Form\/Select2.php":2309202257,"src\/System\/Components\/Form\/Form.php":3658375489,"src\/System\/Components\/Form\/Input.php":2239413070,"src\/System\/Components\/Form\/Select.php":4125550340,"src\/System\/Components\/Form\/Checkbox.php":3270016791,"src\/System\/Components\/Form\/Upload.php":2410572916,"src\/System\/Components\/Form\/Easymde.php":1448977899,"src\/System\/Components\/Form\/Toggle.php":3061947624,"src\/System\/Components\/Table\/Cell.php":385358719,"src\/System\/Components\/Table\/Header.php":2263340862,"src\/System\/Components\/Table\/Row.php":2181233891,"src\/System\/Components\/Layout.php":1875381608,"src\/System\/Components\/Alert.php":4110277260,"src\/System\/Console\/InstallCommand.php":3547548013,"src\/System\/Console\/AdminMakeCommand.php":1529634204,"src\/System\/Controllers\/RoleController.php":1789155981,"src\/System\/Controllers\/ConfigurationController.php":2838621932,"src\/System\/Controllers\/DashboardController.php":3609670600,"src\/System\/Composers\/LayoutComposer.php":2864903115,"src\/System\/Requests\/RoleRequest.php":3009791079,"src\/Menu\/MenuItem.php":1806245595,"src\/Menu\/Menu.php":495953104,"src\/Menu\/MenuProvider.php":406559835,"src\/Menu\/MenuBuilder.php":2584494099,"src\/Menu\/MenuInterface.php":1575349914,"src\/Support\/Middleware\/RedirectIfAdminAuth.php":2531055974,"src\/Support\/Middleware\/Permission.php":2653669855,"src\/Support\/Middleware\/AdminAuth.php":1545878319,"src\/Support\/Providers\/ModelsProvider.php":4003304298,"src\/Support\/Providers\/ComponentsProvider.php":3337118250,"src\/Support\/Providers\/EventsProvider.php":1146207737,"src\/Support\/Providers\/GraphqlProvider.php":1773456419,"src\/Shipping\/ShippingProvider.php":563008062,"src\/Shipping\/Shipping.php":3203311749,"src\/Shipping\/Manager.php":1350564326,"src\/Cart\/Cart.php":3288152125,"src\/Cart\/CartProvider.php":2128058229,"src\/Cart\/CartManager.php":27883090,"src\/Cart\/CartProduct.php":2682517421,"src\/User\/Actions\/CreateRoleAction.php":4183928303,"src\/User\/Actions\/AuthAdminUserAction.php":1025793462,"src\/User\/Actions\/CreateAdminUserAction.php":1102352115,"src\/User\/Controllers\/SubscriberController.php":1204762325,"src\/User\/Controllers\/StaffController.php":1673603622,"src\/User\/Controllers\/ForgotPasswordController.php":197210272,"src\/User\/Controllers\/ResetPasswordController.php":1551283443,"src\/User\/Controllers\/LoginController.php":1493493054,"src\/User\/Notifications\/CustomerResetPassword.php":1854344558,"src\/User\/Notifications\/ResetPassword.php":281255553,"src\/User\/Requests\/ForgotPasswordRequest.php":3316239885,"src\/User\/Requests\/AdminUserRequest.php":3299517768,"src\/User\/Requests\/SubscriberRequest.php":3010658242,"src\/User\/Requests\/ResetAdminUserRequest.php":2845110442,"src\/User\/Requests\/AdminLoginRequest.php":147030067,"src\/Permission\/PermissionItem.php":1216083955,"src\/Permission\/PermissionProvider.php":4127526854,"src\/Permission\/PermissionGroup.php":496883635,"src\/Permission\/Permission.php":3394431707,"src\/Permission\/PermissionInterface.php":3796992659,"src\/Permission\/Manager.php":156575295,"src\/Order\/Events\/OrderProductCreated.php":902980050,"src\/Order\/Controllers\/OrderStatusController.php":4057285300,"src\/Order\/Controllers\/OrderController.php":3552000905,"src\/Order\/Listeners\/OrderProductCreatedListener.php":1367006267,"src\/Order\/Requests\/OrderStatusRequest.php":1639796169,"src\/Catalog\/Controllers\/ProductController.php":3041624286,"src\/Catalog\/Controllers\/PropertyController.php":486848296,"src\/Catalog\/Controllers\/AttributeController.php":3969430835,"src\/Catalog\/Controllers\/CategoryController.php":630434366,"src\/Catalog\/Requests\/AttributeRequest.php":301020724,"src\/Catalog\/Requests\/ProductRequest.php":612267487,"src\/Catalog\/Requests\/CategoryRequest.php":1859911557,"src\/Catalog\/Requests\/PropertyRequest.php":4220770750,"src\/AvoRedServiceProvider.php":3401229920,"src\/Cms\/Controllers\/PageController.php":3452992235,"src\/Cms\/Requests\/PageRequest.php":54003558,"src\/Tab\/Tab.php":1921615140,"src\/Tab\/TabItem.php":1331100550,"src\/Tab\/TabProvider.php":534397509,"src\/Tab\/Manager.php":3225115029,"src\/Graphql\/Mutations\/Cart\/UpdateCartMutation.php":1449040286,"src\/Graphql\/Mutations\/Cart\/AddToCartMutation.php":1496069681,"src\/Graphql\/Mutations\/Cart\/DeleteCartMutation.php":2979486623,"src\/Graphql\/Mutations\/PlaceOrderMutation.php":1414822113,"src\/Graphql\/Mutations\/Customer\/CreateAddressMutation.php":1123422067,"src\/Graphql\/Mutations\/Customer\/UpdateAddressMutation.php":3077369203,"src\/Graphql\/Mutations\/Customer\/CreateSubscriberMutation.php":1042937758,"src\/Graphql\/Mutations\/Customer\/DeleteAddressMutation.php":3974451978,"src\/Graphql\/Mutations\/Customer\/CustomerUpdateMutation.php":1121150924,"src\/Graphql\/Mutations\/Auth\/LoginMutation.php":3528440643,"src\/Graphql\/Mutations\/Auth\/ResetPasswordMutation.php":151007228,"src\/Graphql\/Mutations\/Auth\/RegisterMutation.php":2382448987,"src\/Graphql\/Mutations\/Auth\/ForgotPasswordMutation.php":4258363677,"src\/Graphql\/Traits\/AuthorizedTrait.php":4010113928,"src\/Graphql\/Types\/CategoryType.php":1226251382,"src\/Graphql\/Types\/NotificationType.php":2991627422,"src\/Graphql\/Types\/CustomerType.php":1096119925,"src\/Graphql\/Types\/CartProductType.php":1016487920,"src\/Graphql\/Types\/PaymentType.php":1483562530,"src\/Graphql\/Types\/OptionType.php":654375420,"src\/Graphql\/Types\/OrderType.php":2525955635,"src\/Graphql\/Types\/ShippingType.php":3184156584,"src\/Graphql\/Types\/ProductType.php":3378852402,"src\/Graphql\/Types\/SubscriberType.php":1951512283,"src\/Graphql\/Types\/AddressType.php":3721841296,"src\/Graphql\/Queries\/AddressQuery.php":3594963314,"src\/Graphql\/Queries\/AllOrdersQuery.php":3568313876,"src\/Graphql\/Queries\/CustomerQuery.php":4292589363,"src\/Graphql\/Queries\/ShippingQuery.php":1215874193,"src\/Graphql\/Queries\/LatestProductQuery.php":3127789590,"src\/Graphql\/Queries\/CategoryQuery.php":2432529982,"src\/Graphql\/Queries\/CountryOptionsQuery.php":4180943713,"src\/Graphql\/Queries\/CartItemsQuery.php":3072988608,"src\/Graphql\/Queries\/AllAddressQuery.php":936472871,"src\/Graphql\/Queries\/AllCategoryQuery.php":2435927149,"src\/Graphql\/Queries\/OrderQuery.php":2014638185,"src\/Graphql\/Queries\/PaymentQuery.php":3777538806,"src\/Graphql\/Queries\/ProductQuery.php":1278738294,"src\/Document\/DocumentProvider.php":1459771598,"src\/Document\/Document.php":830110374,"src\/Document\/Manager.php":255345964,"src\/Breadcrumb\/Breadcrumb.php":1484499975,"src\/Breadcrumb\/BreadcrumbProvider.php":3657862147,"src\/Breadcrumb\/Builder.php":2219395438,"src\/Breadcrumb\/BreadcrumbInterface.php":4199482433,"src\/Breadcrumb\/BreadcrumbItem.php":2554627073,"src\/Module\/Module.php":3950494461,"src\/Module\/Console\/ModuleInstallCommand.php":3023259964,"src\/Module\/Console\/ControllerMakeCommand.php":2227255476,"src\/Module\/Console\/Provider.php":1451070439,"src\/Module\/Console\/ModuleMakeCommand.php":79405280,"src\/Module\/ModuleItem.php":4207189860,"src\/Module\/ModuleProvider.php":3185570381,"src\/Module\/Manager.php":2920753741,"src\/Database\/Models\/PropertyDropdownOption.php":4122685923,"src\/Database\/Models\/AttributeDropdownOption.php":4093079906,"src\/Database\/Models\/OrderProduct.php":3250814351,"src\/Database\/Models\/BaseModel.php":3241793692,"src\/Database\/Models\/Product.php":1273764797,"src\/Database\/Models\/Subscriber.php":3670496531,"src\/Database\/Models\/OrderStatus.php":2199074735,"src\/Database\/Models\/Attribute.php":2709222375,"src\/Database\/Models\/CartProduct.php":3136654195,"src\/Database\/Models\/Address.php":244748268,"src\/Database\/Models\/Customer.php":2263828288,"src\/Database\/Models\/Permission.php":2288700704,"src\/Database\/Models\/Page.php":2763575681,"src\/Database\/Models\/OauthClient.php":254473326,"src\/Database\/Models\/Configuration.php":1032093863,"src\/Database\/Models\/Document.php":1273457813,"src\/Database\/Models\/Role.php":1513439857,"src\/Database\/Models\/Country.php":1071978623,"src\/Database\/Models\/Property.php":112018056,"src\/Database\/Models\/Category.php":754484997,"src\/Database\/Models\/AdminUser.php":4240000469,"src\/Database\/Models\/Order.php":1813292137,"src\/Database\/Traits\/FilterTrait.php":3697095184,"src\/Database\/Traits\/UuidTrait.php":317966662,"src\/Database\/Contracts\/PermissionModelInterface.php":2672896628,"src\/Database\/Contracts\/OrderProductModelInterface.php":1864334832,"src\/Database\/Contracts\/CategoryModelInterface.php":599097405,"src\/Database\/Contracts\/AdminUserModelInterface.php":498584778,"src\/Database\/Contracts\/BaseInterface.php":2976052884,"src\/Database\/Contracts\/RoleModelInterface.php":132030041,"src\/Database\/Contracts\/OrderStatusModelInterface.php":845614767,"src\/Database\/Contracts\/SubscriberModelInterface.php":1334541040,"src\/Database\/Contracts\/AddressModelInterface.php":3466750629,"src\/Database\/Contracts\/DocumentModelInterface.php":2946760917,"src\/Database\/Contracts\/ProductModelInterface.php":833968823,"src\/Database\/Contracts\/AttributeDropdownOptionModelInterface.php":357812804,"src\/Database\/Contracts\/AttributeModelInterface.php":1940938768,"src\/Database\/Contracts\/CustomerModelInterface.php":2884178870,"src\/Database\/Contracts\/CartProductModelInterface.php":3300812932,"src\/Database\/Contracts\/ConfigurationModelInterface.php":206020749,"src\/Database\/Contracts\/PropertyModelInterface.php":444001306,"src\/Database\/Contracts\/PageModelInterface.php":928420470,"src\/Database\/Contracts\/OrderModelInterface.php":1403694963,"src\/Database\/Repository\/CustomerRepository.php":1326674603,"src\/Database\/Repository\/CategoryRepository.php":1321759123,"src\/Database\/Repository\/BaseRepository.php":4066673631,"src\/Database\/Repository\/ConfigurationRepository.php":416355350,"src\/Database\/Repository\/PermissionRepository.php":2119258321,"src\/Database\/Repository\/PageRepository.php":2198718872,"src\/Database\/Repository\/AddressRepository.php":4248393077,"src\/Database\/Repository\/CartProductRepository.php":3120284469,"src\/Database\/Repository\/ProductRepository.php":1985066379,"src\/Database\/Repository\/OrderRepository.php":2007359767,"src\/Database\/Repository\/OrderProductRepository.php":2946868763,"src\/Database\/Repository\/AttributeRepository.php":319881864,"src\/Database\/Repository\/RoleRepository.php":5919928,"src\/Database\/Repository\/DocumentRepository.php":3566968401,"src\/Database\/Repository\/SubscriberRepository.php":2081568623,"src\/Database\/Repository\/AttributeDropdownOptionRepository.php":288537803,"src\/Database\/Repository\/AdminUserRepository.php":1417871142,"src\/Database\/Repository\/OrderStatusRepository.php":801135838,"src\/Database\/Repository\/PropertyRepository.php":981116305,"tests\/Feature\/LoginControllerTest.php":2993789982,"tests\/Feature\/ConfigurationControllerTest.php":2250951350,"tests\/Feature\/OrderStatusControllerTest.php":4239108055,"tests\/Feature\/CategoryControllerTest.php":1320169017,"tests\/Feature\/DashboardControllerTest.php":3484214895,"tests\/Feature\/AuthControllerTest.php":334195238,"tests\/Feature\/RoleControllerTest.php":3372848350,"tests\/Feature\/AdminUserControllerTest.php":3108252446,"tests\/Feature\/ProductControllerTest.php":3051194665,"tests\/Feature\/ConsoleTest.php":2528302105,"tests\/Feature\/PageControllerTest.php":1543191345,"tests\/Feature\/OrderControllerTest.php":1550645149,"tests\/TestCase.php":3086012143,"tests\/Functional\/ProductModelTest.php":52193424,"tests\/Functional\/RoleRepositoryTest.php":1037084085,"tests\/Functional\/BreadcrumbTest.php":2387292147,"tests\/Functional\/PermissionTest.php":724699872,"tests\/Functional\/AvoRedUserRepositoryTest.php":2975365267,"tests\/Functional\/BaseRepositoryTest.php":2606616677}} \ No newline at end of file diff --git a/src/Database/Models/Product.php b/src/Database/Models/Product.php index 22313f7c2..90063970a 100644 --- a/src/Database/Models/Product.php +++ b/src/Database/Models/Product.php @@ -62,7 +62,7 @@ class Product extends BaseModel public function categories() { return $this->belongsToMany(Category::class) - ->using(new class () extends Pivot { + ->using(new class() extends Pivot { use UuidTrait; }) ->withTimestamps(); diff --git a/tests/Feature/CategoryControllerTest.php b/tests/Feature/CategoryControllerTest.php index 756597fed..dba1dd662 100644 --- a/tests/Feature/CategoryControllerTest.php +++ b/tests/Feature/CategoryControllerTest.php @@ -83,10 +83,11 @@ public function test_graphql_query_all_categories() ->assertSuccessful() ->assertJsonFragment(['id' => $category->id]); } + public function test_graphql_query_category() { $category = Category::factory()->create(); - $this->query('category', ['slug' => $category->slug],['id']) + $this->query('category', ['slug' => $category->slug], ['id']) ->assertSuccessful() ->assertJsonFragment(['id' => $category->id]); } From 9a2e5e93f7970c478199c325b03d4131461ff4f5 Mon Sep 17 00:00:00 2001 From: indpurvesh Date: Sun, 22 May 2022 20:32:43 +1200 Subject: [PATCH 47/48] wip --- composer.json | 7 +- composer.lock | 75 ++++++++++++++++++- resources/lang/en/system.php | 3 +- .../catalog/product/cards/images.blade.php | 8 ++ .../views/catalog/product/edit.blade.php | 8 +- .../catalog/product/livewire/images.blade.php | 24 ++++++ .../system/components/form/upload.blade.php | 25 +++++-- .../system/components/layouts/app.blade.php | 3 +- resources/views/user/staff/create.blade.php | 2 +- src/Catalog/Controllers/ProductController.php | 8 ++ src/Database/Models/Product.php | 2 +- src/Document/Manager.php | 2 +- src/Support/Providers/ComponentsProvider.php | 21 +----- .../Components/Livewire/ProductImage.php | 25 +++++++ src/Tab/TabProvider.php | 10 +-- 15 files changed, 178 insertions(+), 45 deletions(-) create mode 100644 resources/views/catalog/product/cards/images.blade.php create mode 100644 resources/views/catalog/product/livewire/images.blade.php create mode 100644 src/System/Components/Livewire/ProductImage.php diff --git a/composer.json b/composer.json index 3c357c2ce..60ec3deee 100644 --- a/composer.json +++ b/composer.json @@ -20,14 +20,15 @@ "illuminate/auth": "^8.2|^9.0", "illuminate/contracts": "^8.2|^9.0", "illuminate/database": "^8.2|^9.0", - "illuminate/routing": "^8.2|^9.0", "illuminate/http": "^8.2|^9.0", + "illuminate/routing": "^8.2|^9.0", "illuminate/support": "^8.2|^9.0", "illuminate/view": "^8.2|^9.0", + "laravel/passport": "^10.1|^10.2|^10.3", + "livewire/livewire": "^2.10", + "nyholm/psr7": "^1.4", "ramsey/uuid": "^4.2", "rebing/graphql-laravel": "^8.2", - "nyholm/psr7": "^1.4", - "laravel/passport": "^10.1|^10.2|^10.3", "symfony/yaml": "^5.3|^6.0" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 82cfcd002..65b8edcda 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ea4f178dc9289cba5680c70c294a4cc0", + "content-hash": "a4960fb0e9fa3324969b08ec852dc2ed", "packages": [ { "name": "brick/math", @@ -1849,6 +1849,79 @@ ], "time": "2021-06-28T04:27:21+00:00" }, + { + "name": "livewire/livewire", + "version": "v2.10.5", + "source": { + "type": "git", + "url": "https://github.com/livewire/livewire.git", + "reference": "9ea6237760f627b3b6a05d15137880780ac843b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/livewire/livewire/zipball/9ea6237760f627b3b6a05d15137880780ac843b5", + "reference": "9ea6237760f627b3b6a05d15137880780ac843b5", + "shasum": "" + }, + "require": { + "illuminate/database": "^7.0|^8.0|^9.0", + "illuminate/support": "^7.0|^8.0|^9.0", + "illuminate/validation": "^7.0|^8.0|^9.0", + "league/mime-type-detection": "^1.9", + "php": "^7.2.5|^8.0", + "symfony/http-kernel": "^5.0|^6.0" + }, + "require-dev": { + "calebporzio/sushi": "^2.1", + "laravel/framework": "^7.0|^8.0|^9.0", + "mockery/mockery": "^1.3.1", + "orchestra/testbench": "^5.0|^6.0|^7.0", + "orchestra/testbench-dusk": "^5.2|^6.0|^7.0", + "phpunit/phpunit": "^8.4|^9.0", + "psy/psysh": "@stable" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Livewire\\LivewireServiceProvider" + ], + "aliases": { + "Livewire": "Livewire\\Livewire" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Livewire\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Caleb Porzio", + "email": "calebporzio@gmail.com" + } + ], + "description": "A front-end framework for Laravel.", + "support": { + "issues": "https://github.com/livewire/livewire/issues", + "source": "https://github.com/livewire/livewire/tree/v2.10.5" + }, + "funding": [ + { + "url": "https://github.com/livewire", + "type": "github" + } + ], + "time": "2022-04-07T21:38:12+00:00" + }, { "name": "monolog/monolog", "version": "2.6.0", diff --git a/resources/lang/en/system.php b/resources/lang/en/system.php index a76714452..3f7cd035e 100644 --- a/resources/lang/en/system.php +++ b/resources/lang/en/system.php @@ -103,5 +103,6 @@ 'enabled' => 'Enabled', 'disabled' => 'Disabled', 'customer_reset_password_link' => 'Customer Reset Password Link', - 'success_sent_password_reset_email_message' => 'Successfully Password Reset Email has been sent to customer' + 'success_sent_password_reset_email_message' => 'Successfully Password Reset Email has been sent to customer', + 'images' => 'Images' ]; diff --git a/resources/views/catalog/product/cards/images.blade.php b/resources/views/catalog/product/cards/images.blade.php new file mode 100644 index 000000000..4154ee03a --- /dev/null +++ b/resources/views/catalog/product/cards/images.blade.php @@ -0,0 +1,8 @@ +
+ +
diff --git a/resources/views/catalog/product/edit.blade.php b/resources/views/catalog/product/edit.blade.php index 59cd5fbbc..304fafbe9 100644 --- a/resources/views/catalog/product/edit.blade.php +++ b/resources/views/catalog/product/edit.blade.php @@ -9,17 +9,15 @@
- + @foreach ($tabs as $tab) -
+
{{ $tab->label() }} - - - +
diff --git a/resources/views/catalog/product/livewire/images.blade.php b/resources/views/catalog/product/livewire/images.blade.php new file mode 100644 index 000000000..04333b1ff --- /dev/null +++ b/resources/views/catalog/product/livewire/images.blade.php @@ -0,0 +1,24 @@ +
+ + + + + @error('images') +
+ {{ $message }} +
+ @enderror + + + +
diff --git a/resources/views/system/components/form/upload.blade.php b/resources/views/system/components/form/upload.blade.php index 47864d260..cc741fa01 100644 --- a/resources/views/system/components/form/upload.blade.php +++ b/resources/views/system/components/form/upload.blade.php @@ -1,4 +1,4 @@ -
+
@yield('meta_title', 'AvoRed E commerce') - + @livewireStyles @@ -24,6 +24,7 @@ {{ $slot }}
+ @livewireScripts @stack('scripts')
+
+
+
+ + AvoRed Ecommerce + +

+ {{ __('avored::system.login_to_avored_admin') }} +

+

+

+
+ + +
+ +
+ +
+ +
+ +
+
+ + +
+ + +
+ +
+ +
+
+
+
+